zk集群的執行模式
1.名詞解釋:
client:使用zk集群服務的客戶端
leader:zk集群真正對外服務的機器,乙個zk集群只有一台leader伺服器
flower:zk集群中除leader伺服器的其他伺服器
zk集群中每個機器都是通過tcp實現連線,通過心跳的機制檢測服務是否正常
2.leader選舉
在zk集群執行的過程中,免不了會出現集群節點掛掉的情況
集群節點掛掉分為兩種情況1.flower節點掛掉 2.leader節點掛掉
flower節點掛掉後不會對集群產生影響,還是通過leader節點對外服務
leader節點掛掉後就會發生leader選舉
選舉的過程分為四步
1)變更狀態
leader節點掛掉後,所有flower節點將自己從flowing狀態轉為looking狀態
2)每個server節點發起投票
投票內容為(myid,zxid)
3)接收每個節點發來的投票
集群中每台機器都會接收到其他機器的投票資訊,首先會判斷投票的有效性,是否是本輪投票,是否來自looking狀態的機器
4)處理投票
優先檢查zxid,zxid較大的優先作為leader
如果zxid相同的話,那麼就比較myid,myid較大的作為leader
5)統計投票資訊
每次投票後會統計所有投票,判斷是否有過半的機器收到了相同的投票資訊
6)改變服務狀態
一旦確定了leader,leader伺服器會將自身狀態改為leading,而fllower會降自己的狀態改為fllowing
名詞解釋:
sid:伺服器id
就是配置在myid檔案中的整型數字,要求集群中唯一
zxid:事務id
用來標識一次伺服器狀態的變更,在某乙個時刻,不同機器的zxid可能是不同的
vote:投票
leader選舉
quorum:過半機器數
MongoDB的選舉過程
mongodb的複製集具有自動容忍部分節點宕機的功能,在複製集出現問題時時,會觸發選舉相關的過程,完成主從節點自動切換.每個複製集成員都會在後台執行與複製集所有節點的心跳執行緒,在兩種情況下會觸發狀態檢測過程 在狀態檢測過程大致包含以下步驟 如果所有條件滿足,則將自身新增到主節點備用列表中,否則,將...
zookeeper的選舉過程
ookeeper的選舉過程大致如下 選出乙個在n 2 1個節點中選出乙個節點為主節點 比如三個組成的集群 n 2 1 2 第二台是master 比如三個組成的集群 n 2 1 3 第三台是master zookeeper的選舉過程,就是選出乙個在n 2 1個節點中選出乙個節點為主節點的過程。比如,當...
zookeeper Leader的選舉過程
假如有三個節點 s1,s2,s3 組成的集群。在集群啟動過程中,當有一台zookeeper節點s1啟動完成後,此時集群中只有乙個節點無法進行leader的選舉。當第二個節點s2啟動成功後,此時兩個節點可以正常通訊,進入leader的選舉過程,具體如下 每乙個節點都是自私的,各自都投自己1票。每次投票...