消费者组
-
kafka 使用消费者组来控制消费组消费,每个消费组都可以消费 topic 的全量信息,消费组内部的消费者再各自进行引流,消费不同的分区信息。
消费者从属于消费组,一个组里的消费者订阅的是相同的主题,每个消费者接收主题一部分的分区的消息。主题 T1 只有一个消费者组订阅,并且消费者组只有一个消费者,那么这个消费者消费 T1 的所有分区消息。
一个消费者组的消费者数量小于分区数量的情况。消费者代表什么呢?在线上环境中,消费者一般是由一个单独的线程开起来的,但是更常见的是在分布式服务场景中,一台服务器开一个线程负责消费消息,多台服务器组成一个消费组。也就是说一个集群组成一个组,集群中的每台机器都是一个消费者,这种组合是最常见的。分区再均衡:当我们的消费组里的消费者数量少于分区的数量的时候,一个消费者负责多个分区,这时候如果消费速度过慢,我们可以对消费组进行水平扩容,就是增加组内消费者的数量,可以多开几个线程也可以多加几台机器,当然,消费者数量最好和分区数持平,不要超。
当然,在由新的消费者加入群组或者旧的消费者由于某些原因宕机了离开了消费组,就会触发分区再均衡,重新分区每个消费者应该负责的分区,这里要介绍几个概念。
群组协调器:每个消费者组都有一个群组协调器,由某一台 broker 组成,不同的消费者组可以拥有不同的协调器。
群主:第一个加入消费者组的消费者会自动成为群主,负责平衡各个消费者的分区的情况,同时与群组协调器进行协调。
具体的工作场景是这样的:群主会从协调器获取到所有活跃的消费者进行,通过自己的分区策略来给每个消费者进行分区分配,分配好后告诉协调器,协调器再把这些消息告诉每个消费者,消费者只能看到自己负责的消息,群主知道所有消费者的一个情况。这个过程会在再均衡的时候重新发生。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏