最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

分布式事務原理及使用范例一則

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 14:31:52
文檔

分布式事務原理及使用范例一則

分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300
推薦度:
導讀分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300

摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+3000 where name=b 場景: 假設在第1

摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。

假設案例:A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name='a' update account set Amount=Amount+3000 where name='b' 場景:假設在第1行代碼執(zhí)行成功,第2行代碼還未執(zhí)行的情況下。未繼續(xù)執(zhí)行。 結(jié)果:A的錢沒了!B沒收到錢!

此時推薦使用分布式事務來解決這類問題。

解決方案 應該實現(xiàn)原子性:要么全部成功、要么全部失?。ɑ貪L)
事務: 事務(Transaction)的特征是“原子性”,也就是“要么全部成功,要么全部失敗”。事務實現(xiàn)還是有很多方法,最常見的就是使用鏈接相關SqlTransaction SqlTransaction 優(yōu)點:1 不需要做客戶端、服務器端的配置;2 無須啟用事務協(xié)調(diào)服務(MSDTC) 缺點:無法實現(xiàn)分布式事務、嵌套事務、編寫麻煩。
TransactionScope用來實現(xiàn)分布式事務(可以跨數(shù)據(jù)庫、跨機器操作)的步驟 1 Windows服務中開啟MSDTC(Distributed Transaction Coordinator),并且啟動類型改為“自動”。注意:需要在ADO.NET端和數(shù)據(jù)庫端上需要都進行相同操作。 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'"http://向B賬戶增加錢的操作
 ts.Complete();//忘記這句話,兩個都插入失敗
}

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

分布式事務原理及使用范例一則

分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300
推薦度:
標簽: 使用 原理 范例
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top