# 消费者组
* 消费者组,i.e. Consumer Group
* Consumer Group 是 Kafka 提供的可扩展且具有容错性的消费者机制
* 一个组内有多个消费者实例(Consumer Instance)
* 共享一个公共的 ID,i.e. Group ID
* 组内所有 Consumer 协调一起消费订阅主题(Subscribed Topics)的所有分区(Partition)
* 每个分区只能由一个 Consumer Group 内的一个 Consumer Instance 消费
Consumer Group 三特性
* Consumer Group 下可以有 1-N 个实例
* 实例可以是单独进程,也可以是同一进程下的线程
* Group ID 是一个字符串,它标识唯一的一个 Consumer Group
* Consumer Group 下所有实例订阅的 Topic 的单个分区,只能分配给组内的某个 Instance 消费
消息引擎模型
* Consumer Group 订阅了多个 Topic 后,组内的每个 Instance 不要求一定要订阅 Topic 的所有 Partition,它只会消费部分分区中的消息
* Consumer Group 之间彼此独立不影响
* 能够订阅相同的一组 Topic 而不干涉
* Kafka 使用 Consumer Group 机制,同时实现了传统消息引擎系统的两大模型(P2P & Pub/Sub),i.e.
* 所有实例属于同一个 Group,实现的是消息队列模型
* 所有实例分别属于不同的 Group,实现的是 Pub/Sub 模型
---
* 理想情况下,Consumer 实例的数量应该等于该 Group 订阅的 Topic 的分区总数
* 针对 Consumer Group,Kafka 怎么管理 offset?
* 对于 Consumer Group,它是一组 KV 对,Key 是分区,V 是 Consumer 消费该分区的 offset
* 老版本 Kafka 将 offset 存储于 ZooKeeper
* ZK 不适合频繁读写
* 新版本将 offset 存储于 Broker 内部 Topic 中,i.e. __consumer_offset
## Rebalance
* Rebalance 触发条件 3 个
* 组成员数变化,e.g. 新 Consumer Instance 加入,或被踢除
* 订阅 Topic 数发生变更
* 订阅 Topic 的 Partition 变更
* Kafka 只允许增加一个 Topic 的分区数。当分区数增加时,就会触发订阅该 Topic 的所有 Group 开启 Rebalance
* 3 种分配策略
* 分配目的:保证最公平的分配策略
![](https://img.kancloud.cn/29/76/2976713957cd4cc8cc796aa64222611b_1478x858.png)
* Rebalance 的问题
* Rebalance 类似 JVM STW(stop the world) GC
* 所有 Consumer Instance 都会停止消费,等待分配完成
* Rebalance 过于慢
- 概览
- 入门
- 1. 消息引擎系统
- 2. Kafka 术语
- 3. 分布式流处理平台
- 4. Kafka “发行版”
- 5. Kafka 版本号
- 基本使用
- 6. 生产集群部署
- 7. 集群参数配置
- 客户端实践与原理
- 9. Consumer 分区机制
- 10. Consumer 压缩算法
- 11. 无消息丢失配置
- 12. 客户端高级功能
- 13. Producer 管理 TCP
- 14. 幂等生产者和事务生产者
- 15. 消费者组
- 16. 位移主题
- 17. 消费者组重平衡(TODO)
- 18. 位移提交
- 19. CommitFailedException
- 20. 多线程开发者实例
- 21. Consumer 管理 TCP
- 22. 消费者组消费进度监控
- Kafka 内核
- 23. 副本机制
- 24. 请求处理
- 25. Rebalance 全流程
- 26. Kafka 控制器
- 27. 高水位和 Leader Epoch
- 管理与监控
- 28. Topic 管理
- 29. Kafka 动态配置
- 30. 重设消费者组位移
- 31. 工具脚本
- 32. KafkaAdminClient
- 33. 认证机制
- 34. 云下授权
- 35. 跨集群备份 MirrorMaker
- 36. 监控 Kafka
- 37. Kafka 监控框架
- 38. 调优 Kafka
- 39. 实时日志流处理平台
- 流处理
- 40. Kafka Streams
- 41. Kafka Streams DSL
- 42. Kafka Streams 金融
- Q&A