在深入源码前,建议先将这些总结看一遍,有一个大概的印象
- qiankunli kafka_clients
- KafkaConsumer(6~10)
- kafka消费者组机制详解 图片形象,适合理解流程
- 浅谈Kafka offset机制
- Kafka rebalance offset原理分析 介绍源码,不涉及源码,适合入门
offset思路
需要理解offset的提交机制、保存。比如commitSync、commitAsync、__consumer_offsets。
深入还能了解offset的恢复。
rebalance理解思路
消费者组需要理解两个角色:
- coordinator,负责某个消费者组的broker
- group leader,由coordinator指派负责分配方案的客户端
建组流程有两步: - JoinGroup流程
- SyncGroup流程
客户端与coordinator间除了发送Join/Sync请求,还有心跳包、提交位移请求。Join和Sync请求会对消费者组的状态产生影响,而心跳包、提交唯一请求会捕获消费者组状态的改变。
KafkaConsumer比KafkaProducer复杂,因为除了基本的发出请求、接收响应、网络IO,还引入了consumer group的概念(分布式消费),组成员的变动就引入了rebalance话题,还需要管理offset,防止丢失读取。这里每个都是话题。
主要组件
Kafka主要分为以下几个组件:

KafkaConsumer不是线程安全的,换句话说,对于组件中的调用,我们不必考虑多线程下的同步,只需以线性方式理解即可。

个人总结几个组件的功能如下:

网友评论