kafka消费者重平衡是什么?怎么避免?

消费者重平衡是指主题下的分区怎么分配给消费者的过程。下面这个图可以看出该过程:原来有2个消费者,3个分区,其中一个消费者肯定就的处理2个分区了。那么当新加入消费者时,则每个消费者就只处理一个分区了。处理这个分区过程的叫协调者,协调者就在broker端。

当发生重平衡时,所有消费者都不能收到消息,所以发生这个过程是非常严肃的。

什么时候会发生重平衡?

  1. 新的消费者加入。
  2. 消费者主动离开。比如取消对主题的订阅。
  3. 消费者崩溃离开。比如网络延迟导致心跳一直没收到。
  4. 主题分区数发生变更。

怎么避免消费者重平衡?

有几个参数可以重点看下:

  1. session.timeout.ms=10 协调者超过10秒没有收到消费者的请求则认为消费者已经下线。
  2. heartbeat.interval.ms 心跳频率。消费者间隔多久发送心跳。
  3. max.poll.interval.ms 消费者两次调用poll的时间间隔,默认是5分钟。超过5分钟则认为上次拉去的消息一直没消费完成,也被认为需要重平衡。
  4. max.poll.records=500 默认单次最大拉取条数为500。如果一次拉取太多数据,会导致超时了还没处理完成。

主题有3个分区,那么消费者组员数应该也是3个才算合理的分配,多出的组员将无法分配消费分区是种浪费。消费者对应机器数最好是固定的,避免频繁加减节点带来的重平衡。

相关推荐
2501_9418779810 小时前
Python在微服务高并发异步日志聚合与智能告警分析架构中的实践
kafka
SuperHeroWu712 小时前
【HarmonyOS 6】UIAbility跨设备连接详解(分布式软总线运用)
分布式·华为·harmonyos·鸿蒙·连接·分布式协同·跨设备链接
杜子不疼.13 小时前
【探索实战】从0到1打造分布式云原生平台:Kurator全栈实践指南
分布式·云原生
最笨的羊羊13 小时前
Flink CDC系列之:Kafka CSV 序列化器CsvSerializationSchema
kafka·csv·schema·flink cdc系列·serialization·序列化器
最笨的羊羊14 小时前
Flink CDC系列之:Kafka的Debezium JSON 结构定义类DebeziumJsonStruct
kafka·debezium·flink cdc系列·debezium json·结构定义类·jsonstruct
m***l11515 小时前
集成RabbitMQ+MQ常用操作
分布式·rabbitmq
拾忆,想起17 小时前
Dubbo分组(Group)使用指南:实现服务接口的多版本管理与环境隔离
分布式·微服务·性能优化·架构·dubbo
回家路上绕了弯17 小时前
彻底解决超卖问题:从单体到分布式的全场景技术方案
分布式·后端
拾忆,想起18 小时前
Dubbo动态配置实时生效全攻略:零停机实现配置热更新
分布式·微服务·性能优化·架构·dubbo
每天进步一点_JL1 天前
事务与消息中间件:分布式系统中的可见性边界问题
分布式·后端