目录
基于 ZooKeeper 管理消费 offset
原理
缺点
新版本基于内部主题管理消费 offset
原理
优点
示例代码(Java)
在 Kafka 早期版本中,消费者的消费偏移量(offset)是存储在 ZooKeeper 中的,但由于 ZooKeeper 并不适合高频读写操作,从 Kafka 0.9 版本开始,消费偏移量的管理方式发生了改变,下面为你详细介绍这两种管理方式。
基于 ZooKeeper 管理消费 offset
原理
在早期版本中,Kafka 将消费者的消费偏移量存储在 ZooKeeper 的节点中。每个消费者组(Consumer Group)在 ZooKeeper 中都有对应的节点,节点下记录了该消费者组中每个消费者对于各个分区的消费偏移量。
缺点
- 性能瓶颈:ZooKeeper 设计初衷是用于协调分布式系统,并非面向高频读写场景。频繁的偏移量更新操作会给 ZooKeeper 带来较大的压力,容易成为性能瓶颈。
- 数据一致性问题:由于 ZooKeeper 的数据更新机制,在高并发场景下可能会出现数据不一致的情况,影响消费偏移量的准确性。