7. kafka与零拷贝
一、零拷贝
传送门,当中提到了mmap、sendfile。这两项技术在kafka中都有应用。
二、mmap
mmap主要用于kafka向磁盘写数据。
kafka接收到producer消息后,需要处理消息,才能落盘(网卡->内核缓冲区1(kafka进程共享)->内核缓冲区2(kafka进程共享)->磁盘)。
生产者发送数据到broker,经由一次网卡到内核缓冲区的数据拷贝,然后kafka使用mmap读取内核缓冲区的数据,然后kafka修改数据,在使用mmap将数据写到磁盘。
三、sendfile
consumer 从 broker 上拉取数据,使用的是 sendfile。此时数据不必再经由用户态进程处理,直接使用sendfile,将数据从磁盘->缓冲区->网卡传输。
Loading...