我到处读到Kafka在消费者轮询消息时执行零拷贝读取,但我试图了解在生产者写入消息时是否发生零拷贝(因此忽略消费者端)。
我看到了 Filechannel.transferTo
将执行零拷贝,但这只是管道流,但是代理是否需要在刷新数据之前进行一些检查呢?比如说,如果缓冲区的长度>m,则flush否则保留在缓冲区中,或者说一些其他健全性检查或涉及缓冲区的一些其他应用程序逻辑。要做到这一点,缓冲区需要在用户空间中可访问(假设kafka没有为此目的使用mmap)?如果是这样,那么内核缓冲区需要复制到用户空间吗?写端基本上没有零拷贝。
暂无答案!
目前还没有任何答案,快来回答吧!