Kafka如何实现高吞吐量
2026年03月08日0 条评论
Kafka如何实现高吞吐量
顺序写入
Kafka在设计时采用了文件追加的方式,即只能在日志文件的尾部追加新的消息,并且也不允许修改已写入的消息,这就是顺序写的方式。
而操作系统对顺序写是有优化的,例如预读(提前将一个比较大的磁盘读入内存)和后写(将很多小的逻辑合并起来并组成一个大的物理写操作),导致顺序写盘的速度是要高于随机写内存的。
页缓存
页缓存是操作系统实现的一种主要的磁盘缓存,以此用来减少对磁盘I/O的操作。具体来说,就是把磁盘中的数据缓存到内存中,把对磁盘的访变为对内存的访问。
现在操作系统甚至会将所有可用的内存用作磁盘缓存。
零拷贝
所谓的零拷贝是指将数据直接从磁盘文件复制到网卡设备中,而不需要经由应用程序之手。零拷贝大大提高了应用程序的性能,减少了内核和用户模式之间的上下文切换。对Linux 操作系统而言,零拷贝技术依赖于底层的sendfile()方法实现。对应于Java语言,
FileChannal.transferTo() 方法的底层实现就是sendfile()方法。
References
- 《深入理解Kafka——核心设计与实践》
评论 (0)
登录后即可发表评论
暂无评论,来发表第一条评论吧!
