文章目录

  • 前言
  • 触发Rebalance的原因
    • 1. 消费者成员发生变化
    • 2. 分区数发生变化
    • 3. 订阅Topic发生变化
  • Rebalance全流程介绍
    • 场景一:新成员入组
    • 场景二:成员主动离组
    • 场景三:成员崩溃离组
    • 场景四:组成员提交位移

前言

所谓Rebalance就是让Consumer对如何消费订阅主题下的分区进行重新规划,由于整个过程所有Consumer都不能消费,因此Rebalance的发生次数以及一次Rebalance的持续时间都对Consumer有着很大的影响。

触发Rebalance的原因

1. 消费者成员发生变化

这应该是最常见的触发Rebalance的原因,比如:服务发布重启,就会造成消费者成员发生变化,一般而言这种场景是正常的需求,不必太过注意。

为了保证消费者组的可用性,Kafka中的Coordinator组件会负责监测所有Consumer的存活性,其判定方式是通过每个Consumer定期给它发送心跳来确定的,参数为session.timeout.ms,其默认值是10秒,也就是一旦Consumer超过10秒没有给Coordinator发送心跳,Coordinator就认为Consumer发生故障,此时Coordinator的做法就是将其从消费者组中移除,从而引发Rebalance,当然这本身是一个良好可用性的保障,只不过如果因为其他原因导致Consumer无法发送心跳而引起Rebalance就非其本意了,一般线上环境上最容易导致心跳无法发送的场景就是:长时间的GC暂停、CPU使用过高。

综上所述,对于session.timeout.ms配置的时间一定要做好评估(需要注意,该值必须在broker配置group.min.session.timeout.msgroup.max.session.timeout.ms的范围内),除了这个参数,Consumer还提供了另一个参数来控制发送心跳的频率,即:heartbeat.interval.ms,其值越小,频率就越高,通常情况下建议heartbeat.interval.ms设置为session.timeout.ms的三分之一。

除了session.timeout.ms参数超时会引起Rebalance之外,还有一个参数也有类似逻辑,即max.poll.interval.ms,这个参数就规定了,当调用poll()之后,如果在max.poll.interval.ms指定的时间内未消费完消息,也就是未再调用poll()方法,则Consumer会主动发起离开组的请求,从而产生Rebalance。

2. 分区数发生变化

这个场景也很好理解,分区数发生了变化,自然需要重新调整分区与消费者的对应关系。

3. 订阅Topic发生变化

这个场景与分区数发生变化类似,都属于常规的业务使用上的需要,没有什么好避讳的。

Rebalance全流程介绍

Kafka中Rebalance主要分为两步,第一步是JoinGroup,第二步是SyncGroup,通过Coordinator来协调各消费组的元数据信息以及组成员之间的关系,包括选举group leader、处理JoinGroup、SyncGroup请求等等。

整个Rebalance流程,主要围绕以下4种场景来处理。

场景一:新成员入组

场景二:成员主动离组

场景三:成员崩溃离组

场景四:组成员提交位移

Kafka触发Rebalance的场景分析相关推荐

  1. 【Kafka】Kafka 2.6新功能:消费者主动触发Rebalance

    1.概述 转载:https://www.cnblogs.com/huxi2b/p/13278206.html Kafka 2.6引入的新功能:消费者能够主动触发Rebalance.一直以来,Rebal ...

  2. kafka的Rebalance问题分析(续)

    1. 什么是kafka的Rebalance kafka集群模式下,一个topic有多个partition,对于消费端,可以有多个consumer同时消费这些partition.为了保证大体上parti ...

  3. Kafka突发rebalance

    Kafka 是我们最常用的消息队列,它那几万.甚至几十万的处理速度让我们为之欣喜若狂.但是随着使用场景的增加,我们遇到的问题也越来越多,其中一个经常遇到的问题就是:rebalance(重平衡)问题. ...

  4. kafka一直rebalance故障,重复消费

    今天我司线上kafka消息代理出现错误日志,异常rebalance,而且平均间隔2到3分钟就会rebalance一次,分析日志发现比较严重.错误日志如下 08-09 11:01:11 131 pool ...

  5. 聊聊 Kafka:Kafka 消息重复的场景以及最佳实践

    一.前言 上一篇我们讲了 聊聊 Kafka:Kafka 消息丢失的场景以及最佳实践,这一篇我们来说一说 Kafka 消息重复的场景以及最佳实践. 我们下面会从以下两个方面来说一下 Kafka 消息重复 ...

  6. kafka之rebalance

    一.什么是 Rebalance 分区的所有权从一个消费者转移到另一个消费者,这样的行为被称为重平衡(Rebalance). Rebalance 实现了消费者群组的高可用性和伸缩性. 消费者通过向被指派 ...

  7. 电商抢购秒杀系统的设计_1_应用场景分析

    2019独角兽企业重金招聘Python工程师标准>>> 电商抢购秒杀系统的设计_1_应用场景分析 概述 所谓知已知彼,百战不殆,在开始详细介绍实战中的抢购秒杀系统时,我们了解一些抢购 ...

  8. 无服务器架构 - 从使用场景分析其6大特性

    2019独角兽企业重金招聘Python工程师标准>>> 无服务器架构 - 从使用场景分析其6大特性 博客分类: 架构 首先我应该提到,"无服务器"技术肯定有服务器 ...

  9. Rocksdb的优劣及应用场景分析

    Rocksdb的优劣及应用场景分析 Rocksdb也是一样,也有它的优势劣势及特定的适用场景.今天我就从设计的角度来分析一下. 基础架构 上图就是Rocksdb的基础架构.Rocksdb中引入了Col ...

最新文章

  1. Unity用UGUI做虚拟摇杆
  2. 漫画:百度从Google学来的面试题,想进大厂必备!
  3. jenkins 入门教程(下)
  4. Blackberry阻碍因素
  5. springboot转发http请求_网易后端实习生分享:Springboot异常和错误处理规范
  6. linux mono apache2,如何利用Mono创建Apache+mono环境(2)
  7. QTextStream
  8. Kubernetes 小白学习笔记(10)--搭建一个kubernetes集群-组建节点网络
  9. 关于djangorestframework
  10. Flink-CEP快速入门
  11. 符合规则的c语言常量,c语言常量定义规则知识点总结
  12. ffmpeg实现视频切割
  13. Express框架、Webstorm中创建Express项目
  14. .net中获取MD5码
  15. 基于和风天气API开发的天气查询小工具(含源码)
  16. Instruments
  17. 华为magic book笔记本无法重装系统的麻烦
  18. 常见的网页布局解决方案
  19. 五、jQuery 对表单、表格的操作(走过路过瞅瞅吧)
  20. 搞定坏男人的最有效6大招数

热门文章

  1. match在java中文翻译_match是什么意思_match的翻译_音标_读音_用法_例句_爱词霸在线词典...
  2. matlab下载实录:matlab2022a好用吗
  3. Postman高级应用(5):再也不用注释签名代码了——自动生成签名
  4. Linux进程间通信详解
  5. 数据库结构比对,再初始数据比对方法
  6. Python集合—数据比较方式
  7. XShell 上传文件时 乱码问题
  8. java切割音频文件
  9. 爬取B站视频弹幕生成词云
  10. The Winter Is Coming