为什么 Kafka 很快?

为什么 Kafka 很快?

 title=

2011 年初,LinkedIn 开源了 Kafka,这是一个分布式事件流平台。它以作家弗朗茨-卡夫卡(Franz Kafka)的名字命名。顾名思义,Kafka 是为写而优化的。它为处理实时数据馈送提供了一个高吞吐量、低延迟的平台,在互联网公司中得到广泛应用。


Kafka 通过顺序 I/O (Sequential I/O)和零拷贝 (Zero Copy)实现了低延迟的消息传递。许多其他消息平台通常也采用相同的技术。


我们用下图的数据传输过程来解释零拷贝。

为什么 Kafka 很快?_第1张图片

步骤 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】

你可能感兴趣的:(后端)