早期的Kafka习惯于在zookeeper中存储消费者补偿,但自从kafka 0. 10或0. 11- kafka开始在一个内部主题中存储消费者补偿。
如本post-中所述
Kafka代理使用一个名为__consumer_offsets的内部主题来跟踪给定的消费者组最后成功处理了哪些消息,正如我们所知,Kafka主题中的每条消息都有一个分区ID和一个附加到它的偏移ID。
但是主题不像数据库表--它可以根据一些输入来查询数据。所以我想知道这到底是如何有效的,以及Kafka是如何为特定的消费者群体检索特定分区的偏移量的。
1条答案
按热度按时间hgb9j2n61#
Kafka Streams或内存中的哈希表可以使压缩主题非常像KV数据库存储。
使用者偏移主题是一个压缩主题,按组名作为键。当您在客户机中给予
group.id
时,控制器节点和组协调器可以轻松地按键从主题中查找该名称,并返回组的所有分区的所有当前提交的偏移。然后,使用者从返回的Map中查找分配给它的分区的偏移。这不是一个“更好”的问题,消除对Zookeeper的依赖一直是我们的目标,并且最终在Kafka 3.3.1中做好了生产准备。