分布式存儲的節點個數為什么必須是奇數


為什么zoo-keeper 的節點必須是奇數個, 或者分布式存儲的節點必須是奇數個

  1. 系統要求節點獲得大多數支持時才可以更新數據,當集群腦裂時, 如果小集群的節點數相等,那么都沒有大多數的支持,也就無法提供服務。
  2. 當集群恢復時,必須以大多數的小集群去覆蓋少數的小集群, 如果平分了集群,則無法恢復數據

分布式存儲的目標和不可能三角CAP

CAP很多人都知道,圖片也很清除了。這里不多說

分布式的算法 Raft 簡介

Raft 涉及的階段

  1. 選舉: 每個集群都要有領導節點。選舉等待超時后, 節點向其它節點拉票, 得到majority票的節點成為領導節點
  2. 二段提交: 領導節點接受更新請求,並保存到binlog, 然后同步binlog 到其它節點, 同步成功之后。領導節點提交,然后通知其它節點提交
  3. 心跳超時: 領導節點定時向所有節點發送心跳,收到心跳后,重置心跳超時,如果心跳超時,則節點會發起新的選舉

Raft 的流程

1 -> 2 -> 3 -> 1 循環

心跳辦法, 有java的 jgroups

最后raft 官網

https://raft.github.io/


免責聲明!

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



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