DB資料庫中分散式一致性演算法
一致性演算法 包括2PC 、3PC 、Paxos 、Raft 等四種:
2PC / 3PC 協議用於保證屬於多個資料分片上操作的原子性。
這些資料分片可能分佈在不同的伺服器上,2PC / 3PC 協議保證多臺伺服器上的操作要麼全部成功,要麼全部失敗
二階段提交2PC (Two-Phase Commit ): 用來保證分散式系統資料的一致性的一致性協議,大部分基於關係型資料庫的分散式事務處理都是採用二階段提交協議來完成。其優點是原理簡單且實現方便,缺點是同步阻塞、單點問題、資料不一致、太過保守。
2PC主要包括以下兩個階段:
第一階段:提交事務請求(投票階段)
第二階段:執行事務提交(執行階段)
為了避免在通知所有參與者提交事務時,其中一個參與者 crash 不一致時,就出現了三階段提交的方式。
第一階段:提交事務請求(投票階段)
第二階段:執行事務提交(執行階段)
為了避免在通知所有參與者提交事務時,其中一個參與者 crash 不一致時,就出現了三階段提交的方式。
三階段提交 3PC(Three- Phase Commi ):包括 CanCommit、PreCommit、doCommit 三個階段。顯而易見,三階段提交是在兩階段提交的基礎上增加了一個 preCommit 的過程,當所有參與者收到 preCommit 後,並不執行動作,直到收到 commit 或超過一定時間後才完成操作。
其優點是降低參與者阻塞範圍,並能夠在出現單點故障後繼續達成一致;缺點是引入preCommit 階段,在這個階段如果出現網路分割槽,協調者無法與參與者正常通訊,參與者依然會進行事務提交,造成資料不一致。
其優點是降低參與者阻塞範圍,並能夠在出現單點故障後繼續達成一致;缺點是引入preCommit 階段,在這個階段如果出現網路分割槽,協調者無法與參與者正常通訊,參與者依然會進行事務提交,造成資料不一致。
Paxos (強一致性)演算法屬於多數派演算法,主要目的是解決資料分片的單點問題, 透過該演算法可以讓整個叢集的節點對某個值的變更達成一致。任何一個節點都可以提出要修改某個資料的提案,是否透過這個提案取決於這個叢集中是否有超過半數的節點同意,因此Paxos演算法需要叢集中的節點必須是單數 。
Raft演算法是簡化版的Paxos, 定義了三種角色 Leader、Follower、Candidate:最初都是Follower,當Follower監聽不到Leader,就自動成為Candidate,然後發起投票選出新的Leader 。因此,Raft 劃分成三個子問題:
其有兩個基本過程:
① Leader選舉:每個 Candidate隨機經過一定時間都會提出選舉方案,最近階段中得票最多者被選為Leader;
② 同步log:Leader會找到系統中log(各種事件的發生記錄)最新的記錄,並強制所有的follow來重新整理到這個記錄。
Raft一致性演算法是透過選出一個leader來簡化日誌副本的管理,例如,日誌項(log entry)只允許從leader流向follower。
② 同步log:Leader會找到系統中log(各種事件的發生記錄)最新的記錄,並強制所有的follow來重新整理到這個記錄。
Raft一致性演算法是透過選出一個leader來簡化日誌副本的管理,例如,日誌項(log entry)只允許從leader流向follower。
連結:
來源:簡書
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2902054/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分散式強一致性資料庫的靈魂 – Raft 演算法分散式資料庫Raft演算法
- 分散式強一致性資料庫的靈魂 - Raft 演算法分散式資料庫Raft演算法
- 分散式資料快取中的一致性雜湊演算法分散式快取演算法
- 分散式資料庫分散式資料庫
- “熱搜”中的分散式資料庫分散式資料庫
- NoSQL資料庫的分散式演算法講解SQL資料庫分散式演算法
- 分散式快取--快取與資料庫一致性方案分散式快取資料庫
- 某銀行客戶Db2下移分散式資料庫OceanBase案例DB2分散式資料庫
- Paxos——分散式一致性演算法分散式演算法
- paxos分散式一致性演算法分散式演算法
- 圖資料庫中的“分散式”和“切圖”資料庫分散式
- 圖資料庫中的“分散式”和“資料切分”(切圖)資料庫分散式
- openGauss 分散式資料庫能力分散式資料庫
- 分散式之資料庫和快取雙寫一致性方案解析分散式資料庫快取
- 分散式之資料庫和快取雙寫一致性方案(二)分散式資料庫快取
- 分析型資料庫:分散式分析型資料庫資料庫分散式
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- 分散式服務資料一致性-mysql篇分散式MySql
- 分散式服務資料一致性-redis篇分散式Redis
- ShardingSphere x Seata,一致性更強的分散式資料庫中介軟體分散式資料庫
- 《分散式資料庫HBase案例教程》分散式資料庫
- ORACLE資料庫的中的db-linkOracle資料庫
- 理解分散式一致性與Raft演算法分散式Raft演算法
- 淺談分散式一致性演算法raft分散式演算法Raft
- 第三代分散式資料庫(3)——一致性八仙圖分散式資料庫
- DB資料庫面試資料庫面試
- db2 資料庫DB2資料庫
- 分散式資料庫火了 開源填補資料庫空白分散式資料庫
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 「分散式技術專題」資料庫常見的JOIN演算法分散式資料庫演算法
- 分散式架構中資料一致性常見的幾個問題分散式架構
- 聊聊分散式 SQL 資料庫Doris(四)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(三)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(七)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(八)分散式SQL資料庫
- 聊聊分散式 SQL 資料庫Doris(六)分散式SQL資料庫
- 分散式資料庫的健康評估分散式資料庫
- 分散式資料庫排序及優化分散式資料庫排序優化