阿里云消息队列RocketMQ产品架构

消息队列RocketMQ在任何一个环境都是可扩展的,生产者必须是一个集群,消息服务器必须是一个集群,消费者也同样。集群级别的高可用,是消息队列RocketMQ跟其他的消息服务器的主要区别,消息生产者发送一条消息到消息服务器,消息服务器会随机的选择一个消费者,只要这个消费者消费成功就认为是成功了。

系统部署架构

NameServer:是一个几乎无状态节点,可集群部署,在消息队列RocketMQ中提供命名服务,更新和发现Broker服务。

Broker:消息中转角色,负责存储消息,转发消息。分为Master Broker和Slave Broker,一个Master Broker可以对应多个Slave Broker,但是一个Slave Broker只能对应一个Master Broker。Broker启动后需要完成一次将自己注册至NameServer的操作;随后每隔30s定期向NameServer上报Topic路由信息。

生产者:与NameServer集群中的其中一个节点(随机)建立长链接(Keep-alive),定期从NameServer 读取Topic路由信息,并向提供Topic服务的Master Broker建立长链接,且定时向Master Broker发送心跳。

消费者:与NameServer集群中的其中一个节点(随机)建立长连接,定期从NameServer拉取Topic路由信息,并向提供Topic服务的Master Broker、Slave Broker建立长连接,且定时向Master Broker、Slave Broker发送心跳。Consumer 既可以从Master Broker订阅消息,也可以从Slave Broker订阅消息,订阅规则由Broker配置决定。