一、回顾4.x版本的角色
在rocketmg4.x中,其主要包含两个核心组件,一个nameServer(命名服务器),一个Broker(代理服务器)
1、NameServer
NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。负责管理消息队列和消费者组。它维护一个全局的队列列表,以及每个队列的读写权限和消息状态。NameServer 还提供了一些接口如队列管理、消费者组管理、消息管理等,供客户端使用。
主要包括两个功能:
- Broker管理:NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活:
- 路由信息管理:每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息Producer和Consumer通过Nameserver就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。
2、Broker
Broker主要负责消息的存储、投递和查询以及服务高可用保证。NameServer属于几乎无状态的节点,因此可集群部署,节点之间无任何信息同步。Broker部署相对复杂在 Master-Slave 架构中,Broker分为 Master与Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与Slave 的对应关系通过指定相同的BrokerName,不同的Brokerld 来定义,Brokerld为0表示Master,非0表示Slave。Master也可以部署多个。
部署模型小结:
- 每个 Broker与NameServer 集群中的所有节点建立长连接,定时注册Topic信息到所有 NameServer。
- Producer与NameServer 集群中的其中一个节点建立长连接,定期从NameServer 获取Topic路由信息并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。Producer 完全无状态。
- Consumer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave发送心跳。Consumer 既可以从 Master 订阅消息,也可以从Slave订阅消息。

二、5.0版本环境搭建
Rocketmq4.x的部署相对5.0更简单。
RocketMq 5.0为了更好地拥抱云原生,引入了全新的弹性无状态代理模式,将当前的Broker职责进行拆分,对于客户端协议适配、权限管理、消费管理等计算逻辑进行抽离,独立无状态的代理角色提供服务,Broker则继续专注于存储能力的持续优化。这套模式可以更好地实现在云环境的资源弹性调度。
值得注意的是RocketMQ 5.0的全新模式是和4.0的极简架构模式相容相通的,5.0的代理架构完全可以以Local模式运行,实现与4.0架构完全一致的效果。开发者可以根据自身的业务场景自由选择架构部署。新的架构图如下:

rocketmg5.0中的几个角色NameServer、Broker和Proxy,它们的作用如下:
- NameServer:NameServer 是RocketMQ的名称服务器,负责管理消息队列和消费者组。
- Broker:Broker是 RocketMQ的消息代理服务器,负责接收、处理和存储消息。
- Proxy:Proxy是RocketMQ的代理服务器,用于扩展消息代理服务器的性能和容量。Proxy可以将消息路由到多个 Broker 上,以实现负载均衡和容错。Proxy还提供了一些接口,如队列管理、消费者管理、配置管理等,供客户端使用。
在 5.0 版本中 Proxy和 Broker 可以根据实际诉求可以分为 Local 模式和 Cluster 模式,一般情况下如果没有特殊需求,或者遵循从早期版本平滑升级的思路,可以选用Local模式。
- 在 Local模式下,Broker 和 Proxy是同进程部署,只是在原有 Broker 的配置基础上新增 Proxy 的简易配置]就可以运行,Local模式下 Broker 和 Proxy之间的通信属于进程间通信,性能比较好,响应时间比较短。
- 在 Cluster 模式下,Broker 和 Proxy分别部署,即在原有的集群基础上,额外再部署 Proxy 即可。
因为下载的rocketmg5.0安装包是zip文件,我们需要下载解压工具:
yum insta1l zip -y解压缩:
unzip rocketmg-a11-5.1.3-bin-release.zip1、Local模式部署
由于 Local 模式下 Proxy和 Broker 是同进程部署,Proxy本身无状态,因此主要的集群配置仍然以 Broker 为基础进行即可。单组节点单副本模式
警告: 这种方式风险较大,因为 Broker 只有一个节点,一旦Broker重启或者容机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试
第1步: 启动 NameServer
### 首先启动Name server
S nohup sh mqnamesrv &
###验证Name server 是否启动成功
s tail -f ~/logs/rocketmglogs/namesrv.1ogThe Name server boot success...第2步: 启动 Broker+Proxy
在conf目录下拷贝一个配置文件broker-1.conf,并修改如下,我们使用配置文件启动代理使用下边的命令启动:
nohup sh mgbroker -n 192.168.126.132:9876 --enable-proxy &一般情况下,按照上述的方式启动,会出现一些问题,如下,原因是我们在启动脚本中配置的堆内存过大导致的:
我们只需要将jvm相关参数调整的小一点就可以了,所有的4G改为256m,如下:
vim runserver.sh



