kafka-6 kafka快速读取解析

Kafka通过顺序读写、页缓存和零拷贝技术提高性能。顺序读写避免了磁盘随机读写的低效,页缓存利用操作系统缓存避免GC问题和对象消耗。零拷贝减少了数据在内核态和用户态间的复制,通过DMA直接从磁盘传输到网络,减少CPU参与的拷贝操作。这些优化使得Kafka具备高吞吐和低延迟特性。
摘要由CSDN通过智能技术生成


kafka作为消息中间件,虽然是基于磁盘做数据存储。但是有高性能、高吞吐、低延迟等特点。

顺序读写

磁盘顺序读写性能高于内存的随机读写
kafka将消息记录持久化到磁盘,有新消息时,通过不断追加的方式将message追加到文件磁盘末尾

页缓存(Page Cache)

kafka利用了操作系统本身的 page cache,即利用的是操作系统自身的内存而不是JVM空间内存,这样做主要有以下两点好处

  • 避免GC问题:随着JVM中数据不断增多,垃圾回收会变的缓慢而复杂,利用操作系统本身的缓存不会存在GC问题
  • 避免Object消耗:使用java堆,java对象的内存消耗比较大,通常是所存储数据的两倍甚者更多

零拷贝(sendfile)

零拷贝只减少不必要的拷贝次数。通常是减少IO读写过程中的拷贝次数。
零拷贝主要减少两部分的开销

  • 数据不再拷贝至用户态,直接在核心态之间传递
  • 数据不在通过CPU调度,通过DMA让子系统直接访问主内存,从而减少内存太直接的拷贝次数

详情可以参考以下衍变过程

常规数据文件传输

比如:读取文件,再用socket发送出去
传统方式实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值