一、rocketmq 概览
1.rocketmq简介
rocketmq是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。能够保证严格的消息顺序,提供丰富的消息拉取模式,高效的订阅者水平扩展能力,实时的消息订阅机制。
2.rocketmq结构
rocketmq主要有四大核心部分组成:nameSrv、broker、producer以及consumer四部分。rocketmq基于纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。
- nameSrv:提供轻量级的服务发现路由,每个nameSrv都记录完整的路由信息,nameSrv是一个服务与注册的发现中心。也是整个rocketmq的“大脑”,所以rocketmq需要先启动nameSrv再启动broker。
- broker:消息存储中心,主要作用是接收来自producer的消息并存储,consumer从这里取得消息。存储与消息相关的元数据,包括用户组、消费进度偏移量、队列信息等。提供轻量级的topic和queue机制在存储消息。
- producer:消息生产者。负责生产并发送消息至topic。生产者向broker发送由业务应用程序系统生成的消息。
- consumer:消息消费者。负责从topic接收消费消息。消费者从broker离去信息并将其输入应用程序。从Master拿到消息,执行完成后,会发送一个消息给Broker进行确认,这个就是ACK确认。
二、安装rocketmq
- CentOS 8
- jdk1.8
- IP:10.0.0.56
- IP:10.0.0.58
1.下载上传rocketmq解压
cd /opt
unzip rocketmq-all-4.9.4-bin-release
rocketmq目录介绍:
bin | 启动脚本,包括shell脚本和cmd脚本 |
conf | 实例配置文件,包括broker配置文件、logback配置文件等 |
lib | 依赖jar包,包括Netty、commons-lang、FastJSON等 |
2.配置全局环境变量
mv rocketmq-all-4.9.4-bin-release /usr/local/rocketmq
vi /etc/profile
# 添加以下配置
export PATH=$PATH:/usr/local/rocketmq/bin
export NAMESRV_ADDR=localhost:9876
source /etc/profile
3.修改内存配置
cd /usr/local/rocketmq/bin
vim runserver.sh
vim runbroker.sh
三、搭建主从集群
1. 10.0.0.56服务器配置
cd /usr/local/rocketmq/
cp -r conf/2m-2s-async/ seleconf
vim seleconf/broker-a.properties
#添加以下配置
namesrvAddr=10.0.0.56:9876;10.0.0.58:9876 #集群IP地址
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0 #0为主,非0为从
deleteWhen=04 #删除日志时间为凌晨4点
fileReservedTime=48 #文件保留时间为48小时
brokerRole=SYNC_MASTER #主从关系,异步复制
flushDiskType=ASYNC_FLUSH #刷盘模式,异步刷盘
2.10.0.0.58服务器配置
cd /usr/local/rocketmq/
cp -r conf/2m-2s-async/ seleconf
vim seleconf/broker-a.properties
#添加以下配置
namesrvAddr=10.0.0.56:9876;10.0.0.58:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
3.启动nameSrv服务
cd /usr/local/rocketmq
nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &
#查看启动日志
tail -f logs/mqnamesrv.log
#停止namesrv命令
sh bin/mqshutdown namesrv
4.启动主从
#启动主节点10.0.0.56
nohup sh bin/mqbroker -c conf/selfconf/broker-a.properties > logs/broker-a.log 2>&1 &
#查看启动日志
tail -f logs/broker-a.log
#启动从节点10.0.0.58
cd /usr/local/rocketmq
nohup sh bin/mqbroker -c conf/selfconf/broker-a.properties > logs/broker-a.log 2>&1 &
#停止broker服务命令
sh bin/mqshutdown broker
5.查看集群部署信息
sh bin/mqadmin clusterList -n 10.0.0.56:9876
#或
sh bin/mqadmin clusterList -n 10.0.0.58:9876