Zookeeper集群为什么要是单数
在zookeeper集群中,會(huì)有三種角色,leader、 follower、 observer分別對(duì)應(yīng)著總統(tǒng)、議員、觀察者。
半數(shù)以上投票通過(guò):可以這樣理解。客戶端的增刪改操作無(wú)論訪問(wèn)到了哪臺(tái)zookeeper服務(wù)器,最終都會(huì)被轉(zhuǎn)發(fā)給leader服務(wù)器,再由leader服務(wù)器分給zookeeper集群中所有follower服務(wù)器去投票(投票指的是在內(nèi)存中做增刪改操作),半數(shù)投票通過(guò)就被認(rèn)為操作可執(zhí)行(commit),否則不可執(zhí)行。
observer觀察者服務(wù)器是針對(duì)于查詢操作做負(fù)載的,observer與follower服務(wù)器最大的不同在于observer沒(méi)有投票權(quán),在客戶端發(fā)起的增刪改操中,leader服務(wù)器是不會(huì)把消息傳遞給observer服務(wù)器讓其投票的。但是查詢操作跟follower一樣,客戶端的查詢到了observer服務(wù)器節(jié)點(diǎn),observer服務(wù)器去訪問(wèn)leader服務(wù)器取最新的數(shù)據(jù)然后返回給客戶端。
?
為什么zookeeper集群是單數(shù)?
1、容錯(cuò)
由于在增刪改操作中需要半數(shù)以上服務(wù)器通過(guò),來(lái)分析以下情況。
2臺(tái)服務(wù)器,至少2臺(tái)正常運(yùn)行才行(2的半數(shù)為1,半數(shù)以上最少為2),正常運(yùn)行1臺(tái)服務(wù)器都不允許掛掉
3臺(tái)服務(wù)器,至少2臺(tái)正常運(yùn)行才行(3的半數(shù)為1.5,半數(shù)以上最少為2),正常運(yùn)行可以允許1臺(tái)服務(wù)器掛掉
4臺(tái)服務(wù)器,至少3臺(tái)正常運(yùn)行才行(4的半數(shù)為2,半數(shù)以上最少為3),正常運(yùn)行可以允許1臺(tái)服務(wù)器掛掉
5臺(tái)服務(wù)器,至少3臺(tái)正常運(yùn)行才行(5的半數(shù)為2.5,半數(shù)以上最少為3),正常運(yùn)行可以允許2臺(tái)服務(wù)器掛掉
6臺(tái)服務(wù)器,至少3臺(tái)正常運(yùn)行才行(6的半數(shù)為3,半數(shù)以上最少為4),正常運(yùn)行可以允許2臺(tái)服務(wù)器掛掉
?
通過(guò)以上可以發(fā)現(xiàn),3臺(tái)服務(wù)器和4臺(tái)服務(wù)器都最多允許1臺(tái)服務(wù)器掛掉,5臺(tái)服務(wù)器和6臺(tái)服務(wù)器都最多允許2臺(tái)服務(wù)器掛掉
但是明顯4臺(tái)服務(wù)器成本高于3臺(tái)服務(wù)器成本,6臺(tái)服務(wù)器成本高于5服務(wù)器成本。這是由于半數(shù)以上投票通過(guò)決定的。
?
2、防腦裂
一個(gè)zookeeper集群中,可以有多個(gè)follower、observer服務(wù)器,但是必需只能有一個(gè)leader服務(wù)器。
如果leader服務(wù)器掛掉了,剩下的服務(wù)器集群會(huì)通過(guò)半數(shù)以上投票選出一個(gè)新的leader服務(wù)器。
集群互不通訊情況:
一個(gè)集群3臺(tái)服務(wù)器,全部運(yùn)行正常,但是其中1臺(tái)裂開(kāi)了,和另外2臺(tái)無(wú)法通訊。3臺(tái)機(jī)器里面2臺(tái)正常運(yùn)行過(guò)半票可以選出一個(gè)leader。
一個(gè)集群4臺(tái)服務(wù)器,全部運(yùn)行正常,但是其中2臺(tái)裂開(kāi)了,和另外2臺(tái)無(wú)法通訊。4臺(tái)機(jī)器里面2臺(tái)正常工作沒(méi)有過(guò)半票以上達(dá)到3,無(wú)法選出leader正常運(yùn)行。
一個(gè)集群5臺(tái)服務(wù)器,全部運(yùn)行正常,但是其中2臺(tái)裂開(kāi)了,和另外3臺(tái)無(wú)法通訊。5臺(tái)機(jī)器里面3臺(tái)正常運(yùn)行過(guò)半票可以選出一個(gè)leader。
一個(gè)集群6臺(tái)服務(wù)器,全部運(yùn)行正常,但是其中3臺(tái)裂開(kāi)了,和另外3臺(tái)無(wú)法通訊。6臺(tái)機(jī)器里面3臺(tái)正常工作沒(méi)有過(guò)半票以上達(dá)到4,無(wú)法選出leader正常運(yùn)行。
?
通可以上分析可以看出,為什么zookeeper集群數(shù)量總是單出現(xiàn),主要原因還是在于第2點(diǎn),防腦裂,對(duì)于第1點(diǎn),無(wú)非是正本控制,但是不影響集群正常運(yùn)行。但是出現(xiàn)第2種裂的情況,zookeeper集群就無(wú)法正常運(yùn)行了。
總結(jié)
以上是生活随笔為你收集整理的Zookeeper集群为什么要是单数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UNIX再学习 -- 系统数据文件和信息
- 下一篇: PS菜鸟入门 -- 窗口