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

來源:互聯網
上載者: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();//忘記這句話,兩個都插入失敗}



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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.