Apache kafka 卡夫卡的读数如何能保持恒定而不考虑数据大小?
按照 Kafka中用于存储消息的数据结构是一个简单的日志,其中所有写操作实际上只是附加到日志中 我不明白的是,许多人声称卡夫卡的性能是恒定的,与它处理的数据大小无关 在线性数据结构中,随机读取如何保持恒定时间Apache kafka 卡夫卡的读数如何能保持恒定而不考虑数据大小?,apache-kafka,Apache Kafka,按照 Kafka中用于存储消息的数据结构是一个简单的日志,其中所有写操作实际上只是附加到日志中 我不明白的是,许多人声称卡夫卡的性能是恒定的,与它处理的数据大小无关 在线性数据结构中,随机读取如何保持恒定时间 如果我有一个包含10亿条消息的分区主题。如果读取总是连续的,那么检索第一条消息所花费的时间如何与检索最后一条消息所花费的时间相同?在Kafka中,每个分区的日志不是一个文件。它实际上被分割成固定大小的段 对于每个线段,卡夫卡都知道起点偏移和终点偏移。因此,对于随机读取,很容易找到正确的段
如果我有一个包含10亿条消息的分区主题。如果读取总是连续的,那么检索第一条消息所花费的时间如何与检索最后一条消息所花费的时间相同?在Kafka中,每个分区的日志不是一个文件。它实际上被分割成固定大小的段 对于每个线段,卡夫卡都知道起点偏移和终点偏移。因此,对于随机读取,很容易找到正确的段 然后每个段都有一对索引(基于时间和偏移量)。这些是名为
*.index
和*.timeindex
的文件。这些文件允许直接跳到所需读取位置附近(或处)
因此,您可以看到,段的总数(以及日志的总大小)实际上并不影响读取逻辑
还要注意,段的大小、索引的大小和索引间隔都是可配置的设置(即使在主题级别) 在Kafka中,每个分区的日志不是单个文件。它实际上被分割成固定大小的段 对于每个线段,卡夫卡都知道起点偏移和终点偏移。因此,对于随机读取,很容易找到正确的段 然后每个段都有一对索引(基于时间和偏移量)。这些是名为
*.index
和*.timeindex
的文件。这些文件允许直接跳到所需读取位置附近(或处)
因此,您可以看到,段的总数(以及日志的总大小)实际上并不影响读取逻辑
还要注意,段的大小、索引的大小和索引间隔都是可配置的设置(即使在主题级别)