需要帮助来了解Kafka存储

时间:2015-11-27 18:47:18

标签: apache-kafka

我是卡夫卡的新人。来自链接:http://notes.stephenholiday.com/Kafka.pdf 提到:

  

“每次生产者向分区发布消息时,代理人   只需将消息附加到最后一个段文件即可。为了更好的   性能,我们只在a之后将段文件刷新到磁盘   可配置的消息数量已经发布或确定   时间已经过去了。消息仅向消费者公开   在它被冲洗之后。“

现在我的问题是 什么是段文件? 当我使用分区创建主题时,每个分区将具有索引文件和.log文件。  这个(.log文件)是段文件吗?如果是这样那么它已经在磁盘中了,为什么它会说“为了更好的性能,我们将段文件刷新到 磁盘“。如果它正在刷新磁盘,那么它在磁盘中的哪个位置正在刷新?  似乎在它刷新到磁盘之前,消费者无法使用它。然后我们添加一些延迟来阅读消息,但为什么呢? 还需要帮助才能理解,当消费者想要读取某些数据时,它是从磁盘读取(分区,段文件)还是有一些缓存机制,如果是这样,那么数据如何以及何时持久存储到缓存中? 我不确定所有问题是否有效,但它会帮助我理解是否有人可以清除它。

1 个答案:

答案 0 :(得分:0)

您可以将此段文件视为操作系统页面缓存。

  

Kafka的存储布局非常简单。主题的每个分区   对应于逻辑日志。在物理上,日志被实现为   大小相等的段文件集。制作人每次发布   消息到分区,代理将消息简单地附加到   最后一段文件。可配置后将段文件刷新到磁盘   已发布消息数或经过一定时间后。   邮件在刷新后会暴露给使用者。

也请参考下面的文件。 http://kafka.apache.org/documentation/#appvsosflush

  

Kafka总是立即将所有数据写入文件系统,然后   支持配置刷新策略的能力,该策略控制何时   使用刷新将数据强制从OS缓存中移出并移到磁盘上。这个   可以控制刷新策略,在经过一段时间后强制将数据强制到磁盘   时间或在写入一定数量的消息之后。有   在此配置中有几种选择。

当您在其中看到文件系统字时不要感到困惑,OS页面缓存也是文件系统,您提到的链接确实非常过时。