Paxos 演算法 與 Zookeeper 集群選舉

2021-09-26 03:20:21 字數 1963 閱讀 6789

分布式系統中,集群副本 是比較重要的存在形式。對於其協議 ,一般常見分為兩種,中心化副本控制協議(類似主從),另一種 去中心化副本協議 ( 無絕對中心概念,一般選舉產生 )。本文paxos 演算法 ,其實是 一種比較經典的 去中心化 副本協議,而  zookeeper 集群選舉流程 其實是一種 簡化版 paxos。

1.paxos 基本角色

paxos 演算法中  ,分三種角色(節點):提議者(proposer),接收者(acceptor),學習者(learner)。

提議者(proposer):發起提議

接收者(acceptor):對提議進行投票,決定是否接受提議

學習者(learner):不參與投票,負責傳達最終值

其實 ,paxos的概念,類似 我們生活的民主投票。

2.paxos 選舉流程

先說總結:兩階段提交 + 過半數通過

階段一 【提議階段】:

(1)  提議者  向大多數接收者  發起乙個 編號 n的  預請求   

(2)  接收者 對該 提議進行處理。 如果 編號n  大於 之前接受的 提議編號,則做出響應,且 承諾 不再接受比 n 小的提      議  ,反之 ,將大於 n 的編號    響應帶上(該步驟  可以促使 多提議者 向同乙個值提議)

階段二 【批准處理階段】:   

(1)  如果 提議者 收到 大多數 接受者對 預請求的響應, 則 向每個 接收者 傳送請求 (編號n:value提議內容)

對於 value, 一般 取 所有接收者響應 中 最大 編號的n 所對應的 值,若沒有 隨機

(2) 接收者  收到 請求 ,接受提議 。 如果 準備 對更大 編號 做響應 ,則 直接拒絕該提議。

上述過程, 未達成一致 ( 沒有超過半數,無法 學習) ,編號+1 , 重新提議

3.paxos 場景

如下圖 (個人 感覺比較清晰的圖), 描述 一種 比較正常的場景。paxos 可以 讓多個 提議者 的提議 朝著 多大多數 接收者 所接受的提議 靠攏,且 最終 只有乙個 提議 被接受 ,並讓 學習者 學習 , 是一種 可終止 的方案。

1.選舉機制

zookeeper 內建 多種 選舉演算法, 但大同小易。

伺服器 id :集群部署 時的 myid  (主要 用在 當多個 服務zxid 一致, myid  就起到主導作用, 如 初始狀態  【解決活鎖】)

事務 id: 該服務 存放的最大 zxid[ 選舉編號+ 序號 ](標識 該服務有最新的資料,更容易成為leader 且 保證資料 不丟失)

邏輯時鐘: 發起的 投票 輪數計數 ( 同步資料 需要 ,保證資料一致性 )

選舉狀態: looking,  following , observing, leading

2.選舉流程

總結:最大的zxid +過半數通過

(1) 每個 服務例項  均發起投票 (一般 投給自己)

(2) 其他 服務 收到投票 , 比較 zxid  ,如果 一致 ,比較 myid  ,大於自己 ,則投出一票

(3)  收到 投票 ,若投票數 大於集群半數  ,則成為 leader

如:  假設  例項 a,b,c,d,e  依次啟動, 由於初始 狀態,直接比較 myid  , c 則是 第乙個 超出半數的,即 成為 leader

Zookeeper與paxos演算法

一 zookeeper是什麼 官方說辭 zookeeper 分布式服務框架是apache hadoop 的乙個子專案,它主要是用來解決分布式應用中經常遇到的一些資料管理問題,如 統一命名服務 狀態同步服務 集群管理 分布式應用配置項的管理等。好抽象,我們改變一下方式,先看看它都提供了哪些功能,然後再...

Zookeeper與paxos演算法

一 zookeeper是什麼 官方說辭 zookeeper 分布式服務框架是apache hadoop 的乙個子專案,它主要是用來解決分布式應用中經常遇到的一些資料管理問題,如 統一命名服務 狀態同步服務 集群管理 分布式應用配置項的管理等。好抽象,我們改變一下方式,先看看它都提供了哪些功能,然後再...

Zookeeper與paxos演算法

一 zookeeper是什麼 官方說辭 zookeeper 分布式服務框架是apache hadoop 的乙個子專案,它主要是用來解決分布式應用中經常遇到的一些資料管理問題,如 統一命名服務 狀態同步服務 集群管理 分布式應用配置項的管理等。好抽象,我們改變一下方式,先看看它都提供了哪些功能,然後再...