黑帽联盟
标题:
Kafka 为什么使用消费者组?
[打印本页]
作者:
定位
时间:
2024-8-19 22:29
标题:
Kafka 为什么使用消费者组?
1. 消费者组的特点
2024-8-19 22:26 上传
下载附件
(104.23 KB)
这是 kafka 集群的典型部署模式。
消费组保证了:
一个分区只可以被消费组中的一个消费者所消费
一个消费组中的一个消费者可以消费多个分区,例如 C1 消费了 P0, P3。
一个消费组中的不同消费者消费的分区一定不会重复,例如:
C1 -> P0、P3
C2 -> P1、P2
所有消费者一起消费所有的分区,例如 C1 和 C2 共同完成了对 P0、P1、P2、P3 的消费。
在不同消费组中,每个消费组都会消费所有的分区,例如,消费组A、消费组B 都消费了 P0、P1、P2、P3。
同一个消费组里面的消费者对分区是互斥的,例如 C1 和 C2 不会消费同一个分区;而分区在不同的消费组间是共享的。
2. 消费者组的优势
2.1 高性能
2024-8-19 22:26 上传
下载附件
(68.72 KB)
假设一个主题有10个分区,如果没有消费者组,只有一个消费者对这10个分区消费,他的压力肯定大。
2024-8-19 22:26 上传
下载附件
(100.74 KB)
如果有了消费者组,组内的成员就可以分担这10个分区的压力,提高消费性能。
2.2 消费模式灵活
假设有4个消费者订阅一个主题,不同的组合方式就可以形成不同的消费模式。
2024-8-19 22:26 上传
下载附件
(92.09 KB)
使用4个消费者组,每组里放一个消费者,利用分区在消费者组间共享的特性,就实现了广播(发布订阅)模式。
2024-8-19 22:26 上传
下载附件
(84.59 KB)
只使用一个消费者组,把4个消费者都放在一起,利用分区在组内成员间互斥的特性,就实现了单播(队列)模式。
2.3 故障容灾
如果只有一个消费者,出现故障后就比较麻烦了,但有了消费者组之后就方便多了。
消费组会对其成员进行管理,在有消费者加入或者退出后,消费者成员列表发生变化,消费组就会执行再平衡的操作。
例如一个消费者宕机后,之前分配给他的分区会重新分配给其他的消费者,实现消费者的故障容错。
2024-8-19 22:26 上传
下载附件
(86.9 KB)
3. 小结
消费者组的好处:
消费效率更高
消费模式灵活
便于故障容灾
欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/)
Powered by Discuz! X2.5