写入:
- 顺序写,性能要远远优于散列写
- 使用了操作系统的page cache
读取:
- 顺序读,kafka的数据本身就是顺序存储的,又因为page cache读数据的时候使用的是预读机制,和kafka读取的数据顺序完全契合,保证了高命中率,读取自然高效。
预读机制,page cache读取数据的时候,不会一下子把目标文件全量加载到内存中,会先加载一部分,然后后面再多加载一些,如果下一次读取正好是多加载这些内容,则称为“命中”,于是page cache会依次再从磁盘读取后面的数据,kafka的读取相当于从缓存顺序读取。这样即节约内存,又达到了高效读取。
- 零copy,kafka内部使用了大量的netty的api,这里零copy是指kafka读取数据不经过jvm,直接从操作系统page cache读取再发送给网卡。
网友评论