kafka专题笔记 - 客户端

再均衡原理

再均衡rebalance是在kafka使用中需要特别注意的一个知识点。新版kafka使用消费者协调器和组协调器对再均衡行为进行管理

消费者协调器和组协调器

kafka消费者客户端将全部消费组分成多个子集,每个消费组的子集在服务端对应一个GroupCoordinator对其进行管理,组协调器是kafka服务端组件;而消费者协调器ConsumerCoordinator则位于客户端的各个消费者中

ConsumerCoordinatorGroupCoordinator之间最重要的职责就是负责执行消费者再均衡的操作

触发再均衡的操作

  1. 有新的消费者加入消费组
  2. 有消费者宕机下线(组协调器感知不到消费者存在的统称,可能因为宕机、网络延时等)
  3. 有消费者主动退出消费组,如客户端主动取消订阅
  4. 消费组所对应的GroupCoordinator节点发生变更
  5. 消费组内所订阅的任一主题或者主题的分区数量发生变化

再均衡过程

这里以有新的消费者加入消费组为例,梳理再均衡的主题流程。

  1. 第一阶段,寻找组协调器
    • 新消费者加入之后,需要确定其所加入消费组的组协调器所在broker * 消费者已保存组协调器所在broker信息,则直接进行下一步,否则:
      • 消费者发送FindCoordinatorRequest到集群中负载最小的broker,查找组协调器所在borker
    • 找到组协调器后,与之创建网络连接,以备后续通信
  2. 第二阶段,加入消费组
    • 消费者向组协调器发送JoinGroupRequest,请求加入消费组,同时消费者阻塞
    • 服务端组协调器接收加入消费组请求
      • 选举消费组的leader
      • 确定分区分配策略(每个消费者上报的JoinGroupRequets会携带自己支持的分区分配策略,组协调器按投票数选举最终的分区分配策略)
    • 服务端发送JoinGroupResponse给各消费者
      • 只有leader消费者会拿到最终确定的分区分配策略
  3. 第三阶段,同步分组信息
    • leader消费者拿到分区分配策略之后,计算具体的分配方案
    • 各消费者发送SyncGroupRequest请求给组协调器,要求同步分区方案
      • leader消费者会把最终计算的分配结果放到请求中,发送给组协调器
    • 组协调器拿到leader消费者传来的具体分配方案
      • 将分配详情保存到kafka的默认主题__consumer_offset
      • 将各消费者的分区方案放到SyncGroupResponse响应中,返回给各消费者
  4. 第四阶段,开始工作
    • 各消费者拿到自己的分区分配详情后,就准备开始工作,消费分区数据
    • 正式开始前,要先从__consumer_offset中确认当前消费分区上次已提交的offset,并从此处开始消费
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值