消息服务的应用场景:
- 异步
- 解耦
- 最终一致性
- 并行
RocketMQ是什么?
RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:
-
能够保证严格的消息顺序
-
提供丰富的消息拉取模式
-
高效的订阅者水平扩展能力
-
实时的消息订阅机制
- 亿级消息堆积能力
选择RocketMQ的理由:
- 强调集群模式无单点,可扩展,任意一点高可用,水平扩展
- 海量数据的堆积能力,消息堆积后,写入延迟低
- 支持上万个队列
- 消息失败重试机制
- 消息可查询
- 开源社区灵活
- 成熟度(支持阿里双十一)
服务部署:
1. 环境说明:
IP | 主机名 | 角色 | 架构模式 |
192.168.0.10 | rocketmq-master1 | namserserver brokerserver | Master1(双Master模式) |
192.168.0.11 | rocketmq-master2 | namserserver brokerserver | Master2(双Master模式) |
192.168.0.10 rocketmq-nameserver1
192.168.0.10 rocketmq-master1
192.168.0.11 rocketmq-nameserver2
192.168.0.11 rocketmq-master2
192.168.0.11 rocketmq-nameserver2
192.168.0.11 rocketmq-master2
3. 系统架构图
4. RocketMQ的安装
下载地址:点击打开链接(上传192.168.0.10、192.168.0.11)
两台服务分次解压:
tar xvzf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
4. RocketMQ的配置
mkdir /usr/local/alibaba-rocketmq/store
mkdir /usr/local/alibaba-rocketmq/store/commitlog
mkdir /usr/local/alibaba-rocketmq/store/consumequeue
mkdir /usr/local/alibaba-rocketmq/store/index
1)修改Master1的服务
#vi /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
brokerClusterName=rocketmq-culster //两台服务的集群名称一定要一样
brokerName=broker-a //节点名称
brokerId=0 //等于0Master,大于0 slave
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 //nameserver 地址
brokerClusterName=rocketmq-culster //两台服务的集群名称一定要一样
brokerName=broker-a //节点名称
brokerId=0 //等于0Master,大于0 slave
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 //nameserver 地址
2) 修改Master2的服务
#vi /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
brokerClusterName=rocketmq-culster //两台服务的集群名称一定要一样
brokerName=broker-a //节点名称
brokerId=0 //等于0 Master,大于0 slave
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 //nameserver 地址
brokerClusterName=rocketmq-culster //两台服务的集群名称一定要一样
brokerName=broker-a //节点名称
brokerId=0 //等于0 Master,大于0 slave
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876 //nameserver 地址
3) 修改两台服务的JVM参数(RocketMQ 堆内存不能小于1G)
#vi /usr/local/alibaba-rocketmq/bin/runserver.sh
#vi /usr/local/alibaba-rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"
4) 修改两台服务的log日志
# mkdir /usr/local/alibaba-rocketmq/logs/
# cd /usr/local/alibaba-rocketmq/conf && sed -i 's#${user.home}#/usr/local/alibaba-rocketmq/logs/data#g' *.xml
logback_broker.xml
logback_filtersrv.xml
logback_namesrv.xml
logback_tools.xml
logback_namesrv.xml
logback_tools.xml
--- 这个配置log文件目录将会改变
5) 启动nameserver1 nameserver2 brokerserver1 brokerserver2 依次启动
#nohup sh mqnamesrv & --启动nameserver
#nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & --启动brokerserver
6) 查看状态(jps)
查看日志:tail -f /usr/local/alibaba-rocketmq/logs/rocketmqlogs/broker.log
tail -f /usr/local/alibaba-rocketmq/logs/rocketmqlogs/namesrv.log
环境:Tomcat 7.0、rocketmq-console.war(我的资源去下载)
1) 安装Tomcat
#tar xvzf apache-tomcat-7.0.73.tar.gz -C /usr/local
#mkdir /usr/local/apache-tomcat-7.0.73/webapps/rocketmq-console
# 上传rocketmq-console.war 到webapp 下
#unzip rocketmq-console.war rocketmq-console
# vi /usr/local/apache-tomcat-7.0.73/webapps/rocketmq-console/WEB-INF/classes/config.properties
rocketmq.namesrv.addr=192.168.0.10:9876;192.168.0.11:9876