架构介绍

2024年9月26日

用户问题 :

架构介绍


专家官方解答 :

RocketMQ 的架构设计非常注重高可用性、高性能和可扩展性。下面将基于提供的知识内容,详细介绍 RocketMQ 的技术架构和部署架构。

1. 技术架构

RocketMQ 架构主要分为四个部分:Producer(生产者)Consumer(消费者)NameServerBrokerServer

  • Producer:负责消息的发布,支持分布式集群方式部署。通过负载均衡模块选择相应的 Broker 集群队列进行消息投递。
  • Consumer:负责消息消费,同样支持分布式集群方式部署。支持推(push)和拉(pull)两种模式的消息消费,并且可以以集群或广播的方式消费消息。
  • NameServer:作为 Topic 路由注册中心,类似于 Dubbo 中的 Zookeeper。它接受 Broker 的注册信息并保存下来作为路由信息的基础数据,同时提供心跳检测机制检查 Broker 是否存活。NameServer 通常也是集群方式部署,每个实例间不直接通信,但都保存一份完整的路由信息。
  • BrokerServer:是 RocketMQ 的核心服务端组件,主要职责包括消息存储、消息投递、查询以及服务的高可用保证。其内部包含几个重要子模块:
    • Remoting Module:处理来自客户端的请求。
    • Client Manager:管理 Producer/Consumer 客户端及其订阅信息。
    • Store Service:提供 API 接口用于消息存储到物理硬盘及查询功能。
    • HA Service:实现 Master Broker 与 Slave Broker 之间的数据同步。
    • Index Service:根据特定 Message key 对消息进行索引以便快速查询。

2. 部署架构

2.1 单Master模式

这是最简单的部署方式,但风险较高。一旦 Broker 服务器宕机,整个服务将不可用。仅适用于开发测试环境。

启动步骤:

  1. 启动 NameServer。
    Terminal window
    $ nohup sh mqnamesrv &
  2. 验证 NameServer 是否启动成功。
    Terminal window
    $ tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
  3. 启动 Broker。
    Terminal window
    $ nohup sh bin/mqbroker -n localhost:9876 &
  4. 验证 Broker 是否启动成功。
    Terminal window
    $ tail -f ~/logs/rocketmqlogs/Broker.log
    The broker[broker-a,192.168.1.2:10911] boot success...

2.2 多Master模式

所有节点都是 Master 主节点,没有 Slave 从节点。这种模式配置简单,性能最高,但是单台机器宕机时会影响未消费消息的实时性。

启动步骤与单Master模式类似,只是需要在多台机器上分别启动多个 Broker 实例。

2.3 多Master多Slave模式-异步复制

每个 Master 节点配置一个或多个 Slave 节点。主从之间采用异步复制,具有较高的性能和可靠性。

启动步骤:

  1. 启动 NameServer。
  2. 在不同机器上依次启动多个 Master 和对应的 Slave Broker 实例。

2.4 多Master多Slave模式-同步双写

此模式下,只有当消息成功写入到 Master 并被所有指定的 Slave 成功复制后,才会向应用返回成功响应。适合对数据一致性要求极高的场景。

启动步骤同异步复制模式,区别在于配置文件中需要设置相关参数来启用同步复制。

2.5 自动主从切换

自 RocketMQ 5.0 版本开始引入了自动主从切换功能,提高了系统的可用性和稳定性。更多关于自动主从切换的信息,请参考官方文档中的快速开始部署文档

通过上述介绍可以看出,RocketMQ 提供了多种灵活的部署方案以满足不同的业务需求。对于具体的选择,可以根据实际的应用场景和对性能、可靠性的要求来决定使用哪种部署模式。

---------------

参考链接 :

  • 专家经验:rocketmq 部署架构和设置步骤

  • 专家经验:rocketmq 架构设计

  • 专家经验:RocketMQ 介绍

---------------

答疑服务说明:

本内容经由技术专家审阅的用户问答的镜像生成,我们提供了专家智能答疑服务,使用方法: 用法1: 在页面的右下的浮窗”专家答疑“。 用法2: 点击专家答疑页(针对部分网站不支持插件嵌入的情况)

另:

有其他开源产品的使用问题?点击访问阿里AI专家答疑服务

反馈

如问答有错漏,欢迎点:差评给我们反馈。

收藏
收藏暂无数据,请从小助手对话框添加
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
无疑 AI答疑专家
当前服务输出的内容均由人工智能模型生成,其生成内容的准确性和完整性无法保证,不代表我们的态度或观点。
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
专家答疑