7. kafka与零拷贝

  • java
  • kafka
  • 零拷贝

一、零拷贝

传送门,当中提到了mmap、sendfile。这两项技术在kafka中都有应用。

二、mmap

mmap主要用于kafka向磁盘写数据。

kafka接收到producer消息后,需要处理消息,才能落盘(网卡->内核缓冲区1(kafka进程共享)->内核缓冲区2(kafka进程共享)->磁盘)。

生产者发送数据到broker,经由一次网卡到内核缓冲区的数据拷贝,然后kafka使用mmap读取内核缓冲区的数据,然后kafka修改数据,在使用mmap将数据写到磁盘。

三、sendfile

consumer 从 broker 上拉取数据,使用的是 sendfile。此时数据不必再经由用户态进程处理,直接使用sendfile,将数据从磁盘->缓冲区->网卡传输。

Loading...