欢迎投稿

今日深度:

分布式事务 原理及使用范例一则,事务范例

分布式事务 原理及使用范例一则,事务范例


摘要:在软件开发和数据库操作中,经常出现需要共同进退的情况,要么一起成功,要么一起失败。

假设案例:A向B转账3000元rmb。 update Account set Amount=Amount-3000 where name='a' update account set Amount=Amount+3000 where name='b' 场景:假设在第1行代码执行成功,第2行代码还未执行的情况下。未继续执行。 结果:A的钱没了!B没收到钱!

此时推荐使用分布式事务来解决这类问题。


解决方案 应该实现原子性:要么全部成功、要么全部失败(回滚)
事务: 事务(Transaction)的特征是“原子性”,也就是“要么全部成功,要么全部失败”。事务实现还是有很多方法,最常见的就是使用链接相关SqlTransaction SqlTransaction 优点:1 不需要做客户端、服务器端的配置;2 无须启用事务协调服务(MSDTC) 缺点:无法实现分布式事务、嵌套事务、编写麻烦。
TransactionScope用来实现分布式事务(可以跨数据库、跨机器操作)的步骤 1 Windows服务中开启MSDTC(Distributed Transaction Coordinator),并且启动类型改为“自动”。注意:需要在ADO.NET端和数据库端上需要都进行相同操作。 2 项目添加对System.Transactions的引用 代码范例:
//包起来就会两者一起。一起成功,或者一起失败
using(TransactionScope ts=new TransactionScope())
{
    "update Account set Amount=Amount-3000 where name='a'";//从A账户扣钱的操作
    "update account set Amount=Amount+3000 where name='b'"//向B账户增加钱的操作
    ts.Complete();//忘记这句话,两个都插入失败
}




怎实现分布式事务管理

1. 实现分布式事务管理 JTA(Java Transaction Architecture), 通常JTA的支持是由J2EE容器提供的(WAS,Weblogic...),也有单独实现JTA的第3方jar.
2. 分布式事务是指操作多个数据库之间的事务,在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Transaction Manager )和AtomikosTransactionsEssentials实现,在spring中分布式事务是通过jta(jotm,atomikos)来进行实现
3.参考下
hi.baidu.com/...c.html
 

分布式事务管理

分布式是指在两个或多个软件互相共享信息,这些软件既可在同一个计算机上运行,也可在网络上多台计算机运行,优点:稀有资源可共享通过分布式计算可以在多台计算机上平衡计算负荷.可以把程序防在最适合运行它的计算机上,其中共享稀有资源和平衡负载是分布式核心思想!
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/4397.html NewsArticle 分布式事务 原理及使用范例一则,事务范例 摘要:在软件开发和数据库操作中,经常出现需要共同进退的情况,要么一起成功,要么一起失败。 假设案例: A向B转账3000元rmb。 update...
评论暂时关闭