kafka之所以快的原因

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值