kafka中对于zookeeper的理解和leader选举过程

一.什么是zookeeper
是分布式程序的协调服务,可以看作整个集群的管理者、监控者
作用:
分布式应用配置管理、统一命名服务、状态同步、集群管理
二.zookerper与kafka集群的关系
2.1 broker:
kafka集群包含一个或多个服务器,这服务器叫broker。每个broker都连接到zookeeper
2.2 一个kafka集群包含:
若干broker(broker越多,集群吞吐率越高)
若干个生产者
若干消费者组,
以及一个zookeeper
2.3 发布消息、消费消息
生产者使用push模式把消息发布到broker
使用pull模式从broker订阅并消费消息
问题:有多少个broker就有多少个副本吗?
三. leader选举流程
1.选举流程主要在以下两种情况时发生:
1.1 服务器初始化启动时
1.2 运行期间leader发生故障
问:如果有3个分片,3个分片的leader都一样的吗?还是说每个分区集群都有一个leader
2.初始化启动时选举过程:
假设三台机器(s1 s2 s3)
第一步:s1给自己一票为leader,投票格式(serverid,zxid),即(服务器id,数据id(存放的最大数据id)),具体值是(1,0),进入looking状态
第二步:s2,投票(2,0),并与s1交换结果,由于编号2大于1,胜出,告知s1
第三步:S1把自己投票改成(2,0),重新投票。S2维持之前投票(2,0)。
统计第二轮投票,S2以2票胜出;且判断此时2大于3的50%,S2选为leader,状态变leading,S1变following
第四步:S3启动,发发现leader已经存在,直接将自己状态改成following状态
3. 服务运行期间leader出现故障
第一步:假设S2挂了,剩下机器状态改为looking ,开始选举
第二步:S1发出票数(1,233),S3发出(3,222)
第三步:各服务器接受其他服务器信息
判断是否是looking 状态
先比较zxid 大的优先作为leader,其次再比较server id
第四步:发起第二轮投票,S3改票为(1,233) S1保持(1,233),投票人过半,S1胜出
选为新leader,状态改成leading,S3改成following 状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值