1.概述
RocketMQ是阿里开源的一款高性能、高吞吐量的分布式消息中间件,具有以下特点:
1、能够保证严格的消息顺序;
2、提供丰富的消息拉取模式;
3、高效的订阅者水平扩展能力;
4、实时的消息订阅机制;
5、亿级消息堆积能力。
网上关于RocketMQ各方面(如RPC通信、消息存储、消费发送、消息消费等)的介绍非常多,也比较详细,本文在此就不重复了,感兴趣的同学可以百度一下。
本人从事架构设计多年,经过多年的经验沉淀,总结出一个运行中的软件系统,就如同人的身体一样,是一个有机的整体。一个了解人体奇经八脉的好中医,可以快速洞察人的健康状态,并进行病症诊断。软件运行过程中的线程就像人体的奇经八脉,如果我们清楚地了解软件运行过程中的所有线程,就可以快速确定系统的运行状态,并进行问题诊断。
因此,本文主要从线程的角度,描述一下Broker内部的线程模型,让大家清楚地了解Broker内部结构。
2.RocketMQ部署架构
RocketMQ典型的网络部署架构如下图所示:
在RocketMQ消息队列集群中,主要包括以下几个角色:
(1)NameServer:RocketMQ集群的命名服务器,用于管理集群的元数据,例如:Topic、Broker的注册信息。NameServer是无状态的,可能存在每个NameServer实例上的数据有短暂的不一致现象,但是通过定时更新,在大部分情况下都是一致的;
(2)Broker(Master):RocketMQ消息代理服务器主节点,负责接收Producer发送的消息、消息存储、发送消息到Consumer等;
(3)Broker(Slave):RocketMQ消息代理服务器备份节点ÿ