有人说:他曾在一台配置较好的机子上对 Kafka 进行性能压测,压测结果是 Kafka 单个节点的极限处理能力接近每秒 2000万 条消息,吞吐量达到每秒 600MB。
那 Kafka 为什么这么快?如何做到这个高的性能?
本篇文章主要从这 3 个角度来分析:
-
生产端
-
服务端
Broker
-
消费端
先来看下生产端发送消息,Kafka 做了哪些优化?
(1)生产端 Producer
先来回顾下 Producer 生产者发送消息的流程:
-
首先指定消息发送到哪个
Topic
。 -
选择一个
Topic
的分区partitiion
,默认是轮询来负载均衡。也可以指定一个分区
key
,根据key
的hash
值来分发到指定的分区。也可以自定义
partition
来实现分区策略。 -
找到这个分区的
leader partition
。 -
与所在机器的
Broker
的socket
建立通信。 -
发送
Kafka
自定义协议格式的