外观
Kafka 为什么性能高
Kafka
性能高的原因
- 发送端优化
- 批量发送:
Kafka
的生产者可将多个消息打包成一个批次,减少网络传输和磁盘写入次数,提升消息吞吐量和传输效率。 - 异步发送:生产者能异步发送消息,不必等待每个消息的确认,极大提高了消息发送效率。
- 消息压缩:支持对消息进行压缩,如采用
GZIP
或Snappy
格式,减少网络传输的数据量,在网络带宽有限的情况下,有效提升整体性能。 - 并行发送:通过将数据分布在不同的分区中,生产者可以并行发送消息,提高了发送的并发度,从而提高了吞吐量。
- 批量发送:
- 存储端优化
- 零拷贝技术:
Kafka
依赖Linux
内核的sendfile
系统调用,将数据从磁盘直接传输到网络套接字,避免数据在内存中多次复制,减少数据传输延迟,提高吞吐量。 - 磁盘顺序写入:消息不断追加到文件末尾,保证了磁盘顺序写,减少磁头寻道时间,充分利用磁盘顺序读写性能,速度远快于随机读写。
- 页缓存:将数据存储在磁盘中,访问时先加载到操作系统的页缓存中并保留副本,实现快速数据访问。
- 稀疏索引:存储消息通过分段日志文件,每个分段的索引文件采用稀疏索引,减少索引大小,使加载到内存中的索引更小,提高查找特定消息的效率。
- 零拷贝技术:
- 消费端优化
- 消费者群组:通过消费者群组可实现消息负载均衡和容错处理。
- 并行消费:不同消费者能独立消费不同分区,实现消费的并行处理。
- 批量拉取:支持批量拉取消息,一次性拉取多个消息进行消费,减少网络消耗。