您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么理解web開發中的分布式事務”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解web開發中的分布式事務”吧!
cap
C:一致性被稱為原子對象,任何的讀寫都應該看起來是“原子”,或串行的。寫后面的讀一定能讀到前面寫的內容,所有的讀寫請求都好像被全局排序。
A:對任何非失敗節點都應該在有限時間內給出請求的回應。(請求的可終止性)
P:允許節點之間丟失任意多的消息,當網絡分區發生時,節點之間的消息可能會完全丟失
個人理解:
對于C,就是保證在一個時間點各個節點的狀態是一致的,而A是在用戶的視角看來各個節點都是正常的,P就是在節點看開各個節點都是正常連接
但在分布式環境中,多實例部署是基本條件,因為網絡的不可靠性,造成了P成了硬性條件,所以分布式系統基本都是cp和ap的
base
基本可用(Basically Available)
軟狀態(Soft State)
最終一致性(Eventually Consistent)
個人理解:
base理論落地基本都是ap的系統,分布式事務和業務有著強耦合的關系,因為基本上業務層面要維持一個中間狀態好讓事務可以有回滾余地而不破壞數據
其次因為有中間狀態所以在事務的過程中基本都是最終一致
xa
如圖基本分以下三種角色
AP 應用程序
RM 資源管理器
TM 事務管理器
個人理解:
基本各個資源管理器要實現各自的資源管理接口
應用程序向資源管理器申請資源,然后對資源的修改不是直接通知資源管理器,而是預先準備好,然后由三方的事務管理器統一進行修改
使用該協議的系統基本都是cp類型的系統
2pc/3pc
2pc:
個人理解:
在prepare階段對事務執行完畢剩下事務提交,只要一處執行出問題就觸發事務回滾
在提交階段由于網絡問題可能會有不一致的問題
各個事務之間相互依賴成功,鎖定資源的時間過長(阻塞時間過長)
對于事務協調器有超時重新選舉,但是各個服務沒有超時機制
3pc:
個人理解:
在2pc之上增加了一層,個人理解這一層是為了輔助超時階段,因為在preCommit階段事務已經就剩下提交其他服務也都確認成功,最后每個服務都會啟動一個超時計劃,到時直接提交而不是等待協調器來docommit, 而docommit就是提交命令,但是各個服務可能因為網絡無法接收所以有個超時機制,也就是為了彌補2pc中的阻塞過長和服務端沒有超時機制
tcc
個人理解:
tcc本質就是base中的業務提供一種中間態,通過準備提交和回滾來完成整體事務
整體增加了事務管理器來自動化的進行管理事務的進程,比如宕機后事務管理器會定時的去執行日志記錄中事務的進程保證最終一致性
一般分布式事務都會傳遞全局事務id來標識事務和解決冪等性
sega
個人理解sega很像2pc但是sega的事務都是自己提交自己的,對于集中式出問題由主業務進行回滾或者重試,對于分布式而是遞歸的形式進行回滾
上述的幾個問題
整體上我這樣理解,sega是最終一致性的,但是又不會有base的中間狀態,所以會有隔離性的問題,容易出現幻讀重復度,讀更改等各種問題,對于解決方案一般都是sega對應的框架自行提供全局讀寫鎖來進行提供隔離性
對于sagas框架來看,他實現了事務協調器來簡化事務的回滾和重試,實現了一套自行生成回滾sql的機制來進行
對于sagas還有很多設計,目前個人沒有時間研究后續研究透了會重寫相關sagas的問題(對于sagas歷史好像最開始是阿里收費項目gks,當時看人反匯編代碼說實現可能是自動生成回滾代碼的tcc,現在看來是saga的模式加全局鎖)
sega2種回滾方案
backward recovery,向后恢復,補償所有已完成的事務,如果任一子事務失敗。即上面提到的第二種執行順序,其中j是發生錯誤的sub-transaction,這種做法的效果是撤銷掉之前所有成功的sub-transation,使得整個Saga的執行結果撤銷。
forward recovery,向前恢復,重試失敗的事務,假設每個子事務最終都會成功。適用于必須要成功的場景,執行順序是類似于這樣的:T1, T2, ..., Tj(失敗), Tj(重試),..., Tn,其中j是發生錯誤的sub-transaction。該情況下不需要Ci
集中式
分布式
消息事務/本地消息事務
感謝各位的閱讀,以上就是“怎么理解web開發中的分布式事務”的內容了,經過本文的學習后,相信大家對怎么理解web開發中的分布式事務這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。