Kafka直接在磁盘上写入数据?

Aki*_*inn 3 filesystems ram apache-kafka

我正在查看Kafka文档,特别是在Persistence部分:

kafka doc - persistence section

如果我在最后几行中理解它说Kafka在磁盘到达时将数据写入磁盘而不是使用RAM.这对我来说听起来很奇怪(在磁盘上写入并不是繁重的操作?)但显然我相信kafka开发人员.首先,我想确认一下.

然后,假设它并验证它我在一台4GB-200GB的机器上执行了一个500kb/s数据流的简单任务几分钟,我生成了ram内存使用率(%)和磁盘空间使用量(MB)的图表.你可以在这里找到一张照片:

RAM:https://ibb.co/mzYD5m

DISK SPACE:https://ibb.co/coAMrR

(该流在第二个125摄取,在第二个870左右结束)

根据我的理解,我期望看到一个线性递减图(由于数据到达时逐渐占用空间)关于磁盘空间的使用,相反我无法解释为什么显示那些表明没有其他的平原区域空间占据了相应的秒数.

此外,继续在文件中,有一节:

linux刷新行为

这似乎解释了与"持久性"部分相反的行为.它说Linux使用pagecache(存储在我认为的RAM中)来提供磁盘缓存.这可以解释第二个图中普通区域的存在,但它违背了Kafka的原则,即避免在易失性存储器上写入.

我真的很困惑.

谢谢你,安德烈

sub*_*ero 7

Kafka总是直接写入磁盘,但记住I/O操作实际上是由操作系统执行的.在Linux的情况下,似乎数据被写入页面缓存,直到它可以写入磁盘.Kafka完成了为操作系统分配要写入磁盘的数据的工作,但它是决定何时以及如何写入数据的操作系统.希望这能回答你的问题.