Kafka学习之旅(八): 消费位移介绍

今天要分享的是 __consumer_offsets 他还有个官方的名字叫做叫位移主题,即 Offsets Topic。
在老版本中Kafka 可以手动或自动将消费的位移数据保存到zookeeper中,当consumer重启后Kafka 可以从ZK 中读取消费数据,从而在上次消费截止的地方继续消费。这种设计使得Kafka Broker 不需要保存位移数据,减少了 Broker 端需要持有的状态空间,因而有利于实现高伸缩性。
但是由于ZK是注重一致性的分布式系统,并不适合这种高并发的写入,所以Kafka 在0.8.2x 版本 开始 自己保存消费位移的数据。
实现的方式也比较简单就是将Kafka 的位移数据当作一条普通的消息。提交到 __consumer_offsets 中。可以这么说,__consumer_offsets 的主要作用是保存 Kafka 消费者的位移信息。
__consumer_offsets 是什么呢,在Kafka 中其实他也只是一个普通的Kafka 主题。他是一个内部的主题完全不需要我们担心它甚至都感受不到它的存在,但是我们也是可以创建,修改删除它的。
既然它是一个Kafka 主题那么它是怎么创建的呢。当Kafka 集群中的第一个 Consumer 程序启动时,Kafka 会自动创建位移主题。那么既然是不同的主题就对应着也会有分区的。,分区数是怎么设置的呢?这就要看 Broker 端参数 offsets.topic.num.partitions 的取值了。它的默认值是 50,因此 Kafka 会自动创建一个 50 分区的位移主题。既然有了分区数那么必然也会有副本数,,这就是
Broker 端另一个参数 offsets.topic.replication.factor 要做的事情了。它的默认值是 3。当然也是可以修改的但是建议不要因为有些地方写的是默认值可能会有其他的问题。

发布了213 篇原创文章 · 获赞 35 · 访问量 85万+

猜你喜欢

转载自blog.csdn.net/u012957549/article/details/97970824