【kafka】-分区-消费端负载均衡

2023-07-29,,

一.为什么kafka要做分区

因为当一台机器有可能扛不住(类比:就像redis集群中的redis-cluster一样,一个master抗不住写,那么就多个master去抗写),把一个队列的单一master变成多个master,即一台机器扛不住qps,那么我就用多台机器扛qps,把一个队列的流量均匀分散在多台机器上不就可以了么。

 二.消费端的负载均衡

2.1.我创建了名为的PartitionTopic的主题,在这个topic里面创建了3个分区,分别为Partition0、Partition1、Partition2,然后我在Partition0分区创建消息a,在Partition1分区创建消息b,在Partition2分区创建消息c

2.2.我启动第1个消费者,启动时让我输入消费者组名称,我输入“MyGroup“

我们看到给第1个消费者,分配了3个分区,分别是分区0、分区1、分区2。

2.2.我又启动第2个消费者,启动时让我输入消费者组名称,我同样输入“MyGroup“

我们看到给启动的第2个消费者,分配了1个分区,分区2。

当我启动第2个消费者后,第1个消费者的分区进行了重新分配,重新分配后,分配了0分区、1分区。

2.3.我又启动第3个消费者,启动时让我输入消费者组名称,我同样输入“MyGroup“

启动第3个消费者后,第1个消费者的分区又进行了重新分配,重新分配后,只剩下了0分区。

 2.4.我又启动第4个消费者,启动时让我输入消费者组名称,我同样输入“MyGroup“

启动第4个消费者后,组协调器没有给第4个消费者分配分区,也就是说第4个消费者无法消费。

总结

如下几张图所示,当同一个消费者组的消费者数量大于分区数量,那么注定多出来的消费者无法消费(消费者只能消费组协调器分配给它的分区里的消息,如果连分区都不给你分配,你也注定无法消费)

如果要做消费端的负载均衡,则分区数量最好和同一个组的消费者数量一致

【kafka】-分区-消费端负载均衡的相关教程结束。

《【kafka】-分区-消费端负载均衡.doc》

下载本文的Word格式文档,以方便收藏与打印。