一、提交代碼寫到一起
例如:
文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
C# code文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
?文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
1文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
2文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
3文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
4文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
5文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
6文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
7文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
8文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
9文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
10文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
using(varconn1=reateConnection(str1))文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
using(varconn2=CreateConnetion(str2))文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
using(varconn3=CreateConnetion(str3))文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
{文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
..............................文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
..............................文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
conn1.Commit();文章源自網吧系統(tǒng)維護-http://www.hvig.cn/3999.html
conn2.Commit();
conn3.Commit();
}
這樣Commit階段都是簡單地信號,之前都已經更改了數(shù)據(jù)庫事務日志數(shù)據(jù),只是還沒有提交而已,同時失敗的可能性會比較小。這種方案不是正規(guī)解決方案,只是說失敗的可能性減小了。
二:設計“自動撤回、沖銷”流程,并且為每一個分事務動做都寫一個額外的“確認”步驟。
當執(zhí)行確認時,校驗當前進程隨機會話編號,如果事務發(fā)生會話的編號跟確認會話編號一致則記錄確認成功,如果不一致(例如進程失敗而重啟了)則執(zhí)行沖銷流程。
這種方案是正規(guī)的“最終一致性”解決方案。最終一致性是業(yè)務方案,業(yè)務就是這么明確的——任何業(yè)務都需要異步確認一遍,確認時判斷當前進程會話編號跟業(yè)務發(fā)生時的進程會話編號是否一致。
在比較現(xiàn)代的高性能系統(tǒng)中,實際上講究的通常是“最終一致性”而不是純技術的一致性。所以糾結數(shù)據(jù)庫事務保護,可以看作是性能殺手,是不了解大數(shù)據(jù)平臺編程設計的,流程設計傾向于高并發(fā)電信級處理理念,跟那種入門者喜好“數(shù)據(jù)庫事務技術”是根本相反的算法選擇??!所以在程序上是負載均衡、真正分布式的。干某件事情的進程負責異步地確認任務,否則假設進程失敗了、或者事務超時了(例如5秒鐘還沒有完成事務),不得不由其它進程事后處理,就開啟業(yè)務數(shù)據(jù)沖銷動做了。
評論