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