kafka消费端之再均衡

文章目录

再均衡是指分区的所属权从一个消费者转移到另一消费者的行为,它为消费组具备高可用性和伸缩性提供保障,使我们可以既方便又安全地删除消费组内的消费者或往消费组内添加消费者。不过 在再均衡发生期间,消费组内的消费者是无法读取消息的 。也就是说, 在再均衡发主期间的这一小段时间内,消费组会变得不可用 。另外, 当一个分区被重新分配给另一个消费者时,消费者当前的状态也会丢失。比如消费者消费完某个分区中的一部分消息时还没有来得及提交消费位移就发生了再均衡操作,之后这个分区又被分配给了消费组内的另一个消费者,原来被消费完的那部分消息又被重新消费一遍,也就是发生了重复消费。一般情况下,应尽量避免不必要的再均衡的发生。

在消费端代码的subscribe()方法中存在再均衡监听器ConsumerRebalanceListener, 在subscribe(Collection topics,ConsumerRebalanceListener listener)和subscribe(Pattern pattem,ConsumerRebalanceListener listener)方法中都有它的身影。再均衡监听器用来设定发生再均衡动作前后的一些准备或收尾的动作。ConsumerRebalanceListener是一个接口,包含2个方法:

  • (1) void onPartitionsRevoked(Collection partitions)
    这个方法会在再均衡开始之前和消费者停止读取消息之后被调用。可以通过这个回调方法来处理消费位移的提交,以此来避免一些不必要的重复消费现象的发生。参数partitions表示再均衡前所分配到的分区。我们可以在这个方法中实现在发生再均衡前把已经消费得offset提交给服务端,防止再均衡后重复消费
  • (2) void onPartitionsAssigned(Collection partitions)
    这个方法会在重新分配分区之后和消费者开始读取消费之前被调用。参数partitions表示再均衡后所分配到的分区。
相关推荐
九皇叔叔17 小时前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base
hey you~17 小时前
云客服多渠道统一接入,消息队列技术实现方案
kafka·消息队列·rocketmq·系统集成·云客服·多渠道接入·接口对接
刃神太酷啦19 小时前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
海宇大数据1 天前
分布式网关架构实战:基于海宇数据公安二要素认证即时版构建自动化司机准入网关
人工智能·分布式·架构·自动化
雾隐隐o1 天前
Kafka 消费者消息丢失:Offset 原理与解决方案
kafka
木圭的AI时代指南1 天前
Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务
大数据·分布式·spark
KANGBboy2 天前
doris+kafka安装部署(单机+集群)二时钟服务器 java_home
服务器·分布式
爱笑的k112 天前
分布式通信原语
分布式·ai infra
实战派K8S&DB2 天前
GaussDB 高可用演进:从流复制到 DCF 分布式共识
分布式·gaussdb
写后端的胖头鱼2 天前
【高频面试题】分布式锁在项目中的应用
java·分布式·后端·分布式锁·高频面试题