Apache kafka Apache Kafka偏移量是如何生成的?

Apache kafka Apache Kafka偏移量是如何生成的?,apache-kafka,Apache Kafka,通过 在复制时,请从中选择: 在Kafka中添加复制的目的是为了增强耐用性和更高的可用性。我们希望保证任何成功发布的消息都不会丢失,甚至在服务器出现故障时也可以被使用。此类故障可能由机器错误、程序错误或更常见的软件升级引起 从效率的角度来看: 代理维护的消息日志本身只是一个文件目录,每个文件都由一系列消息集填充,这些消息集以生产者和消费者使用的相同格式写入磁盘。维护这种通用格式可以优化最重要的操作:持久性日志块的网络传输 我没有看到任何关于如何为主题生成偏移量的详细信息。将由集群中的一台机器生

通过

在复制时,请从中选择:

在Kafka中添加复制的目的是为了增强耐用性和更高的可用性。我们希望保证任何成功发布的消息都不会丢失,甚至在服务器出现故障时也可以被使用。此类故障可能由机器错误、程序错误或更常见的软件升级引起

从效率的角度来看:

代理维护的消息日志本身只是一个文件目录,每个文件都由一系列消息集填充,这些消息集以生产者和消费者使用的相同格式写入磁盘。维护这种通用格式可以优化最重要的操作:持久性日志块的网络传输

我没有看到任何关于如何为主题生成偏移量的详细信息。将由集群中的一台机器生成偏移量,在这种情况下,有一台主机或Kafka具有分布式日志记录,该日志记录依赖于某种时钟同步,并在所有节点之间以一致的顺序生成消息


任何提示或附加信息都会有所帮助

不会为每条消息显式生成偏移量,消息也不会存储其偏移量

主题由分区组成,消息以垃圾的形式写入分区,称为段(在文件系统中,主题有一个文件夹,每个分区都有子文件夹——段对应于分区文件夹中的一个文件)

此外,每个分区维护一个索引,并与段文件一起存储,该索引使用每个段的第一条消息的偏移量作为键并指向该段。对于段内的所有连续消息,可通过其在段内的逻辑位置(包括第一条消息的偏移量)计算消息的偏移量

如果启动一个新主题或实际上是一个新分区,将生成第一个段,并将其起始偏移量零插入索引中。将消息写入段中,直到其已满。一个新段被启动,它的起始偏移量get被添加到索引中——新段的起始偏移量可以很容易地通过最新段的起始偏移量加上该段中的消息数来计算


因此,对于每个分区,承载该分区的代理(即,该分区的前导)通过维护索引来跟踪该分区的偏移量。如果由于保留时间已过而删除了段,则会删除段文件并删除索引中的条目。

如果我根本没有指定任何分区,您能否用一个主题和默认分区示例详细说明这一点。我是一个新手,因此很难想象这一点。我不确定我是否理解你的问题。这是否有助于: