一. 顺序读写,避免了随机写的硬盘磁头的寻道,只需很少的扇区旋转。
二.Page Cache,Kafka的数据并不是实时的写入硬盘,利用OS的分页存储提高I/O效率,flush后才真正写到磁盘。
三.零拷贝,建立了磁盘空间和内存的直接映射,数据不再需要复制到"用户态缓冲区"。
四.分区分段+索引(稀疏索引)
通过分区分段的设计,Kafka的message消息实际上是分布式存储在一个一个小的segment中的,每次文件操作也是直接操作的segment。为了进一步的查询优化,Kafka又默认为分段后的数据文件建立了索引文件,就是文件系统上的.index文件。这种分区分段+索引的设计,不仅提升了数据读取的效率,同时也提高了数据操作的并行度。
五.批量读写和数据压缩
原文:https://www.cnblogs.com/shijianchuzhenzhi/p/13021962.html