為什么必然會出現(xiàn)選舉/共識機制?
為了避免哨兵的單點情況發(fā)生,所以需要一個哨兵的分布式集群。作為分布式集群,必然涉及共識問題(即選舉問題);同時故障的轉(zhuǎn)移和通知都只需要一個主的哨兵節(jié)點就可以了。
哨兵的選舉機制是什么樣的?
哨兵的選舉機制其實很簡單,就是一個Raft選舉算法: 選舉的票數(shù)大于等于num(sentinels)/2+1時,將成為領(lǐng)導者,如果沒有超過,繼續(xù)選舉
Raft算法你可以參看這篇文章分布式算法 - Raft算法
任何一個想成為 Leader 的哨兵,要滿足兩個條件:
,拿到半數(shù)以上的贊成票;
第二,拿到的票數(shù)同時還需要大于等于哨兵配置文件中的 quorum 值。
以 3 個哨兵為例,假設(shè)此時的 quorum 設(shè)置為 2,那么,任何一個想成為 Leader 的哨兵只要拿到 2 張贊成票,就可以了。