zookeeper选举算法中的过半票数才提供正常服务,这是什么逻辑?

Owen_Blog 发布于 2019/09/19 16:01
阅读 1K+
收藏 0

11月25日16点LF开源软件学园为您带来企业拥抱开源101入门公开课>>>

两个问题:

1、不提供服务,是指剩下的集群不能正常使用吗?

2、票数过半这个逻辑,有问题啊!

举个例子:

7台机器正常服务,选举什么都正常的;

突然挂了4台,剩下3台;

按理说剩下3台可以选出master和slave的,为啥不能提供给服务?剩下3台怎么知道原来总数是7台的?

如果这样的话,在集群弹性扩容下,节点数量是不稳定的,过半数投票才服务逻辑是有问题吧?

哪位前辈能指教一下

加载中
1
小腊肠
小腊肠

通过配置文件知道原来是7台, 所以剩下3台是选不出leader的, 至于动态扩容3.5好像是支持的, 原理还是读取配置, 状态改成looking, 再重新选举, 还是过半机制..

不提供服务是没有leader不提供服务

Owen_Blog
Owen_Blog
回复 @小腊肠 : 你确实在瞎说
小腊肠
小腊肠
回复 @Owen_Jia : 这你得看源码了..
Owen_Blog
Owen_Blog
回复 @小腊肠 : ip端口是有的,但是没有节点数量这样的配置,不然动态扩容怎么办;你在瞎说
小腊肠
小腊肠
回复 @Owen_Jia : 有呀..那zk怎么知道连那个ip端口...
Owen_Blog
Owen_Blog
配置文件知道是7台,zk好像没有这样的配置文件吧
0
Mr_Qi
Mr_Qi

怎么判断4台是挂的 也许只是4台网络故障到这三台 但是4台还能提供服务 那么不就出现了脑裂了吗

彩电
回复 @Owen_Blog : 人家说的没问题。。过半规定是为了避免出现脑裂情况。我先回答你的问题:如果不考虑脑裂情况,没有大多数规定,那当然三台也是是可以工作的,另外的4台可不可以工作是未知的。 我再说下Mr_Qi想说的: 如果说是另外4台依然存活只是因为网络分区导致延迟,那么就有两套集群,有两个独立群首,分别作出决策,那整个环境就乱了,出现脑裂,这是有问题的,我们就规定了大多数原则来规避这个问
Owen_Blog
Owen_Blog
回复 @Mr_Qi : 说你有些脑残吧,你可能有些不高兴,但你真的思维有些与常人不同;答非所问,怕是你的常态。---非常感谢你的回答,因为你对提问者的帮助态度还是很到位的。
Owen_Blog
Owen_Blog
回复 @Mr_Qi : 我已经假设的很明确了,那4台挂了(坏了不能运行了,好吧),我想知道剩下3台还能提供服务吗?如果不能,为啥?
Mr_Qi
Mr_Qi
回复 @Owen_Jia : 你这问题有点像我不买吮指原味鸡 我就要肯德基……
Mr_Qi
Mr_Qi
回复 @Owen_Jia : 感觉是你这边理解偏差了 为了不出现脑裂的情况必须过半选举
下一页
0
小韦飞狼
小韦飞狼

这个投票数不是按照存活的数量?

Owen_Blog
Owen_Blog
不是吗?如果不按存活数量,那我们运维添加移除节点情况下,怎么办
0
joeyhacker
joeyhacker

参与投票机器半数, 不考虑之前的总数

Owen_Blog
Owen_Blog
如果是当前参与集群,剩下3台是可以支持服务的;按这个理论,不论剩下几台都能提供服务
0
后天的奇点
后天的奇点

题主您的问题,容易让人误会!

不能有且只有2台存活,其他无仿!

Owen_Blog
Owen_Blog
感谢回答,我已经知道答案了
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部