概述
生产者
消费者群组再均衡
消费者的配置
深入理解Kafka
几个概念
消费者组
多个消费实例共享一个GroupId,多个消费实例组织在一起协调消费订阅的主题和分区。
消费实例可以是一个进程也可以是一个线程
GroupId是一个字符串,唯一标识一个消费组
GroupId.consumerInstance:GroupId.partition = 1:N,也就是说同一个消费者实例和partition的对应关系是1:N
offset
位移(offset):consumer记录消费消息的位置
kafka的位移机制:
- consumer实例保存自己的offset,通过checkPoint机制定期持久化
- 新版本的kafka通过topic定期持久化到broker
- 老版本的kafka是持久化到zk的,但是zk并不适合频繁的写
rebalance
一个groupId内有多个consumer,其订阅topic有多个partition,那么那个消费者消费那个partition呢?rebalance就是做consumer和partition的匹配。
什么时候rebalance
- 组成员的变更(consumer的加入或者离开、崩溃)
- 订阅的partition发生变更
- 订阅的topic发生变更(按照正则方式订阅时是可能发生的)
如何rebalance
consumerClient有两种策略可选,通过partition.assignment.strategy配置;默认是Range策略
- Range strategy:按照topic维度均分partition,问题是可能出现分配不均的问题
- RoundRobin:所有partition均分,分配的更均匀
谁来执行rebalance和consumer group管理
每个consumer group都会被分配一个coordinator用于组管理和位移管理。
当新版本consumer group的第一个consumer启动的时候,它会去和kafka server确定谁是它们组的coordinator,之后该group内的所有成员都会和该coordinator进行协调通信。
谁是coordinator
consumer group位移信息写入__consumers_offsets的分区为partition,该partition的leader所在的broker就是该组的coordinator。
Kafka消费者群组深入解析
本文详细介绍了Kafka中消费者群组的概念及其工作原理,包括消费者实例与主题分区的关系、位移(offset)机制、再均衡(rebalance)过程以及协调者(coordinator)的角色。深入探讨了消费者群组在消费实例加入或离开、主题或分区变更时的再均衡时机及策略。

被折叠的 条评论
为什么被折叠?



