kafka重平衡经验总结

文章目录

概要

关于kafka重平衡问题在实践工作的应用

背景

重平衡包括以下几种场景:

  1. 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的,就是某个消费者崩溃退出了
  2. 主题的分区数发生变更,kafka目前只支持增加分区,当增加的时候就会触发重平衡
  3. 订阅的主题发生变化,当消费者组使用正则表达式订阅主题,而恰好又新建了对应的主题,就会触发重平衡

在实际工作应用中, 第一点出现的情况会比较多, 因为2,3经常就是初始化时候会触发一次,正常运行下是不会出现2,3的, 1增加和减少消费者, 在涉及新服务接入等场景时, 会触发。

导致1情况出现的具体场景有:

  1. 某个消费者服务重启
  2. 某个服务在进行消费时(消费消息的过程就是对消息的计算或者说CSUD), 这个消息卡顿住了, 进而超时, 影响了整个消费者
    例如: 500 max.poll.interval.ms 默认值5分钟,表示若5分钟之内消费者没有消费完上一次poll的消息,那么consumer会主动发起离开group的请求

解决方法

提示:这里可以添加技术名词解释

例如:

  • 抑制重试机制,在工作中,一个消费者太长时间不去进行消费, 会被强制踢掉下线,这样就会导致消费者的减少, 进而整个消费者组都进行重平衡
  • 优化架构, 很多架构都是下游处理单元直接作为消费者进行消费, 例如下游A,B,C三个服务直接消费kafka, 那么其中一个服务除了问题, 都有可能会影响到其余两个服务的消费, 这种情况下, 可以考虑通过优化架构的方式实现, 重新建立一个服务, 只负责作为消费者拉取消息,那么,流程就是kafka->D->A,B,C, D只负责拉取消息, 并存储(存储到redis, mysql, ES等存储组件中), 下游的A,B,C再去这些存储组件拉取消息并进行处理
  • 消费者消费逻辑优化 消费消息时, 可以先把消息存储下来, 后续在进行处理
  • GPT-3
  • ChatGPT

技术细节

小结

kafka重平衡无法避免, 但可以通过多个手段来保证稳定性, 包括业务层的优化, 架构的优化和kafka组件配置的设置等

相关推荐
初晴~1 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
有一个好名字2 小时前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
漫无目的行走的月亮3 小时前
Ubuntu下C语言操作kafka示例
kafka·librdkafka
yukai080085 小时前
【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错
分布式·kafka
老猿讲编程6 小时前
OMG DDS 规范漫谈:分布式数据交互的演进之路
分布式·dds
C++忠实粉丝6 小时前
服务端高并发分布式结构演进之路
分布式
洛神灬殇7 小时前
彻底认识和理解探索分布式网络编程中的SSL安全通信机制
网络·分布式·ssl
龙哥·三年风水8 小时前
workman服务端开发模式-应用开发-vue-element-admin封装websocket
分布式·websocket·vue
李洋-蛟龙腾飞公司11 小时前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移
分布式·华为·harmonyos
技术路上的苦行僧13 小时前
分布式专题(10)之ShardingSphere分库分表实战指南
分布式·shardingsphere·分库分表