[TOC]
所谓的再平衡,指的是在kafka consumer所订阅的topic发生变化时发生的一种分区重分配机制。一般有三种情况会触发再平衡:
- consumer group中的新增或删除某个consumer
- consumer订阅的topic发生变化
- consumer所订阅的topic发生了新增分区的行为
Kafka提供的再平衡策略主要有三种:Round Robin
,Range
和Sticky
,默认使用的是Range
。这三种分配策略的主要区别在于:
Round Robin
:会采用轮询的方式将当前所有的分区依次分配给所有的consumer;Range
: range 方式是按照主题来分的,不会产生轮询方式的消费混乱问题- Sticky
- 分区分配尽量均衡,主题分区数量相差最大为1个
- 分区分配尽量保持和上次分区保持一致
- 如果第一点和第二点冲突,则第一点优先考虑
(1) RoundRobin
RoundRobin 轮询方式将分区所有作为一个整体进行 hash 排序,消费者组内分配分区个数最大差别为1,是按照组来分的,可以解决多个消费者消费数据不均衡的问题。
但是,当消费者组内订阅不同主题时,可能造成消费混乱,如下图所示,consumer0 订阅主题A,consumer1 订阅主题B,将 A、B主题的分区排序后分配给消费者组,TopicB 分区中的数据可能分配到 consumer0 中。
(2)Range
range 方式是按照主题来分的,不会产生轮询方式的消费混乱问题。
但是,如下图所示,consumer0、consumer1 同时订阅了主题A和B,可能造成消息分配不对等问题,当消费者组内订阅的主题越多,分区分配可能越不均衡。
作者:臧小晶
链接:https://juejin.cn/post/6844904050064883725
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。