經典的兩階段提交演算法原理及缺陷
背景
筆者在過去經典的兩階段提交演算法過程中,發現會遇上部分節點在執行事務提交期間發生故障,導致如下的錯誤,這些錯誤都會導致使用者資料丟失或者出錯。錯誤如下:
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、兩階段提交、三階段提交)分散式
- 兩階段提交2PC 和 三階段提交3pc
- vitess兩階段提交事務Vite
- 分散式事務處理兩階段提交機制和原理分散式
- 分散式事務的兩階段提交和三階段提交分別有什麼優缺點?分散式
- 分散式事務(二)之兩階段提交分散式
- 分散式基礎,啥是兩階段提交?分散式
- 全網最牛X的!!! MySQL兩階段提交串講MySql
- 分散式事務--兩階段提交(2PC-Prepare/Commit)分散式MIT
- 分散式事務對於兩階段提交的錯誤處理分散式
- 關於2PC(二階段提交)和3PC(三階段提交)的理解
- [分享] 使用 golang 理解 MySQL 的兩階段提交- 軒脈刃 de 刀光劍影GolangMySql
- 【分享】使用 golang 理解 mysql 的兩階段提交- 軒脈刃 de 刀光劍影GolangMySql
- 三階段提交(Three-phase commit)MIT
- MySQL事務提交的三個階段介紹MySql
- 兩階段終止模式模式
- 分散式事務(二)之三階段提交分散式
- 二階段提交協議(Two Phase Commitment Protocol)協議MITProtocol
- 08 MySQL兩階段認證MySql
- 2PL(兩階段鎖定)演算法如何工作 -Vlad Mihalcea演算法
- Lisp經典演算法Lisp演算法
- 位元組跳動流式資料整合基於Flink Checkpoint兩階段提交的實踐和優化優化
- 經典演算法(19)教你兩分鐘學會【選擇排序】演算法排序
- 力扣演算法經典第一題——兩數之和(Java兩種方式實現)力扣演算法Java
- Mysql 兩階段鎖和死鎖MySql
- 幾種經典的排序演算法排序演算法
- Python經典演算法片段Python演算法
- 一致性協議之三階段提交協議
- 最新拓薪Java高階階段及ERP實戰專案(階段三)Java
- SSL連線分為兩個階段:握手和資料傳輸階段
- 深度學習從入門到進階的12個經典問題及解答深度學習
- Guava 原始碼分析(Cache 原理【二階段】)Guava原始碼
- 經典排序演算法回顧:排序演算法
- 感悟:工程師所必經的三個階段工程師
- 主宰作業系統的經典演算法作業系統演算法