Kafka的高效传输-----零拷贝(Zero Copy)

kafka使用的零拷贝底层是使用了一个叫DMA(Direct Memory Access)的技术来实现的。传统上,我们的一个一般是有如下几个步骤:

  • 读取内容,将内容加载到内核的状态下的Buffer中
  • CPU控制将内核模式数据复制到用户模式下
  • 将用户模式的数据,复制到内核模式的Socket Buffer中
  • 将内核模式下的Socket Buffer的数据复制到网卡设备中传输
Kafka的高效传输-----零拷贝(Zero Copy)_第1张图片
普通模式

而使用了零拷贝之后,省去了和用户态的复制数据交互,省去了两个过程。


Kafka的高效传输-----零拷贝(Zero Copy)_第2张图片
Zero Copy

关于DMA技术

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。 但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。

你可能感兴趣的:(Kafka的高效传输-----零拷贝(Zero Copy))