RocketMQ集群架构详解及搭建(七)

多种集群模式解析

  • 1、单节点

    • 优点:本地开发测试,配置简单,同步刷盘消息一条都不会丢
    • 缺点:不可靠,如果宕机,会导致服务不可用
  • 2、主从(异步、同步双写):

    • 优点:同步双写消息不丢失,异步复制存在少量丢失,主节点宕机,从节点可以对外提供消息的消费,但是不支持写入消息
    • 缺点:主备有短暂消息延迟,毫秒级,目前不支持自动切换,需要脚本或者其他程序进行检测然后进行停止broker重启让从节点成为主节点
  • 3、双主:

    • 优点:配置简单,可以靠配置RAID磁盘阵列保证消息可靠,异步刷盘会丢失少量消息
    • 缺点:master机器宕机的时候,未被消费的消息在机器恢复之前不可消费,实时性会受到影响
  • 4、双主双从、多主多从模式(异步复制)

    • 优点:磁盘损坏、消息丢失的非常少、消息实时性不会受到影响,Master宕机后消费者仍然可以从Slave消费
    • 缺点:主备有短暂消息延迟,毫秒级,如果master宕机,磁盘损坏情况,会丢失少量消息
  • 5、双主双从、多主多从模式(同步双写)

    • 优点:同步双写方式,主备都写成功后才向应用返回成功,服务可用性与数据可用性都非常高
    • 缺点:性能比异步复制模式略低,Master宕机后,Slave不能自动切换为主机

RocketMQ主从集群搭建

首先准备四台机器,在四台机器上安装 RocketMQ4.X + JDK8 + Maven,测试的话可以本地安装虚拟机
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不需要配置什么像单节点一样直接启动就好
启动两个机器的NameServer

nohup sh bin/mqnamesrv &

2、接下来配置broker
这里贴出主节点和从节点两个机器的配置
主节点配置:nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

namesrvAddr=192.168.159.129:9876;192.168.159.130:9876
brokerClusterName=NzblogCluster
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=NzblogCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

3、如此主从集群搭建完成可以启动可视化控制台进行查看
可视化控制台需要在properties配置文件中配置 主从节点的IpAddr

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 启动即可

添加新评论

评论列表