栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka专题笔记 - 客户端

kafka专题笔记 - 客户端

再均衡原理

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

消费者协调器和组协调器

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

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

触发再均衡的操作
  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,并从此处开始消费
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号