Kafka 的高性能主要依赖于以下几个关键因素:
以上这些技术设计使 Kafka 既可以作为高吞吐的消息队列,也可以作为低延迟的发布-订阅系统,性能非常优异。
🔹步骤 1.1 - 1.3:生产者将数据写入磁盘
🔹步骤 2:消费者无零拷贝读取数据 2.1:数据从磁盘加载到操作系统缓存 2.2:数据从操作系统缓存复制到 Kafka 应用程序 2.3:Kafka 应用程序将数据复制到套接字缓冲区 2.4:数据从套接字缓冲区复制到网络卡 2.5:网络卡将数据发送给消费者
🔹步骤 3:消费者使用零拷贝读取数据 3.1:数据从磁盘加载到操作系统缓存 3.2:操作系统缓存通过 sendfile() 命令直接将数据复制到网络卡 3.3:网络卡将数据发送给消费者
零拷贝是一种节省应用程序上下文和内核上下文之间多次数据复制的方法。这种方法将时间降低了约 65%。