c1 | c2 | c3 | |
range策略 | p0、p1 | p2、p3 | p4 |
roundrobin策略 | p0、p3 | p1、p4 | p2 |
可能你会觉得两种策略差不多,两种策略都是:c1两个分区、c2两个分区、c3一个分区
下面再来看多个TOPIC的情况:
c1 | c2 | c3 | |
range策略 | p1_0、p1_1、p2_0、p2_1 | p1_2、p1_3、p2_20、p2_3 | p1_4、p2_4 |
roundrobin策略 | p1_0、p1_3、p2_1、p2_4 | p1_1、p1_4、p2_2 | p1_2、p2_0、p2_3 |
在多TOPIC下,两种策略就体现出不一样了。
range策略下:c1四个分区、c2四个分区、c3两个分区
roundrobin策略下:c1四个分区、c2三个分区、c3三个分区
range策略:对多个主题,分别按分区进行按范围划分,可能出现消费者之间分区数相差较大。(默认)
roundrobin策略:对多个主题作为一个整体,根据主题+分区进行排序,然后分配给消费者。极端情况下可能会出现错误分配。所以kafka默认的消费者分区策略是range。