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

Owen_Jia 发布于 2019/09/19 16:01
阅读 519
收藏 0

两个问题:

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

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

举个例子:

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

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

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

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

哪位前辈能指教一下

加载中
1
小腊肠
小腊肠

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

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

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

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

Owen_Jia
Owen_Jia
回复 @Mr_Qi : 说你有些脑残吧,你可能有些不高兴,但你真的思维有些与常人不同;答非所问,怕是你的常态。---非常感谢你的回答,因为你对提问者的帮助态度还是很到位的。
Owen_Jia
Owen_Jia
回复 @Mr_Qi : 我已经假设的很明确了,那4台挂了(坏了不能运行了,好吧),我想知道剩下3台还能提供服务吗?如果不能,为啥?
Mr_Qi
Mr_Qi
回复 @Owen_Jia : 你这问题有点像我不买吮指原味鸡 我就要肯德基……
Mr_Qi
Mr_Qi
回复 @Owen_Jia : 感觉是你这边理解偏差了 为了不出现脑裂的情况必须过半选举
Mr_Qi
Mr_Qi
回复 @Owen_Jia : 已经告诉你了啊 因为你不能保证其他的究竟是发生什么问题了 已经说了过半是必要条件了啊 已经说了 如果这三台提供服务 那么其他四台【你说挂了就挂了???没有明确的响应不代表是挂了 你有上帝视角 程序没有啊 去中心化的意思就是大家平等 你作为部署运维者可以认为其他挂了 但是实际程序可不能像你怎么考虑】
下一页
0
小韦飞狼
小韦飞狼

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

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

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

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

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

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

Owen_Jia
Owen_Jia
感谢回答,我已经知道答案了
返回顶部
顶部