Zookeeper 的消息廣播實現原理


消息廣播的過程實際上是一個 簡化版本的二階段提交過程

1. leader 接收到消息請求后,將消息賦予一個全局唯一的64 位自增 id,叫:zxid,通過 zxid 的大小比較既可以實現因果有序這個特征

2. leader 為每個 follower 准備了一個 FIFO 隊列(通過 TCP協議來實現,以實現了全局有序這一個特點)將帶有 zxid的消息作為一個提案(proposal)分發給所有的 follower

3. 當 follower 接收到 proposal,先把 proposal 寫到磁盤,寫入成功以后再向 leader 回復一個 ack

4. 當 leader 接收到合法數量(超過半數節點)的 ACK 后,leader 就會向這些 follower 發送 commit 命令,同時會在本地執行該消息

5. 當 follower 收到消息的 commit 命令以后,會提交該消息

 

 leader 的投票過程,不需要 Observer 的 ack,也就是 Observer 不需要參與投票過程,但是 Observer 必須要同 步 Leader 的數據從而在處理請求的時候保證數據的一致 性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM