产品架构

本文介绍 SOFAStack 消息队列的系统部署架构,方便您更好地理解消息队列的高可用性。

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

说明

文中所提及的消息队列的服务端或者服务器包含 Name Server、Broker 等。服务端不等同于 Broker。

系统部署架构

系统部署架构如下图所示。

部署架构

图中所涉及到的概念如下所述:

  • NameServer:是一个几乎无状态节点,可集群部署,在消息队列中提供命名服务,该组件内置 zookeeper 用来负责 Broker 的选主和集群管理。

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

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

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

SOFAMQ 还包含如下两个未在图中展示的组件,主要功能如下:

  • Console:SOFAMQ 的图形化管理控制台。

  • Router:LDC 场景下,根据配置的 Router 规则,进行逻辑单元之间消息转发,使 SOFAMQ 支持 LDC 能力的组件。

更多信息

消息队列中的概念详情,请参见 基础术语