消费者
Consumer Group
什么是 Consumer Group
Topic: orders (3 partitions)
┌───────────────────────────┐
│ P0 P1 P2 │
└───┬───────┬───────┬───────┘
│ │ │
┌───────────────┼───────┼───────┼───────────────┐
│ │ │ │ │
│ Consumer Group A │ │ │
│ ┌─────────┐ │ ┌────┴────┐ │ ┌─────────┐ │
│ │Consumer │◀─┘ │Consumer │◀─┘ │Consumer │◀┘
│ │ 1 │ │ 2 │ │ 3 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
│ Consumer Group B │
│ ┌─────────────────────────────────────────┐ │
│ │ Consumer 1 │ │
│ │ (消费所有 3 个分区) │ │
│ └─────────────────────────────────────────┘ │
└───────────────────────────────────────────────┘Consumer Group 特性
消费模型对比
模型
实现方式
适用场景
分区分配策略
Range 策略
RoundRobin 策略
Sticky 策略(推荐)
CooperativeSticky 策略
Offset 管理
Offset 概念
自动提交 vs 手动提交
手动提交方式
提交策略选择
策略
优点
缺点
适用场景
Rebalance 机制
什么是 Rebalance
Rebalance 流程
Rebalance 的影响
避免不必要的 Rebalance
消费语义
三种语义
Exactly Once 实现
完整代码示例
面试高频问题
1. Consumer Group 如何实现负载均衡?
2. Rebalance 过程中会发生什么?
3. 如何避免重复消费?
4. auto.offset.reset 的作用?
5. max.poll.records 和 max.poll.interval.ms 的关系?
总结
Last updated