基于源码搭建运行 RocketMQ 主从架构

本文详细介绍了如何基于IDEA搭建RocketMQ的一主一从架构,包括NameServer、Broker、Producer和Consumer的配置。重点讨论了在单机环境下配置两个Broker节点时遇到的端口冲突和存储路径问题,并通过源码分析给出了解决方案,最后给出了修改后的配置文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一篇 基于 IDEA 搭建 RocketMQ-4.6 源码环境 我们搭建并跑通了 rocketmq 的源码环境 .

本文我们紧接上文, 继续基于源码搭建并运行 broker 主从架构.

  • 1 个 NameServer 节点 (与前文一样)
  • 2 个 Broker 节点, 一个作为 Master, 一个作为 Slave
  • 1 个 Producer 生产者 (与前文一样)
  • 1 个 Consumer 消费者 (与前文一样)

broker 主从架构只需要修改 broker.conf 文件即可, 其他地方与单节点没有差异.

第四章节主要是描述搭建过程中遇到的问题, 以及处理过程, 可以选择性跳过.

正文

一、回顾 RocketMQ 的主从部署架构

在这里插入图片描述

  • Broker 部署相对复杂,Broker 分为 Master 与 Slave

  • master 与 slave 之间同步数据既支持同步(sync), 也支持异步(async)

  • 一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,

  • Master 与 Slave 的对应关系通过指定相同的 BrokerName,

  • 不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。

  • Master也可以部署多个。

  • 每个 Broker 与 NameServer 集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。

    注意:当前RocketMQ版本在部署架构上支持一Master多Slave,但只有BrokerId=1的从服务器才会参与消息的读负载。

二、官方提供的 两主两从 架构

RocketMQ 官方提供了 两主两从 (异步 和 同步)的配置文件( rocketmq/distribution/conf/ ).

在这里插入图片描述

三、基于官网的配置搭建一主一从架构

我们可以从官网提供的异步模式中提取两个现成的配置文件, 比如 broker-a.confbroker-a-s.conf 文件, 将他们放在 rocketmq/conf/ 目录下

在这里插入图片描述

然后启动 broker 程序时, 需要指定对应的配置文件.

在这里插入图片描述

这里有个细节:

当我们把两个 broker 节点部署在两台不同的机器时, 可以直接采用官网提供的配置, 无需进行修改.

但是我们是在同一台机器, 启动两个 broker 节点. 那么我们就需要注意 默认的配置文件 中缺少了包括但不限于以下配置:

  • broker 节点的监听端口(如果不配置, 那么启动第二个节点就会提示端口已占用.)

    关于端口的配置, 这里还有另外一个大坑!!! 后面详细说

  • broker 保存数据的存储路径.(如果不配置, 那么两个节点的存储路径会冲突.)

    java.lang.RuntimeException: Lock failed,MQ already started
    	at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值