若有收获,请记得分享和转发哦
这是《吃透 MQ 系列》的连载:Kafka 高性能设计的下篇。
在 上一篇文章 中,指出了高性能设计的两个关键维度:计算和 IO,可以将它们理解成「道」。同时给出了 Kafka 高性能设计的全景图,可以理解成「术」。
图 1:Kafka 高性能设计的全景图
这篇文章将继续对存储消息和消费消息的 8 条高性能设计手段,逐个展开分析,废话不多说,开始发车。
1. 存储消息的性能优化手段
存储消息属于 Broker 端的核心功能,下面是它所采用的 4 条优化手段。
1、IO 多路复用
对于 Kafka Broker 来说,要做到高性能,首先要考虑的是:设计出一个高效的网络通信模型,用来处理它和 Producer 以及 Consumer 之间的消息传递问题。
先引用 Kafka 2.8.0 源码里 SocketServer 类中一段很关键的注释:
通过这段注释,其实可以了解到 Kafka 采用的是:很典型的 Reactor 网络通信模型,完整的网络通信层框架图如下所示:
图 2:Kafka 网络通信层的框架图