在單個資料庫例項時候,我們可以在乙個資料來源的事務(本地事務)內做多步資料庫操作,在事務內的多個操作要麼全部執行生效,要麼全部不生效。在多資料例項節點時候,我們對多個例項的資料來源進行操作時候就沒辦法把多個操作放到乙個大的事務內來管理了,因為多個例項操作的是不同的資料來源,而資料庫自帶的事務是針對單個資料來源來說的。
單個資料庫例項內的事務我們稱為本地事務,需要保證多個資料來源的操作要麼都做要麼都不做的事務我們成為分布式事務,為了實現分布式事務,二階段與三階段協議就應運而生了。
分布式事務由事務發起者、資源管理器(參與者)、事務協調者組成,下面我們看看二階段協議內容:
如果協調器發現有些參與者返回事務提交失敗,則執行具體的事務補償策略。
二階段協議是個標準協議,協議只是規定了分布式事務實現的骨架,並沒有規定具體如何實現,比如事務協調器是作為乙個單獨應用存在,還是與事務發起方一起部署的?事務參與者是單獨的應用還是與發起方一起的?並且並沒有考慮異常情況,比如第二階段如果有部分參與者返回提交失敗或者由於網路原因返回了提交ok,但是事務協調器沒有收到,該怎麼處理?
另外分布式事務並不是簡單說對多個資料來源操作的原子性,還可以是資料來源操作與遠端rpc的原子性,資料來源與傳送訊息的原子性。
下文我們來談談2階段的缺點以及三階段協議的原理。
更多關於分布式系統中服務降級策略的知識可以單擊 單擊我
想系統學dubbo的單擊我
想學併發的童鞋可以 單擊我
分布式 二階段協議
單個資料庫內部的事務,我們稱為本地事務,需要保證多個資料來源的操作要麼都做要麼都不做的事務,我們稱為分布式事務 分布式事務由事務發起者 資源管理器 參與者 事務協調者組成,下面我們看看二階段協議內容 第一階段 分布式事務發起方向事務協調器發起分布式事務,協調器則向所有事務參與者發起準備請求,事務參與...
分布式事務 二階段提交
一 二階段提交演算法描述 在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資...
分布式事務 二階段提交與三階段提交
一 二階段提交演算法描述 在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資...