简单来说,是因为他充分利用了操作系统cache,顺序写和零拷贝技术。
可以从 存储、访问, 两个方面分析。
存储
1.数据的写入利用了操作系统提供的pageCache,属于堆外内存,降低java应用内存的管理压力,从而减少了gc带来的stop the word问题,基于内存操作,且采取顺序写入方式,效率极快。
2.底层对于数据存储,分为了数据,索引,关系映射三种类型文件,采用顺序分段存储,稀疏索引的方式式。提高数据查找的效率。
访问
3.dma+sendfile 对于磁盘数据的读取,利用DMA(直接内存访问)的系统调用sendfile,由传统的 磁盘-内核缓冲-应用缓存-socket缓冲-网卡 文件copy方式,改进为 磁盘-内核缓冲-socket缓冲-网卡,减少了 用户/内核态的转换次数和 文件copy次数。
4.dma+mmap ,利用DMA提供的mmap函数调用,允许内核态缓冲区直接引用文件句柄,与用户态缓冲区内存共享,从而实现像访问内存那样直接访问文件。减少文件copy次数和态转换。
kafka之所以快的原因
最新推荐文章于 2023-10-31 10:41:25 发布