首页 > 其他分享 >【kafka】-分区-消费端负载均衡

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

时间:2023-04-26 10:57:56浏览次数:34  
标签:负载 消费者 启动 MyGroup 分区 kafka master 输入

一.为什么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个消费者无法消费。

  • 总结

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

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

 

 

 

标签:负载,消费者,启动,MyGroup,分区,kafka,master,输入
From: https://www.cnblogs.com/menglin2010/p/17354885.html

相关文章

  • kafka入门例子 for java
    1,生产者importjava.util.Properties;importkafka.javaapi.producer.Producer;importkafka.producer.KeyedMessage;importkafka.producer.ProducerConfig;publicclassTestProducer{publicstaticvoidmain(String[]args){Propertie......
  • Linux分区重要总结
    df-h :以比较容易读的格式显示目录和使用情况df -i  :显示每个分区和目录的inode使用情况lsblk  -f  列出所有磁盘的分区信息fdisk-l  列出系统里面的磁盘信息分区的类型:  Linux的分区id是83  ,交换分区的类型是82   逻辑分区的类型是8e ......
  • Kafka消费者
    1. 消费方式  consumer采用pull(拉)模式从broker中读取数据。  push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则......
  • Kafka生产者
    1.分区策略分区的原因  方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据。  可以提高并发,因为可以以Partition为单位读写了分区的原则指明partition的情况下,直接将指......
  • Kafka架构深入
     1.消息队列1.1传统消息队列的应用场景MQ传统应用场景之异步处理1.2消息队列的两种模式1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)  消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所......
  • nginx负载均衡
     //默认为轮询,权重默认值为1upstreamservers{server192.168.1.101:80weight=4down;//不参与随机server192.168.1.102:80weight=2;server192.168.1.102:80weight=1backup;//备用}ip_hash:根据客户端的IP地址转发同一台服务器,可以保存会话。least_co......
  • 磁盘分区操作
    Linux命令大全:https://www.linuxcool.com注:fdisk命令只支持MBR分区,MBR分区表最大支撑2T的磁盘,parted工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。1.磁盘分区-fdisk命令介绍:https://www.linuxcool.com/fdisk这里使用lsblk命令查看,一共有两块磁盘,一块......
  • springboot项目配置多个kafka
    1.spring-kafka<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>1.3.5.RELEASE</version></dependency>2.配置文件相关信息kafka.bootstrap-servers=local......
  • elasticsearch+filebeat+kafka+kibana——filbeat篇章——overview
    filbeat篇章——overviewhttps://www.elastic.co/guide/en/beats/filebeat/8.7/filebeat-overview.html#filebeat-overview Filebeatisalightweightshipperforforwardingandcentralizinglogdata.Installedasanagentonyourservers,Filebeatmonitorsthelog......
  • SpringCloud 微服务 负载均衡问题 坑死老子了!(铁大软工刘雪丰)
    fetch-registry:true是默认的,刚开始学,你会发现虽然能运行,但是会抛异常,所以我就改成false了。改为false确实不抛异常。但是!!!,如果用负载均衡改进代码,就必须设为true,因为它会报错:Noinstancesavailablefor...,连运行都运行不了。我在网上找了很久,防火墙,依赖重复,依赖版本等方法我都试......