05 zookeeper集群中的节点角色

zookeeper集群中节点的状态

1、voting/looking - 选举状态
2、followering - 追随者/跟随者
3、leadering - 领导者
4、observering - 观察者

观察者

观察者只会干活,不会参与投票或者选举

为什么要设置观察者

1、当集群变得很庞大的时候,选举的效率是非常低的。(在100个节点中选举的效率肯定高于在10000个节点中选举)
2、集群变得庞大的时候,网络的不确定性因素也会增加,就可能会导致在选举的会后接收不到其他节点的响应信息,导致重选或者选举不准确

举个例子
在这里插入图片描述

zk集群分为三个子集群,最后比较下来需要在A和B节点中选出一个leader,集群1投票完毕,后面集群2和集群3投票之后可能由于网络等原因集群1收到的就是不准确的投票结果,最后可能A和B的选票都无法过半,导致重选。

为了避免网络的因素,直接让集群2和3不参与选举,设置为观察者,只提供服务即可。同时由于主集群中10000个节点选举也是比较费时的,所以设置9900个为观察者,剩下的101个参与选举即可。

观察者的特点

1、观察者不投票不选举,但是会监控投票或者选举的结果,根据结果来执行相应的指令。
2、实际开发过程中,会将一个集群的,往往会将一个集群中90%的节点设置为observer,以提高选举或者投票的效率。尤其是在 集群庞大 或者 网络条件不是特别好 的情况下,会将更多的节点设置为observer
3、observer存不存活不对集群造成任何影响。例如一共有25个节点,其中1个leader和6个follower,剩余的18个都是observer,那么即使所有的observer全部宕机,Zookeeper依然对外提供服务,但是如果4个follower宕机,即使所有的observer都存活,这个Zookeeper也不对外提供服务 - 在Zookeeper中过半性考虑的是leader和follower,而不包括observer

如何设置观察者

在需要设置成观察者的节点上操作即可。
修改zoo.cfg文件
添加如下内容

peerType=observer 开启观察者模式。
然后在需要设置观察者的server.x 后面添加 :observer

虽说不需要将配置文件同步到其他节点,但是最后使用同步脚本进行配置文件的同步,保证所有节点上的配置文件的信息都是相同的

同时,当我们在新增一个节点到集群中的时候,只需要在新增节点的配置文件中配置集群中其他节点的ip地址即可,同样的,最好还是用同步脚本将配置文件分发到所有的集群节点上,保证配置信息的同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值