之前都是基于理论的讲解,本篇将动手搭建RocketMQ集群。
MQ集群搭建
从apache可以了解到,RocketMQ有多重集群搭建方式。
1.单 master 模式
也就是只有一个 master 节点,称不上是集群,一旦这个 master 节点宕机,那么整个服务就不可用,适合个人学习使用。
2.多 master 模式
多个 master 节点组成集群,单个 master 节点宕机或者重启对应用没有影响。
优点:所有模式中性能最高
缺点:单个 master 节点宕机期间,未被消费的消息在节点恢复之前不可用,消息的实时性就受到影响。
注意:使用同步刷盘可以保证消息不丢失,同时 Topic 相对应的 queue 应该分布在集群中各个节点,而不是只在某各节点上,否则,该节点宕机会对订阅该 topic 的应用造成影响。
3.多 master 多 slave 异步复制模式
在多 master 模式的基础上,每个 master 节点都有至少一个对应的 slave。master
节点可读可写,但是 slave 只能读不能写,类似于 mysql 的主备模式。
优点: 在 master 宕机时,消费者可以从 slave 读取消息,消息的实时性不会受影响,性能几乎和多 master 一样。
缺点:使用异步复制的同步方式有可能会有消息丢失的问题。
4.多 master 多 slave 同步双写模式
同多 master 多 slave 异步复制模式类似,区别在于 master 和 slave 之间的数据同步方式。
优点:同步双写的同步模式能保证数据不丢失。
缺点:发送单个消息 RT 会略长,性能相比异步复制低10%左右。
刷盘策略:同步刷盘和异步刷盘(指的是节点自身数据是同步还是异步存储)
同步方式:同步双写和异步复制(指的一组 master 和 slave 之间数据的同步)
笔者就职于电商公司,MQ集权主要应用在商品信息变化,价格变化,物流信息变化,库存信息变化等方向,个人负责的这一块日消息量千万级,采用的是四主四从,同步双写,异步刷盘的方式,机器配置为32G内存,1T硬盘,消息默认保留30天。好了,闲话少说,让我们开始搭建吧。由于笔者资源有限,这里示范搭建1主1从,同步双写,异步刷盘。准备两台机10.255.242.108 和10.255.242.109
1,下载代码,从http://rocketmq.apache.org/release_notes/release-notes-4.2.0/下载代码,解压 unzip rocketmq-all-4.2.0-source-release.zip,cd rocketmq-all-4.2.0/ ,mvn -Prelease-all -DskipTests clean install -U,cd distribution/target/apache-rocketmq,发现
如图所示,bin目录下面是NameServer,Broker等的启动命令,conf下面是相关配置。
2.进入bin目录下面,分别在两台机上启动nohup sh bin/mqnamesrv >/dev/null 2>&1 &(nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面)。这样10.255.242.108 和10.255.242.109上面的NameServer就搭建好了。
3.进入cd conf/2m-2s-sync,这就是两主两从的配置文件,如下图
如上图broker-a.properties就是broker-a的master配置文件,broker-a-s.properties就是broker-a的slave配置文件。
4.分别根据3中各参数含义修改broker的配置,这里我们在10.255.242.108上配置broker-a-master在10.255.242.109上配置broker-a-slave。
5.启动 在10.255.242.108上运行命令 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties >/dev/null 2>&1 &,在10.255.242.109上运行命令 nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties >/dev/null 2>&1 &,至此rocketmq主从模式就搭建好了,多主多从就是修改配置文件中brokerName,brokerId,brokerRole的参数而已。
MQ-Console搭建
有个MQ集群后,有个集群的可视化操作界面就更棒了,下面给大家介绍一款控制台
git地址:https://github.com/apache/rocketmq-externals
down下来后,修改配置参数,如下图
配置好参数后,编译mvn clean package -Dmaven.test.skip=true 得到rocketmq-console-ng-1.0.0.jar。运行 nohup java -jar rocketmq-console-ng-1.0.0.jar > /dev/null 2>&1 &;
打开浏览器输入ip:port后就能访问了如下图:
点击集群,可以看到第一步搭建的MQ集群,如下图
console还有其它的功能,大家可以摸索下。