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


    一.为什么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个分区,是分区1。

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

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

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

    • 总结

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

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

     

     

     

  • 相关阅读:
    快手如何快速的进行引流,并且推荐几款我正在用的工具。
    隐私计算推动金融转型
    【C++】STL — string的使用 + 模拟实现
    spring bean管理2
    网站开启HTTPS,免费的 SSL证书 申请渠道有哪些?
    完整记录一下Web前端直传阿里OSS大文件+采用后端临时授权传stsToken的方式
    使用 2 个 HSplitView 在 swiftUI 中创建一个 3 窗格界面
    RK3588 DRM显示框架
    [附源码]Python计算机毕业设计Django人员信息管理
    rsync同步目录脚本
  • 原文地址:https://www.cnblogs.com/menglin2010/p/17354885.html