kafka消费者没有指定分区(kafka中partition和消费者对应关系)
kafka消费者没有指定分区(kafka中partition和消费者对应关系)
2024-11-21 05:34:34  作者:刺芯疚  网址:https://m.xinb2b.cn/know/vzo357325.html

1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果

消费者多于partition

topic: test 只有一个partition

创建一个topic——test,

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

在g2组中启动两个consumer,

1. bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer_g2.properties2. bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer_g2.properties

消费者数量为2大于partition数量1,此时partition和消费者进程对应关系如下:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group g2TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-IDtest 0 9 9 0 consumer-1-4a2a4aa8-32f4-4904-9c16-1c0bdf7128a2 /127.0.0.1 consumer-1- - - - - consumer-1-fd7b120f-fd21-4e07-8c23-87b71c1ee8a5 /127.0.0.1 consumer-1

消费者consumer-1-fd7b120f-fd21-4e07-8c23-87b71c1ee8a5无对应的partition。

用图表示为


生产者消费者对应关系1.jpg

如上图,向test发送消息:1,2, 3,4,5,6,7,8,9

只有C1能接收到消息,C2则不能接收到消息,即同一个partition内的消息只能被同一个组中的一个consumer消费。当消费者数量多于partition的数量时,多余的消费者空闲。

也就是说如果只有一个partition你在同一组启动多少个consumer都没用,partition的数量决定了此topic在同一组中被可被均衡的程度,例如partition=4,则可在同一组中被最多4个consumer均衡消费。消费者少于和等于partition

topic:test2包含3个partition

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test2

开始时,在g3组中启动2个consumer,

1.bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning --consumer.config config/consumer_g3.properties2.bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning --consumer.config config/consumer_g3.properties

则对应关系如下:

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-IDtest2 0 8 8 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1test2 1 7 7 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1test2 2 8 8 0 consumer-1-f362847d-1094-4895-ad8b-1e1f1c88936c /127.0.0.1 consumer-1

其中,consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c对应了2个partition

用图表示为:


生产者消费者对应关系2.jpg

消费者数量2小于partition的数量3,此时,向test2发送消息1,2,3,4,5,6,7,8,9

C1接收到1,3,4,6,7,9

C2接收到2,5,8

此时P1、P2对对应C1,即多个partition对应一个消费者,C1接收到消息量是C2的两倍

然后,在g3组中再启动一个消费者,使得消费者数量为3等于topic2中partition的数量3.bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning --consumer.config config/consumer_g3.properties

对应关系如下:

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-IDtest2 0 8 8 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1test2 1 7 7 0 consumer-1-ab472ed5-de11-4e56-863a-67bf3a3cc36a /127.0.0.1 consumer-1test2 2 8 8 0 consumer-1-f362847d-1094-4895-ad8b-1e1f1c88936c /127.0.0.1 consumer-1

此时,partition和消费者是一对一关系,向test2发送消息1,2,3,4,5,6,7,8,9

C1接收到了:2,5,8

C2接收到了:3,6,9

C3接收到了:1,4,7

C1,C2,C3均分了test2的所有消息,即消息在同一个组之间的消费者之间均分了!

多个消费者组

启动g4组,仅包含一个消费者C1,消费topic2的消息,此时消费端有两个消费者组

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning --consumer.config config/consumer_g4.properties --delete-consumer-offsets

g4组的C1的对应了test2的所有partition:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group g4TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-IDtest2 0 36 36 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1test2 1 35 35 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1test2 2 36 36 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1

用图表示为


生产者消费者对应关系3.jpg

如上图,向test2发送消息1,2,3,4,5,6,7,8,9

那么g3组各个消费者及g4组的消费者接收到的消息是怎样地呢?欢迎思考!!

答案:

消息被g3组的消费者均分,g4组的消费者在接收到了所有的消息。

g3组:

C1接收到了:2,5,8

C2接收到了:3,6,9

C3接收到了:1,4,7

g4组:

C1接收到了:1,2,3,4,5,6,7,8,9

启动多个组,则会使同一个消息被消费多次。

  • 摄像头如何计算焦距(监控摄像头焦距计算方法)
  • 2024-11-21监控摄像头焦距计算方法焦距(f):焦距是镜头和感光元件之间的距离,通过改变镜头的焦距,可以改变镜头的放大倍数,改变拍摄图像的大小当物体与镜头的距离很远的时候,我们可用下面公式表达:镜头的放大倍数≈焦距/物距增加镜头的焦距,。
  • 小小洋葱竟不知它有这么多功效(小小洋葱作用多)
  • 2024-11-21小小洋葱作用多洋葱中含有的谷胱甘月肽能有效抑制黑色素的合成,减少面部斑点、皮肤炎等皮肤问题洋葱虽好但也需要注意食物相克,不能和蜂蜜、海带、鱼、虾同食,会对健康不利,引起眼睛不适或者产生结石等养生的精髓就在于养,日常。
  • 心累要怎么放松(心累要怎么放松一下)
  • 2024-11-21心累要怎么放松一下随着社会节奏的不断加快,科学技术日新月异的飞速发展,人们的工作压力和生活压力越来越大,由此而带来的负面情绪也是越来越多这种负面情绪积累到一定程度,就会使身心疲惫无精打采,形成一种心累的感觉如果不及时解。
  • 日产最排面的车(日产这台小车至今仍流行)
  • 2024-11-21日产这台小车至今仍流行萨莉亚是一所我们大家都很熟悉的意式风味餐厅,里面的肉酱多利亚饭、番茄海鲜意面、黑椒鸡排配翅和提拉米苏等美味廉价菜品让萨莉亚成为了“穷人乐”西餐业界威震海内的泰山北斗然而可能许多人都不知道萨莉亚其实是一。
  • 西西里美丽传说剧情(西西里美丽传说简介)
  • 2024-11-21西西里美丽传说简介《西西里的美丽传说》是意大利电影大师朱塞佩·托纳托雷“时空三部曲”的终章说到意大利电影,也许中国观众最为熟悉的就是托纳托雷了作为浪漫主义的代表人物,他成了衰落的意大利电影最后的几位影响力出众的大师了托。
  • 金毛牙龈暗红(金毛牙龈出血怎么回事)
  • 2024-11-21金毛牙龈出血怎么回事金毛牙龈出血是怎么回事?怎么帮助金毛解决?饮食需要注意什么?金毛就是一种大型狗狗,体质特别的强壮,经常跑起来跑得很厉害金毛这种狗狗也会有牙龈出血的烦恼吗?金毛犬确实也会出现牙龈出血的问题原因也是比较多。
  • 欢迎光临结局太磨叽(欢迎光临还算完美的结局)
  • 2024-11-21欢迎光临还算完美的结局张光正被大妈点醒,路宽路窄那是命,老天不负责你的一辈子你的一辈子只有你自己负责张光正重新追回郑有恩,并坐上了以前鲶鱼精的位置,并督促郑有恩考乘务长王牛郎和娜娜一起去迪拜工作陈经典考上了研究生和豆子去上。
  • 三门峡浴海温泉(三门峡汤河裸浴温泉不是让人人都必须裸浴)
  • 2024-11-21三门峡汤河裸浴温泉不是让人人都必须裸浴河南三门峡卢氏汤河裸浴温泉度假区,从2018年9月21日开始试营业以来,受到了社会的广泛关注,特别是“裸浴”二字,让很多游客既好奇又害怕,度假区工作人员每天接到最多的咨询电话,就是询问是不是泡温泉必须。
  • 雷震子封神后当什么神(雷震子是雷神别傻了)
  • 2024-11-21雷震子是雷神别傻了传说雷震子乃是天雷将星转世,一出生就是电闪雷鸣,风雷涌动,所以在出生时姬昌给他起了雷震子这个名字后来雷震子跟随师父云中子学艺,学习的也大都是雷电一类的法术,就连手里的风雷棍也能调动雷霆之力所以在很多人。
  • 冬瓜薏米排骨汤的做法(冬瓜薏米排骨汤的烹饪方法)
  • 2024-11-21冬瓜薏米排骨汤的烹饪方法食材:排骨750g、冬瓜300g、百合40g、薏米80g、姜适量薏米和百合提前浸泡2小时排骨入冷水锅烫水去血沫捞出冲干净控水冬瓜切块,姜片备好所有材料入电饭煲加入足量水,料酒,生抽一勺,盐适量,按煲汤。