rocketmq实战-搭建高可用的分布式消息队列集群(代码片段)

肖凯瀚 肖凯瀚     2023-03-02     214

关键词:

文章目录

RocketMQ各部分角色

NameServer,Broker,Producer,Consumer

类比邮政系统,Producer是发信人;Consumer是收信人;Broker是负责暂存、传输信件的邮局;NameServer是负责协调各邮局的管理机构。

启动RocketMQ的顺序是先启动NameServer,再启动Broker。

为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多个NameServer和Broker,为每个Broker部署一个或多个Slaver。

RocketMQ多集群配置和部署实战

使用两台物理机,搭建双主、双从,无单点故障的高可用RocketMQ集群。假设两台物理机的IP分别为192.168.100.131,192.168.100.131。两台物理机已安装RocketMQ。

  1. 首先在这两台机器上分别启动NameServer,这样我们就得到了一个无单点NameServer服务,服务地址分别为:192.168.100.131:9876,192.168.100.131:9876
  2. 然后启动Broker, 每台机器上都分别一个Master角色和一个Slaver角色的Broker(每台机器把RocketMQ复制一份,一个启动为Master,一个启动为Slaver)。 集群使用交叉部署。
    192.168.100.131机器上的Master Broker配置文件:
namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876 
brokerClusterName=DefaultCluster 
brokerName=broker-a 
brokerId=0 
deleteWhen=04 
fileReservedTime=48 
brokerRole=SYNC_MASTER 
flushDiskType=ASYNC_FLUSH 
listenPort=10911 
storePathRootDir=/home/rocketmq/store-a

192.168.100.131机器上的Slaver Broker配置文件:

namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876 
brokerClusterName=DefaultCluster 
brokerName=broker-b 
brokerId=1
deleteWhen=04 
fileReservedTime=48 
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH 
listenPort=11011
storePathRootDir=/home/rocketmq/store-b

192.168.100.132机器上的Master Broker配置文件:

namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876 
brokerClusterName=DefaultCluster 
brokerName=broker-b
brokerId=0 
deleteWhen=04 
fileReservedTime=48 
brokerRole=SYNC_MASTER 
flushDiskType=ASYNC_FLUSH 
listenPort=10911 
storePathRootDir=/home/rocketmq/store-b

192.168.100.132机器上的Slaver Broker配置文件:

namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876 
brokerClusterName=DefaultCluster 
brokerName=broker-a 
brokerId=1 
deleteWhen=04 
fileReservedTime=48 
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH 
listenPort=10911 
storePathRootDir=/home/rocketmq/store-a

然后分别使用如下命令启动四个Broker(根据具体路径):

nohup sh ./bin/mqbroker -c config_file &

启动完毕之后,变搭建完成一个高可用的RocketMQ集群。

集群查看方式

命令行:sh mqadmin clusterList -n 127.0.0.1:9876
页面查看: 可以在任一台机器上启动rocketmq-console,例如在机器192.168.100.131启动,则可通过访问192.168.100.131:8080,在浏览器中查看集群状态。

Broker配置参数介绍

  1. namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876。NameServer可以是多个,用分号隔开。
  2. brokerClusterName=DefaultCluster 。 Cluster集群的名称,如果集群数量比较多,可以细分为多个Cluster,每个Cluster集群供某一个业务群使用。
  3. brokerName=broker-a Broker的名称,Master和Slave通过使用相同的Broker名称表明相互关系,以说明Slave跟Master的关联关系。
  4. brokerId=0 一个Master Broker可以有多个Slave,0表示Master,大于0表示不同Slave的ID。
  5. fileReservedTime=48 在磁盘保存的时长,单位是小时,自动删除超时的消息。
  6. deleteWhen=04 表明在几点做消息删除动作,默认04表示凌晨4点。
  7. brokerRole=SLAVE brokerRole有三种:SYNC_MASTER、ASYNC_MASTER、SLAVE

参考《RocketMQ实战与原理解析》

rocketmq源码合集

...发送与接收消息队列中间件RocketMQ源码分析——Message存储分布式消息队列RocketMQ源码分析——Message拉取与消费(上)分布式消息队列RocketMQ源码分析——Message拉取与消费(下)分布式消息队列RocketMQ源码分析——Me... 查看详情

rocketmq分布式消息队列

RocketMQ分布式消息队列来源作者:java1234_小锋1RocketMQ简介RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷... 查看详情

搭建高可用mongodb集群——分片

搭建高可用mongodb集群(四)——分片 按照上一节中《搭建高可用mongodb集群(三)——深入副本集》搭建后还有两个问题没有解决:从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?数据压力大到机器... 查看详情

搭建高可用mongo集群

简介:    MongoDB是一个可扩展、高性能的分布式文档存储数据库,由C语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便。MongoDB是一个介于关... 查看详情

搭建高可用mongodb集群——分片(经典)

...tp://www.lanceyan.com/tech/arch/mongodb_shard1.html按照上一节中《搭建高可用mongodb集群(三)——深入副本集》搭建后还有两个问题没有解决:从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?数据压力大到机器支... 查看详情

rocketmq与springboot封装

参考技术A消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,日志记录,流量削锋、分布式事务等问题,实现高性能,高可用,可伸缩和最终一致性架构。zebra架构选用RocketMQ作为消息队列组件,下面介... 查看详情

rocketmq分布式消息队列的部署与监控

--------------------------------------------------------------------------------------------一、Rocketmq简介:--------------------------------------------------------------------------------------------Roc 查看详情

kubernetes云原生实战03搭建高可用负载均衡器(keepalived和haproxy)(代码片段)

大家好,我是飘渺。今天咱们继续更新Kubernetes云原生实战系列,本节文章主要是基于Keepalived和HAproxy实现负载均衡器的高可用。上图是我们的部署架构,包含三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟... 查看详情

kubernetes云原生实战03搭建高可用负载均衡器(keepalived和haproxy)(代码片段)

大家好,我是飘渺。今天咱们继续更新Kubernetes云原生实战系列,本节文章主要是基于Keepalived和HAproxy实现负载均衡器的高可用。上图是我们的部署架构,包含三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟... 查看详情

rocketmq问题集

...获取消息去处理。本质上RocketMQ存储海量消息的机制就是分布式的存储。所谓分布式存储,就是把数据分散在多台机器上来存储,每台机器存储一部分消息,这样多台机器加起来就可以存储海量消息了Broker主从架构以及多副本策... 查看详情

分布式消息队列

...incentchma,腾讯IEG后台开发工程师一、消息队列的演进分布式消息队列中间件是是大型分布式系统中常见的中间件。消息队列主要解决应用耦合、异步消息、流量削锋等问题,具有高性能、高可用、可伸缩和最终一致性等... 查看详情

springboot实战项目整合阿里云rocketmq消息队列实现发送普通消息,延时消息(代码片段)

原文地址:Springboot实战项目整合阿里云RocketMQ消息队列实现发送普通消息,延时消息--附代码-学不会丶-博客园一.为什么选择RocketMQ消息队列?(可跳过看三的整合代码实例)首先RocketMQ是阿里巴巴自研出来的&#... 查看详情

rocketmq(activemq的缺点以及rocketmq解释)

...tivemq支持jms规范,点对点发布订阅消息模型,但是不支持分布式(不支持集群),或者说集群比较麻烦需要用到zk,activemq消息堆积能力没rocetmq消息堆积能力强 每年的双11都是经过了验证的但是rocetmq就支持分布式,集群。它的... 查看详情

rocketmq介绍

...队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。2、Producer、Consumer、队列都可以分布式3、Producer向一些队列轮流发送消息,队列集合称为Topic,Consumer消费方式有两种:广播消费和集群消费。4、能够保证严... 查看详情

分布式消息队列的演进

...incentchma,腾讯IEG后台开发工程师一、消息队列的演进分布式消息队列中间件是是大型分布式系统中常见的中间件。消息队列主要解决应用耦合、异步消息、流量削锋等问题,具有高性能、高可用、可伸缩和最终一致性等... 查看详情

分布式消息队列的演进

...incentchma,腾讯IEG后台开发工程师一、消息队列的演进分布式消息队列中间件是是大型分布式系统中常见的中间件。消息队列主要解决应用耦合、异步消息、流量削锋等问题,具有高性能、高可用、可伸缩和最终一致性等... 查看详情

编程开发消息队列解析

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较... 查看详情

rocketmq源码合集

...发送与接收消息队列中间件RocketMQ源码分析——Message存储分布式消息队列RocketMQ源码分析——Message拉取与消费(上)分布式消息队列RocketMQ源码分析——Message拉取与消费(下)分布式消息队列RocketMQ源码分析——Me... 查看详情