武知行

Kafka如何实现高吞吐量

2026年03月08日0 条评论

Kafka如何实现高吞吐量

顺序写入

Kafka在设计时采用了文件追加的方式,即只能在日志文件的尾部追加新的消息,并且也不允许修改已写入的消息,这就是顺序写的方式。

而操作系统对顺序写是有优化的,例如预读(提前将一个比较大的磁盘读入内存)和后写(将很多小的逻辑合并起来并组成一个大的物理写操作),导致顺序写盘的速度是要高于随机写内存的。

页缓存

页缓存是操作系统实现的一种主要的磁盘缓存,以此用来减少对磁盘I/O的操作。具体来说,就是把磁盘中的数据缓存到内存中,把对磁盘的访变为对内存的访问。

现在操作系统甚至会将所有可用的内存用作磁盘缓存。

零拷贝

所谓的零拷贝是指将数据直接从磁盘文件复制到网卡设备中,而不需要经由应用程序之手。零拷贝大大提高了应用程序的性能,减少了内核和用户模式之间的上下文切换。对Linux 操作系统而言,零拷贝技术依赖于底层的sendfile()方法实现。对应于Java语言,

FileChannal.transferTo() 方法的底层实现就是sendfile()方法。

References

  1. 《深入理解Kafka——核心设计与实践》

评论 (0)

登录后即可发表评论

暂无评论,来发表第一条评论吧!