Kafka为什么采用顺序写磁盘(4大核心原因)

一、高吞吐量

顺序写磁盘,能最大限度利用磁盘带宽、与操作系统缓存的预读/写回特性。

Kafka为什么采用顺序写磁盘(4大核心原因)-mikechen

显著减少,寻道与旋转延迟带来的性能开销。

通过将消息附加到日志末尾,Kafka 可以将大量写操作聚合为连续的大块 I/O。

从而实现极高的写入吞吐率,满足流式数据场景下的海量写入需求。

 

二、利用页缓存

操作系统为了加速对文件的读写访问,会使用一部分空闲内存作为页缓存 (Page Cache)。

Kafka为什么采用顺序写磁盘(4大核心原因)-mikechen

当应用程序进行写操作时,数据首先,被写入到 Page Cache 中。

然后,由操作系统异步地将 Page Cache 中的数据刷写(Flush)到磁盘。

顺序写操作由于其可预测性,操作系统可以预读(Read-Ahead)。

并将连续的数据块一起缓存到 Page Cache 中,进一步提高了 I/O 性能。

 

三、低延迟与高效复制

顺序写简化了写路径,减少系统调用与上下文切换,使单条消息的写入延迟可控。

Kafka为什么采用顺序写磁盘(4大核心原因)-mikechen

同时,对于副本复制(replication),顺序追加的日志使得增量同步变得简单。

从节点只需按序拉取并追加新数据,避免复杂的随机读写,从而提高复制效率并降低一致性维护的延迟。

 

四、可靠性与恢复速度

通过将消息持久化为不可变的顺序日志,Kafka 能以简单、可预测的方式实现数据持久化与校验点(offset)。

Kafka为什么采用顺序写磁盘(4大核心原因)-mikechen

在故障恢复时,顺序日志,允许快速定位并重放未消费的数据。

避免大量随机 I/O,显著提升恢复速度、与系统可用性。

mikechen睿哥

10年+一线大厂架构实战专家,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法