Kafka的数据放在磁盘上还是内存上,为啥速度会快

kafka使用的是磁盘存储。

速度快是因为:

1,顺序写入,因为磁盘是机械结构,每次读写都会寻址 -> 写入,其中寻址是一个机械动作,他是耗时的,所以磁盘很讨厌 随机IO , 喜欢顺序IO,为了提高读写硬盘的速度,kafka用的就是顺序IO。

2,Memory Mapped Files(内存映射文件),64位操作系统中一般可以表示20G的数据文件,他的工作原理是直接利用操作系统的page (内存管理单元) 来实现文件到物理内存的直接映射,完成映射后,对物理内存的操作会被同步到磁盘上。

3,kafka文件的高效存储设计,kafka把一个topic中的一个partition (分区) 大文件分成多个小文件段,就容易定期清除,或者删除已经消费完的小文件。减少磁盘占用,通过索引信息,可以快速定位,message (消息) 和确定response (响应) 的大小,通过索引元数据全部映射到 memory (内存映射文件) ,可以避免segment file (部分文件) 的 磁盘 IO 操作,通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间大小。


版权声明:本文为weixin_45417821原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。