Kafka 精妙的高性能设计(下篇)

384次阅读  |  发布于2年以前

这是《吃透 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 网络通信层的框架图

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8