kafka偏移量?

kwvwclae  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(612)

了解了Kafka偏移值是如何计算的?
从Kafka关于复制的文档中:
在kafka中添加复制的目的是为了增强持久性和更高的可用性。我们要保证任何成功发布的消息都不会丢失并且可以被消费,即使在服务器出现故障时也是如此。此类故障可能由机器错误、程序错误或更常见的软件升级引起。
Kafka关于效率的文献:
代理维护的消息日志本身只是一个文件目录,每个文件都由一系列消息集填充,这些消息集以生产者和使用者使用的相同格式写入磁盘。维护这种通用格式可以优化最重要的操作:持久性日志块的网络传输。
我没有看到任何关于如何为主题生成偏移量的细节。将由集群中的一台机器生成偏移量,在这种情况下,有一个主机或kafka具有依赖于某种时钟同步的分布式日志记录,并在所有节点之间以一致的顺序生成消息。
任何提示或附加信息都会有所帮助。

e3bfsja2

e3bfsja21#

偏移量不会显式地为每条消息生成,消息也不会存储其偏移量。
主题由分区组成,消息以垃圾的形式写入分区,称为段(在文件系统中,主题将有一个文件夹,每个分区都有子文件夹--段对应于分区文件夹中的一个文件)。
此外,每个分区维护一个索引,并与段文件一起存储,该索引使用每个段的第一条消息的偏移量作为键并指向该段。对于段内的所有连续消息,消息的偏移量可以通过其在段内的逻辑位置(包括第一条消息的偏移量)来计算。
如果启动一个新主题或实际上是一个新分区,则会生成第一个段,并将其起始偏移量0插入索引中。将消息写入段,直到它已满。一个新的段被启动,它的起始偏移量get被添加到索引中——新段的起始偏移量可以很容易地通过最新段的起始偏移量加上该段中的消息数来计算。
因此,对于每个分区,承载该分区的代理(即,该分区的前导)通过维护索引来跟踪该分区的偏移量。如果由于保留时间已过而删除了段,则会删除段文件get,并删除索引中的条目。

相关问题