Kafka分区分配策略之Range

本文介绍了在Kafka中,特别是使用Range分区分配策略时,如何在一个consumergroup中处理多个消费者和多个partition的数据分配。通过本地测试,作者详细描述了分区如何根据策略被分配给消费者,以及消费者组在消费者退出后的数据处理机制。
摘要由CSDN通过智能技术生成

        在Kafka的一个consumer group中有多个consumer组成,一个 topic有多个partition组成,现在的问题是,到底由哪个consumer来消费哪个partition的数据

Kafka有四种主流的分区分配策略: RangeRoundRobinStickyCooperativeSticky。可以通过配置参数partition.assignment.strategy,修改分区的分配策略。默认策略是Range + CooperativeSticky。

这里简单对"Range"这一种分配策略进行本地测试。场景为:"first" topic下7个Partition,一个消费组下3个consumer

先将 fisrt 主题修改为7个分区

将一个消费组下的三个consumer启动起来

同时启动生产者发送500条数据

Range的分配策略:通过 partitions数/consumer数 来决定每个消费者应该消费几个分区。如果除不尽,那么前面几个消费者将会多消费 1 个分区

consumer0      5和6分区

consumer1      3和4分区

consumer2      0、1和2分区

分区和消费者的编号在kafka内部会重新编排

在其中一个消费者被停后,45秒(消费者组需要按照超时时间 45s 来判断它是否退出,所以需要等待,时间到了 45s 后,判断它真的退出就会把任务分配给其他 broker 执行)后会将该消费者的消费数据分配给组内其他成员。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值