部署架构
说明:
(1)Producer:生产者
(2)Consumer:消费者
(3)NameServer:RockerMQ的注册中心,多个实例组成集群,但相互独立,没有信息交换。每个Broker都向所有NameServer实例注册。
(4)Broker:负责存储消息、转发消息。
部署模式
RocketMQ作为消息中间件,其主要功能为消息的Publish/Subscribe。而Broker担任的消息转发和存储功能,其部署方式有很多种:
模式 | 优点 | 缺点 | 说明 |
---|---|---|---|
单Master | 配置简单 | 不可靠,该机器重启或宕机,将导致整个服务不可用 | |
多Master | 配置简单,性能最高 | 可能会有少量消息丢失,单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性 | |
异步多Master多Slave | 性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预 | Master宕机或磁盘损坏时会有少量消息丢失 | 每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级 |
同步多Master多Slave | 服务可用性与数据可用性非常高 | 性能比异步集群略低,当前版本主宕备不能自动切换为主 | 每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功 |
部署环境
共三台机器,每台上分别布有一台主从。
主机IP | 角色 | 备注 |
---|---|---|
192.168.5.152 | nameserver、broker-a-master、broker-b-slave | prod-MQ-01 |
192.168.3.20 | nameserver、broker-b-master、broker-c-slave | prod-MQ-02 |
192.168.5.207 | nameserver、broker-c-master、broker-a-slave | prod-MQ-03 |
部署流程
第一台 prod-MQ-01
上面部署四个容器服务,分别是:nameserver、broker-a-master、broker-b-slave和rocketmq-console。
部署 rmqnamesrv
创建目录:
创建mqnamesrv
服务启动脚本:
部署 broker-a
创建目录:
创建broker-a
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
部署 broker-b-s
创建目录:
创建broker-b-s
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
部署 Dashboard
创建目录:
创建 dashboard
服务启动脚本:
第二台 prod-MQ-02
上面部署四个容器服务,分别是:nameserver、broker-b-master、broker-c-slave。
部署 rmqnamesrv
创建目录:
创建mqnamesrv
服务启动脚本:
部署 broker-b
创建目录:
创建broker-b
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
部署 broker-c-s
创建目录:
创建broker-c-s
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
第三台 prod-MQ-03
上面部署四个容器服务,分别是:nameserver、broker-c-master、broker-a-slave。
部署 rmqnamesrv
创建目录:
创建mqnamesrv
服务启动脚本:
部署 broker-c
创建目录:
创建broker-c
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
部署 broker-a-s
创建目录:
创建broker-a-s
服务启动脚本:
注意:conf
文件在本文档同级目录下存放。
启动服务
首先切到对应的服务目录,执行对应服务shell脚本即可。