为什么 Kafka 很快?
2011 年初,LinkedIn 开源了 Kafka,这是一个分布式事件流平台。它以作家弗朗茨 - 卡夫卡(Franz Kafka)的名字命名。顾名思义,Kafka 是为写而优化的。它为解决实时数据馈送提供了一个高吞吐量、低提早的平台,在互联网公司中失去广泛应用。
Kafka 通过程序 I/O (Sequential I/O) 和零拷贝 (Zero Copy) 实现了低提早的消息传递。许多其余音讯平台通常也采纳雷同的技术。
咱们用下图的数据传输过程来解释零拷贝。
步骤 1.1 – 1.3
生产者写入数据
步骤 2
消费者读取数据,不应用零拷贝技术
- 2.1: 数据从磁盘加载到操作系统缓存
- 2.2 数据从操作系统缓存复制到 Kafka 过程
- 2.3 Kafka 过程将数据复制到套接字缓冲区 (Socket Buffer)
- 2.4 数据从套接字缓冲区复制到网卡
- 2.5 网卡向用户发送数据
步骤 3
消费者应用零拷贝技术读取数据
- 3.1: 数据从磁盘加载到操作系统缓存
- 3.2 操作系统缓存通过 sendfile() 命令间接将数据复制到网卡
- 3.3 网卡向用户发送数据
零拷贝节俭了应用程序和内核上下文之间屡次数据拷贝。
这种办法可将工夫缩短约 65%。
如果你对细节感兴趣,欢送留言通知我。
【关注公众号:ByteByteGo】