rocketmq主从服务搭建流程以及注意事项

1 RocketMQ4.X集群模式架构分析

简介:讲解RocketMQ4.X多种集群模式讲解

单节点 :

优点:本地开发测试,配置简单,同步刷盘消息一条都不会丢

缺点:不可靠,如果宕机,会导致服务不可用

主从(异步、同步双写) :

优点:同步双写消息不丢失, 异步复制存在少量丢失 ,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入

缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行检测然后进行停止broker,重启让从节点成为主节点

双主:

优点:配置简单, 可以靠配置RAID磁盘阵列保证消息可靠,异步刷盘丢失少量消息

缺点: master机器宕机期间,未被消费的消息在机器恢复之前不可消费,实时性会受到影响

双主双从,多主多从模式(异步复制)

优点:磁盘损坏,消息丢失的非常少,消息实时性不会受影响,Master 宕机后,消费者仍然可以从Slave消费

缺点:主备有短暂消息延迟,毫秒级,如果Master宕机,磁盘损坏情况,会丢失少量消息

双主双从,多主多从模式(同步双写)

优点:同步双写方式,主备都写成功,向应用才返回成功,服务可用性与数据可用性都非常高

缺点:性能比异步复制模式略低,主宕机后,备机不能自动切换为主机

推荐方案2、4、5

2 消息可靠性之同步、异步刷盘

简介:讲解什么是同步刷盘和异步刷盘,主从模式如何保障消息可靠性

内存+磁盘
什么是异步刷盘(数据可能丢失,性能高):
什么是同步刷盘:数据安全性高
选择:各有优缺点,看业务需要
3 消息可靠性之同步、异步复制

简介:讲解消息的同步和异步复制

Master - Slave节点里面
异步复制 : 数据可能丢失,性能高
同步复制: 数据安全性高,性能低一点
最终推荐这种方式:同步双写(即M-S同步复制),异步刷盘

第4集 RocketMQ4.X集群高可用之主从模式搭建上集
简介:使用RocketMQ4.X搭建主从节点上集

机器列表

server1 ssh root@192.168.159.129
server2 ssh root@192.168.159.130
server3 ssh root@192.168.159.131
server4 ssh root@192.168.159.132
软件:RocketMQ4.X + JDK8 + Maven +CentOS7

5 RocketMQ4.X集群高可用之主从模式搭建下集

简介:使用RocketMQ4.X搭建主从节点下集

机器列表

server1 ssh root@192.168.159.129
server2 ssh root@192.168.159.130
server3 ssh root@192.168.159.131
server4 ssh root@192.168.159.132

1、修改RocketMQ(启动内存配置, 两个机器都要修改)

vim runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

vim runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"

启动两个机器的 nameserver

nohup sh bin/mqnamesrv &

全路径

/usr/local/software/rocketmq/distribution/target/apache-rocketmq

2、编辑并启动rocketmq命令

主节点

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

namesrvAddr=192.168.159.129:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH

从节点

nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &

namesrvAddr=192.168.159.129:9876;192.168.159.130:9876
brokerClusterName=XdclassCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

3、使用管控台

修改事项
pom.xml  里面的rocketmq版本号
application.properties里面的nameserver

增加 rocketmq.config.namesrvAddr=192.168.159.129:9876;192.168.159.130:9876

mvn install -Dmaven.test.skip=true

java -jar rocketmq-console-ng-1.0.0.jar

参考命令
centos7关闭防火墙 
systemctl stop firewalld

远程拷贝到本地
scp xdclass@192.168.0.106:/Users/xdclass/Desktop/xdclass/消息队列/data/第3章/第7集/apache-maven-3.6.0-bin.tar.gz /usr/local/software

scp root@192.168.0.106:/Users/xdclass/Desktop/xdclass/消息队列/data/第3章/第7集/apache-maven-3.6.0-bin.tar.gz /usr/local/software  
6 故障演练之主节点Broker退出保证消息可用

简介:讲解主节点Broker退出后,从节点可继续被消费者消费

步骤

发送一条消息,关闭主节点,关闭主节点之后不能写入
从节点提供数据供外面消费,但不能接受新消息
主节点上线后同步从节点已经被消费的数据(offset同步)
7 RocketMQ4.X主从同步必备知识点

简介:讲解RocketMQ主从同步必备知识点

  • Broker分为master与slave,一个master可以对应多个Slave,但一个slave只能对应一个master,master与slave通过相同的Broker Name来匹配,不同的broker Id来定义是master还是slave

  • Broker向所有的NameServer结点建立长连接,定时注册Topic和发送元数据信息

  • NameServer定时扫描(默认2分钟)所有存活broker的连接, 如果超过时间没响应则断开连接(心跳检测),但是consumer客户端不能感知,consumer定时(30s)从NameServer获取topic的最新信息,所以broker不可用时,consumer最多最需要30s才能发现

  • (Producer的机制一样,在未发现broker宕机前发送的消息会失败)

  • 只有master才能进行写入操作,slave不允许写入只能同步,同步策略取决于master的配置。

  • 客户端消费可以从master和slave消费,默认消费者都从master消费,如果在master挂后,客户端从NameServer中感知到Broker宕机,就会从slave消费, 感知非实时,存在一定的滞后性,slave不能保证master的消息100%都同步过来了,会有少量的消息丢失。但一旦master恢复,未同步过去的消息会被最终消费掉

  • 如果consumer实例的数量比message queue的总数量还多的话,多出来的consumer实例将无法分到queue,也就无法消费到消息,也就无法起到分摊负载的作用,所以需要控制让queue的总数量大于等于consumer的数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITzhongzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值