为什么卡夫卡速度快?有许多设计决策对 Kafka 的性能做出了贡献。在这篇文章中,我们将重点关注两个。我们认为这两者最有分量。1。第一个是Kafka对顺序I/O的依赖。2。赋予 Kafka 性能优势的第二个设计选择是它对效率的关注:零复制原则。下图说明了数据如何在生产者和消费者之间传输,以及零拷贝的含义。
🔹步骤 1.1 - 1.3:生产者将数据写入磁盘
🔹步骤 2:消费者不进行零拷贝读取数据 2.1:将数据从磁盘加载到 OS 缓存 2.2 将数据从 OS 缓存复制到 Kafka 应用程序 2.3 Kafka 应用程序将数据复制到套接字缓冲区 2.4 数据从套接字缓冲区复制到网卡 2.5 网卡将数据发送给消费者
🔹第三步:消费者零拷贝读取数据 3.1:数据从磁盘加载到操作系统缓存 3.2 操作系统缓存直接复制通过sendfile()命令将数据发送到网卡 3.3 网卡将数据发送给消费者 零拷贝是在应用程序上下文和内核上下文之间保存多个数据副本的快捷方式。