經典的兩階段提交演算法原理及缺陷
背景
筆者在過去經典的兩階段提交演算法過程中,發現會遇上部分節點在執行事務提交期間發生故障,導致如下的錯誤,這些錯誤都會導致使用者資料丟失或者出錯。錯誤如下:
1、 一個分散式事務的一部分事務分支被提交,另一部分事務分支被回滾
2、 應答給客戶端事務提交成功,但是分散式事務所有分支全部被回滾
3、 應答給客戶端事務被回滾,但是分散式事務部分或者全部分支被提交
4、 儲存節點故障恢復時,某個儲存節點的事務分支不能被正確地恢復。
在上面這些錯誤源中,第 #4 類錯誤處理由儲存節點自身負責,分散式事務處理機制負責處理前 3 類錯誤,筆者會在下篇文章做主要討論。
對於第 #4 類錯誤,筆者曾經在 FOSDEM 2021 做過一次技術分享, ,國內影片連線在: 崑崙分散式資料庫 MySQL XA 事務處理的容災技術 ( )以後也會陸續撰文詳述。
經典的兩階段提交演算法原理
經典的兩階段提交演算法缺陷
如何最佳化避免其缺陷?
-
包含若干個儲存叢集儲存使用者資料分片,每個儲存叢集使用高可用機制確保節點當機資料不丟失。
-
一個結構與儲存叢集完全相同的後設資料叢集,它儲存著這個叢集的關鍵後設資料資訊,包括本文所說的 commit log 。
-
一個 cluster_mgr 模組 , 負責維護叢集執行狀態,並且處理因為節點故障而殘留的 prepared 狀態的事務分支。
總結
推薦閱讀
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011764/viewspace-2852619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL兩階段提交過程原理簡述MySql
- [Mysql]兩階段提交MySql
- mysql兩階段提交和組提交MySql
- 分散式:分散式事務(CAP、兩階段提交、三階段提交)分散式
- vitess兩階段提交事務Vite
- 【MYSQL】兩階段提交及相關引數介紹MySql
- 分散式事務處理兩階段提交機制和原理分散式
- 淺談mysql的兩階段提交協議MySql協議
- 分散式事務的兩階段提交和三階段提交分別有什麼優缺點?分散式
- 分散式基礎,啥是兩階段提交?分散式
- 分散式事務(二)之兩階段提交分散式
- 關於分散式事務、兩階段提交協議、三階提交協議分散式協議
- 全網最牛X的!!! MySQL兩階段提交串講MySql
- Mycat分散式事務兩階段提交過程概述分散式
- 分散式資料庫事務的兩階段提交介紹分散式資料庫
- 分散式事務對於兩階段提交的錯誤處理分散式
- 關於2PC(二階段提交)和3PC(三階段提交)的理解
- 分散式事務--兩階段提交(2PC-Prepare/Commit)分散式MIT
- [分享] 使用 golang 理解 MySQL 的兩階段提交- 軒脈刃 de 刀光劍影GolangMySql
- 【分享】使用 golang 理解 mysql 的兩階段提交- 軒脈刃 de 刀光劍影GolangMySql
- 兩階段終止模式模式
- 三階段提交(Three-phase commit)MIT
- MySQL事務提交的三個階段介紹MySql
- 經典演算法之基數排序兩種實現演算法排序
- 經典演算法演算法
- 08 MySQL兩階段認證MySql
- 分散式事務(二)之三階段提交分散式
- Lisp經典演算法Lisp演算法
- Mysql 兩階段鎖和死鎖MySql
- 經典演算法(19)教你兩分鐘學會【選擇排序】演算法排序
- 力扣演算法經典第一題——兩數之和(Java兩種方式實現)力扣演算法Java
- 2PL(兩階段鎖定)演算法如何工作 -Vlad Mihalcea演算法
- 幾種經典的排序演算法排序演算法
- 經典的決策樹演算法演算法
- 白話經典演算法演算法
- 位元組跳動流式資料整合基於Flink Checkpoint兩階段提交的實踐和優化優化
- SSL連線分為兩個階段:握手和資料傳輸階段
- 比特幣的三個經濟階段比特幣