当kafka代理从producer获取消息时,它是否对页缓存/磁盘执行零拷贝写入?如果是的话,它是如何做任何健全检查的?

oewdyzsn  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(87)

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题