kafka- zk+controller - consumer rebalance

在这里插入图片描述
zk+controller:controller通过抢占zk节点选举
topic/partition/replica/broker变动:一般先zk,controller监听zk,本地Partition/ReplicaStateMachine处理,元数据同步至其他broker+更新zk

zk和broker的元数据是一致的,为啥不先更新zk,其它broker通过zk获取元数据变更?普通broker很少注册watch,避免羊群效应,即普通broker对zk的依赖很轻的,其元数据来自controller
zk的主要作用:
1 集群管理:每个broker都注册相应watch,竞争controller,感知集群状态
2 通知controller:各种数据变动能通知controller进行统一处理, 如新增了topic,zk变动后controller才能进行分配
3 获取元数据:我们或一些dashboard能zk上看到元数据

consumer rebalance:每个broker都是group coordinator
位点存储:0.9之前是zk,之后内置topic
消费组位点存储在内置topic的partition为P,P的leader所在节点为消费组的coordinator

consumer上线(主动joinGroup)
consumer下线(session.timeout, heartbeat.interval)
consumer主动离开(max.poll.interval, 消费消息慢,两次poll间隔长,consumer发起LeaveGroup)
topic/partition变化

coordinator感知到上述情况需要rebalance,在heartbeat的resp中说明,consumer纷纷joinGroup
coordinator等待一定时间,暂定一个leader,发出joinGroup的resp
consumer接到joinGroup的resp,非leader发起SyncGroup,leader分配后发起SyncGroup(带分配结果)
coordinator给各consumer SyncGroup的resp(带分配结果)

consumer和coordinator的常规通信:heartbeat和offsetCommit(coordinator将其放入内置topic)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值