简介
本文介绍RocketMQ为什么读写是在磁盘里,性能还这么好。
1.顺序读写
对磁盘读写时,如果是顺序读写,那么磁头几乎不用换道,或者换道的时间很短。读写效率会提高很多。(RocketMQ 是顺序写,读并不是,但是它的读机制类似顺序读)。
RocketMQ 将消息写入CommitLog 文件夹中的mappedFile文件(这个文件超过1G后会新建一个)时,是按照顺序写入的。不论消息属于哪个 Topic 的哪个 Queue 。都会按照顺序依次存储到CommitLog 文件夹中的mappedFile文件。
2.mmap零拷贝
RocketMQ对文件的读写操作是通过mmap零拷贝进行的,将对文件的操作转化为直接对内存地址进行操作,从而极大地提高了文件的读写效率。
mmap零拷贝详见:RocketMQ--为什么性能不如Kafka?-CSDN博客