kafka-client-分区分配

分区分配

分区再均衡在服务端由GroupCoordinator负责,在客户端由ConsumerCoordinator负责,集群的全部消费组划分为多个子集,每个消费组的子集在服务端对应一个GroupCoordinator

有以下几种情况会触发再均衡

1.新消费者加入

2.消费者被动下线

3.消费者主动下线

4.消费组对应的GroupCoordinator节点发生变更

5.消费组订阅的主题分区数量发生变化

当发生分区再均衡时有以下几个阶段

第一阶段 FIND_COORDINATOR

消费者需要确定他所属的消费组对应的GroupCoordinator所在的broker,并与该broker建立连接.消费者通过FindCoordinatorRequest请求对应的GroupCoordinator

第二阶段JOIN_GROUP

找到自己所属的GroupCoordinator之后,会向GroupCoordinator发送JoinGroupRequest请求

GroupCoordinator的任务

1.选举消费组的leader,基本上是第一个加入消费组的消费者或者随便选一个作为leader

2.选举分区分配策略:根据每个消费者提交的各自的分配策略中找一个满足所有消费者需求的分配策略

3.选出分区策略后会发送JoinGroupResponse给各个消费者,leader和普通消费者消息有些差别

第三阶段SYNC_GROUP

leader消费者根据分区分配策略执行具体的分区分配方案(所以客户端可以自定义分配策略),这个方案里包含每个消费者消费那个TopicPartition,之后发送SyncGroupRequest请求,把分配方案提交给GroupCoordinator,GroupCoordinator将分配方案和消费组的元数据存入__consumer_offsets,最后将分配方案返回给各个消费者,之后消费者和GroupCoordinator会保持心跳连接

第四阶段HEARTBEAT

经历前三阶段,消费者可以进入消费状态.首先消费者需要确定自己拉取消息的起始位置,或者消费者指定,或者由上次提交的offset开始消费(消费者通过OffsetFetchRequest获得上次提交的位移)

正常消费开始后,消费者提交offset,同时发送心跳

如果超时未收到心跳,GroupCoordinator开始分区再均衡

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值