从kafka说起零拷贝机制的运用

参考文章: 图解Kafka的零拷贝技术

kafka高吞吐量的原因

1、磁盘顺序写: 磁盘的顺序IO速度远大于固态硬盘随机写操作
2、消息压缩: 数据压缩减少网络传输
3、分批发送: kafka允许批量发送消息
4、分区: 多分区,并行消费
5、零拷贝机制

今天主要讲讲零拷贝机制与在kafka中的应用
传统的文件拷贝机制

在这里插入图片描述
传统的文件拷贝,从磁盘上再到网卡要经过四步
1、操作系统从磁盘将数据读取到内核空间的页缓存
2、应用程序将数据从内核空间读入用户空间缓存区
3、应用程序将读到的数据写回到socket缓冲区
4、操作系统将数据从socket缓冲区复制到网卡接口,进行数据发送

DMA技术(Direct Memory Access)

一种可让某些硬件子系统直接访问系统主内存,不依赖CPU的计算机系统功能。
在这里插入图片描述

  • 减少了用户态与内核态的转换,大大减少了CPU的工作
  • 数据直接复制一次就行,减少了复制的IO操作
kafka中的应用

通常情况下,kafka会有多个订阅者,生产者发布的消息会被不同消费者多次消费。零拷贝机制将磁盘文件数据复制到页缓存,然后直接发送到网络中(不同消费者可以用一个也缓存)
例如: 10个消费者,传统复制 4*10 = 40次,零拷贝机制,需要11次,一次从磁盘复制到页缓存,10次表示10个消费者各自读取一次。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值