kafka中consumer和partition的对应关系
参考文章:https://www.cnblogs.com/gxyandwmm/p/11442328.html
一个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果。
1. 消费者多于partition
1> 创建一个名称为test的topic, 该topic只有一个partition:
[root@bigdata02 ~]# bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1 --partitions 1 --topic test
2> 在g2组中启动两个consumer
1. [root@bigdata02 ~]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer_g2.properties2. [root@bigdata02 ~]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer_g2.properties
3> 消费者数量为2大于partition数量1,此时partition和消费者进程对应关系如下:
[root@bigdata02 ~]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092
--describe --group g2TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test 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。
用图表示为
如上图,向test发送消息:1,2, 3,4,5,6,7,8,9只有C1能接收到消息,C2则不能接收到消息,
结论:
即同一个partition内的消息只能被同一个组中的一个consumer消费,当消费者数量多于partition的数量时,多余的消费者空闲。
也就是说如果只有一个partition你在同一组启动多少个consumer都没用,partition的数量决定了此topic在同一组中被可被均衡的程度,例如partition=4,则可在同一组中被最多4个consumer均衡消费。
2. 消费者少于和等于partition
1> topic:test2包含3个partition
[root@bigdata02 ~]# bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1 --partitions 3 --topic test2
2> 开始时,在g3组中启动2个consumer
1.[root@bigdata02 ~]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning --consumer.config config/consumer_g3.properties2.[root@bigdata02 ~]# 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-ID
test2 0 8 8 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1
test2 1 7 7 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1
test2 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小于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的两倍
3> 在g3组中再启动一个消费者,使得消费者数量为3等于topic2中partition的数量
[root@bigdata02 ~]# 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-ID
test2 0 8 8 0 consumer-1-8b872ef7-a2f0-4bd3-b2a8-7b26e4d8ab2c /127.0.0.1 consumer-1
test2 1 7 7 0 consumer-1-ab472ed5-de11-4e56-863a-67bf3a3cc36a /127.0.0.1 consumer-1
test2 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的所有消息,即消息在同一个组之间的消费者之间均分了!
3.多个消费者组
1> 启动g4组,仅包含一个消费者C1,消费topic2的消息,此时消费端有两个消费者组
[root@bigdata02 ~]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092
--topic test2 --from-beginning --consumer.config config/consumer_g4.properties
--delete-consumer-offsets
2> g4组的C1的对应了test2的所有partition:
[root@bigdata02 ~]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092
--describe --group g4TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test2 0 36 36 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1
test2 1 35 35 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1
test2 2 36 36 0 consumer-1-befc9234-260d-4ad3-b283-b67a2bf446ca /127.0.0.1 consumer-1
用图表示为
如上图,向test2发送消息1,2,3,4,5,6,7,8,9
消息被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
启动多个组,则会使同一个消息被消费多次,即组与组之间的消息是否被消费是相互隔离互不影响的。
那么,在消息消费的过程中,如果有一个consumer宕机了kafka会如何应对呢?
此处可参考:Kafka Consumer Group和Consumer Rebalance机制
kafka中consumer和partition的对应关系相关推荐
- Kafka中topic的Partition,Kafka为什么这么快,Consumer的负载均衡及consumerGroup的概念(来自学习笔记)
1.1. Kafka中topic的Partition 在Kafka文件存储中,同一个topic下有多个不同partition,每个partition为一个目录,partiton命名规则为topic ...
- kafka中topic、partition、broker、consumerGroup、consumer之间的关系、区别及存在意义
概念理解 topic: 逻辑概念,用于联系Producer 和 Consumer的message生产和消费.Producer 生产的消息放入一个topic中,由Consumer通过对同一个topic的 ...
- kafka中Topic、Partition、Groups、Brokers概念辨析
kafka消息队列有两种消费模式,分别是点对点模式和订阅/发布模式.具体比较可以参考Kafka基础–消息队列与消费模式. 下图是一个点对点的Kafka结构示意图,其中有以下几个部分: producer ...
- kafka partition java,kafka中partition数量与消费者对应关系以及Java实践
kafka中partition数量与消费者对应关系以及Java实践 kafka中partition数量与消费者对应关系以及Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台.k ...
- 关于kafka中的timestamp与offset的对应关系
关于kafka中的timestamp与offset的对应关系 @(KAFKA)[storm, kafka, 大数据] 关于kafka中的timestamp与offset的对应关系 获取单个分区的情况 ...
- kafka中leader和follower、AR、ISR、OSR、Controller的选举、为什么不能通过ZK的方式来选举partition的leader?
leader和follower 在Kafka中,每个topic都可以配置多个分区以及多个副本.每个分区都有一个leader以及0个或者多个follower,在创建topic时,Kafka会将每个分区的 ...
- 8.解析Kafka中的 Topic 和 Partition
目录 1.什么是Topic 2.什么是Partition 3.Consumer Group 消费者组 4.Topic 和 Partition 的存储 5.producer消息分发策略 6.消费者如何消 ...
- 解析Kafka中的 Topic 和 Partition
topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据 1.什么是Topic ...
- kafka中topic默认属性_kafka consumer 配置详解
1.Consumer Group 与 topic 订阅 每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group.所以一条message ...
最新文章
- C#之 HashSet(临时笔记,未参考资料,请慎重)
- 发现一个有意思的博主(科研工作者)
- python批量命名变量_python变量命名的7条建议
- Windows下安装配置SBT
- 前些日子接了一单私单
- 系统集成项目管理工程师-项目采购管理笔记
- 对xml文件的sax解析(增删改查)之一
- linux 下安装JDK
- tpcc mysql优化_tpcc_mysql性能测试
- json在线解析工具大集合
- Oracle RMAN 维护(二)--恢复目录的维护
- iptables第二部分
- 10. zf workflow
- IIS网站设置禁止IP访问设置方法
- IMU、INS、DGPS和POS
- 讨教大学|FMEA成功实施的关键是什么?
- nmap 扫描主机端口(谨慎使用)
- 等差乘等比数列求和公式
- 亲密接触Redis-第一天
- 是时候重估“返利网”的市场价值了
热门文章
- 数据挖掘的过程是什么?通俗易懂
- java 算出下一个工作日_Java 计算一段时间段内除去周六日、节假日的工作日数———超详细(全)...
- ctf show-web入门 php特性篇部分题解
- 知名大数据厂商云宏加入龙蜥社区,共同打造信息安全坚实“地基”
- 使用Python获取微信朋友圈的内容
- 【PMAC学习笔记——第0篇】初识PMAC运动控制卡以及 Microsoft Visual C++ 2019,PeWin32 PRO2环境搭建
- 洛谷每日三题之第一天
- Telegram-“只能给双向联系人发送消息”的错误信息
- 最新苹果手机备份同步工具 iMazing2.16.4官方免费下载
- list列表 for循环