Kafka消费者
消费方式
- pull(拉)模式:==consumer从Broker中主动拉取数据。==【Kafka采用这种方式】
- push(推)模式:==Kafka没有采用这种方式,因为由Broker决定消息的发送速率,很难适应所有消费者的消费速率。==
- 比如A、B、C,三个消费者的消费能力不同,如果按照高的速率推送,那其余的可能会造成系统宕机,如果采用低的,那其余的性能没有完全使用。
- 拉的方式消费者就可以各自根据自己的消费能力去拉取数据。
==pull模式的不足之处是,如果Kafka没有数据,消费者可能会陷入循环中,一直空转。==
消费者的工作流程

消费者组
Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,是所有消费者的groupid相同。
- 消费者组内每个消费者==可以消费不同分区==的数据,==一个分区==只能由==一个组内的一个消费者==消费。
- ==消费者组之间互不影响==。所有的消费者都属于某个消费者组,即==消费者组是逻辑上的一个订阅者==。

消费者组初始化流程

1、coordinator:辅助实现消费者组的初始化和分区的分配。
coordinator节点选择 = groupid 的 hashcode值 % 50(__consumer_offsets的分区数量)
例如:groupid的hashcode值=1,1%50=1,那么__consumer_offsets 主题的1号分区的Leader在哪个broker上,就选择这个节点的coordinator作为这个消费者组的老大。消费者组下的任意的消费者==提交offset的时候==都往这个分区提交。

消费者组的详细消费流程

注意
-
消费者API代码中必须配置消费者组id。命令行启动消费者不填写消费者组id是因为自动生成了随机的消费者组id。
-
生产者可以将数据发送到指定分区,消费者也可以消费指定分区的数据
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
