当前位置: 首页 > news >正文

98、简述Kafka的rebalance机制

简述Kafka的rebalance机制

consumer group中的消费者与topic下的partion重新匹配的过程

何时会产生rebalance:

  • consumer group中的成员个数发生变化
  • consumer 消费超时
  • group订阅的topic个数发生变化
  • group订阅的topic的分区数发生变化

coordinator: 通常是partition的leader节点所在的broker,负责监控group中consumer的存活,consumer维持到coordinator的心跳,判断consumer的消费超时

  • coordinator通过心跳返回通知consumer进行rebalance
  • consumer请求coordinator加入组,coordinator选举产生leader consumer
  • leader consumer从coordinator获取所有的consumer,发送syncGroup(分配信息)给到coordinator
  • coordinator通过心跳机制将syncGroup下发给consumer
  • 完成rebalance

leader consumer监控topic的变化,通知coordinator触发rebalance

如果C1消费消息超时,触发rebalance,重新分配后、该消息会被其他消费者消费,此时C1消费完成提交offset.导致错误。
解决办法: coordinator每次rebalance,会标记一个Generation给到consumer,每次rebalance该Generation会+1,consumer提交offset时,coordinator会比对Generation,不一致则拒绝提交

额外补充:

1、什么是 Rebalance
Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 consumer 如何达成一致,来分配订阅 Topic 的每个分区。

例如:某 Group 下有 20 个 consumer 实例,它订阅了一个具有 100 个 partition 的 Topic 。正常情况下,kafka 会为每个 Consumer 平均的分配 5 个分区。这个分配的过程就是 Rebalance。

2:Rebalance触发的机制

有新的消费者加入消费组
有消费者宕机下线。消费者不一定需要真正下线,例如遇到长时间的GC,网络延迟导致消费者长时间未向GroupCoordinator发送心跳等情况,GroupCoordinator会认为消费者已经下线。
消费者组所对应的GroupCoordinator节点发送变更。
消费组内所订阅的任一主题数量或者主题的分区数量发生变化。

http://www.lryc.cn/news/95179.html

相关文章:

  • 【人工智能】监督学习、分类问题、决策树、信息增益
  • Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类
  • HTML与XHTML的不同和各自特点
  • 微服务如何治理
  • 一本通1919:【02NOIP普及组】选数
  • Kubernetes 集群管理和编排
  • DDS协议--[第六章][Discovery]
  • 如何设置iptables,让网络流量转发给内部容器mysql
  • 数字IC实践项目(7)—CNN加速器的设计和实现(付费项目)
  • 基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
  • 【NCNN】NCNN中Mat与CV中Mat的使用区别及相互转换方法
  • Android 13 设置自动进入wifi adb模式
  • (笔记)插入排序
  • 结构型模式 - 组合模式
  • EDM营销过时了?不,这才是跨境电商成功的最佳工具
  • 【大数据之Hive】二十五、HQL语法优化之小文件合并
  • spring 连接oracle数据库报错{dataSource-1} init error解决,电脑用户名问题
  • 行业视野::人工智能与机器人
  • 【Python入门系列】第十七篇:Python大数据处理和分析
  • spring.profiles的使用详解
  • Docker使用总结
  • MySQL 数据库的备份与还原案例分享 2023.07.12
  • verilog实现数码管静态显示
  • MySQL-DML-添加数据insert
  • Prometheus、Grafana使用
  • UG\NX二次开发 使用throw重新抛出异常
  • 为什么单片机可以直接烧录程序的原因是什么?
  • 使用 uiautomator2+pytest+allure 进行 Android 的 UI 自动化测试
  • Android APP性能及专项测试