赞
踩
简介:讲解RocketMQ4.X多种集群模式讲解
单节点 :
优点:本地开发测试,配置简单,同步刷盘消息一条都不会丢
缺点:不可靠,如果宕机,会导致服务不可用
主从(异步、同步双写) :
优点:同步双写消息不丢失, 异步复制存在少量丢失 ,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入
缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行检测然后进行停止broker,重启让从节点成为主节点
双主:
优点:配置简单, 可以靠配置RAID磁盘阵列保证消息可靠,异步刷盘丢失少量消息
缺点: master机器宕机期间,未被消费的消息在机器恢复之前不可消费,实时性会受到影响
双主双从,多主多从模式(异步复制)
优点:磁盘损坏,消息丢失的非常少,消息实时性不会受影响,Master 宕机后,消费者仍然可以从Slave消费
缺点:主备有短暂消息延迟,毫秒级,如果Master宕机,磁盘损坏情况,会丢失少量消息
双主双从,多主多从模式(同步双写)
优点:同步双写方式,主备都写成功,向应用才返回成功,服务可用性与数据可用性都非常高
缺点:性能比异步复制模式略低,主宕机后,备机不能自动切换为主机
推荐方案2、4、5
简介:讲解什么是同步刷盘和异步刷盘,主从模式如何保障消息可靠性
内存+磁盘
什么是异步刷盘(数据可能丢失,性能高):
什么是同步刷盘:数据安全性高
选择:各有优缺点,看业务需要
简介:讲解消息的同步和异步复制
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
简介:使用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
简介:讲解主节点Broker退出后,从节点可继续被消费者消费
步骤
发送一条消息,关闭主节点,关闭主节点之后不能写入
从节点提供数据供外面消费,但不能接受新消息
主节点上线后同步从节点已经被消费的数据(offset同步)
简介:讲解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的数量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。