分散式交易 原理及使用範例一則,事務範例

來源:互聯網
上載者:User

分散式交易 原理及使用範例一則,事務範例

摘要:在軟體開發和資料庫操作中,經常出現需要共同進退的情況,要麼一起成功,要麼一起失敗。

假設案例: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)的特徵是“原子性”,也就是“要麼全部成功,要麼全部失敗”。事務實現還是有很多方法,最常見的就是使用連結相關SqlTransactionSqlTransaction優點: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
 
分散式交易管理

分布式是指在兩個或多個軟體互相共用資訊,這些軟體既可在同一個電腦上運行,也可在網路上多台電腦運行,優點:稀有資源可共用通過分散式運算可以在多台電腦上平衡計算負荷.可以把程式防在最適合運行它的電腦上,其中共用稀有資源和平衡負載是分布式核心思想!
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.