RocketMQ系列之集群搭建

2023-10-30

前言

上节我们对RocketMQ(以下简称RMQ)有了一些基本的认识,大致知道了,什么是RMQ以及他能做什么,今天我们来讲讲如何搭建RMQ,与其说搭建RMQ不如说是搭建RMQ集群,为什么这么说呢?看完这篇文章自然就懂了。

 

RMQ几个重要角色?

NameServer:名称服务,这是RMQ的一个重点,他是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步,这里可以充当ZK协调集群的作用;

Broker:Broker消息中转角色,主要负责消息的存储转发,Broker分为Master和Slave,一个Master对应多个Slave,但是一个Slave只能对应一个Master,Master和Slave之间通过指定相同的BrokerName和不同的BrokerId来确定主从关系,id为0的就是Master,非0就是Slave,Master也可以部署多个,每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic到NameServer上;

Topic:主题频道,用于生产者和消费者进行消息交流的媒介,生产者将消息发送到指定Topic上,消费者订阅该Topic(生产环境下一般都是消费者先订阅,生产者后生产),RMQ以推的形式主动将消息推给消费者消费;

 

RMQ的集群模式?

RMQ的集群模式主要有3种:单Master模式,多Master模式,多Master多Slave模式。

单Master模式:顾名思义,只有一台MQ服务器,即一台Broker,这种模式风险比较大,一旦broker宕机或者重启就会导致整个MQ服务不可用;

多Master模式:一个无Slave的MQ集群,集群中只有Master,这样即使其中一台Broker宕机,不会影响整个MQ服务,MQ服务还是可用的,但是宕机的这台Broker上的消息就无法被消费了,当这台Broker重启之后,会重新加入集群消费会被消费掉,所以这种模式可能会存在消息不实时消费的情况,但是消息是不会丢失的;

多Master多Slave模式:一个既有Master又有Slave的集群模式,这种模式能保证消息的实时消费,当Master宕机时,消息还可以从该Master对应的Slave上进行消费,所以这里存在一个问题,就是Master和Slave消息数据的同步问题,主要有2种同步方案可选,一种是同步双写(生产者将消息发送给MQ时,同时向Master和Slave发送,当2台broker同时返回成功才认为消息发送成功),另一种是异步复制(生产者将消息发送到Master上,然后Slave异步去复制Master的消息,这种会存在少量消息丢失)

 

RMQ集群搭建?

今天我们主要将多Master集群的搭建,单Master没什么好讲的,相当于启动一个Broker就可以了,我们看看多Master,我就以2个Master为例:

环境准备:2台Master

第一步:添加Host信息,主要为了NameServer而设置,为你的机器IP指定nameserver名称

指定完之后,重启网卡: service network restart

每台机器之间ping一下nameserver看看是否能连通:

ping rocketmq-nameserver1、ping rocketmq-nameserver2 ...

 

第二步:每台机器上都需要安装RMQ,上传压缩包,可以直接官网下载最新版(最新版最低要求JDK8)

下载链接:http://rocketmq.apache.org/release_notes/release-notes-4.2.0/

直接解压,安装;

 

第三步:创建存储路径

主要是下面这3个文件夹,这3个文件主要就是用来存储MQ上的消息的,相当于持久化存储文件,但是为什么会是三个文件夹呢?后面讲解MQ存储时我会详细讲解,这里暂且先不介绍

 

第四步:修改Broker配置,进入RMQ下的conf目录下我们会看到下面这几个文件

很明显2m-noslave就是我们需要的配置,进入这个目录下:默认就会有2个broker-a和b配置文件,如果你有N个Master就配置N个broker,我们可以在一台机器上把这些Broker先配置好,然后复制到其他机器上,每个机器启动对应一个broker就可以了

OK,那么我们就来配置broker吧:

# brokerClusterName这里一定要相同,这是集群的名字,配置一样,才能在一个集群中
brokerClusterName=rocketmq-cluster
# 这个是broker的名字,每个配置文件写自己的名字
brokerName=broker-a
# 这个是broker的ID,0代表Master,>0代表Slave
brokerId=0
# 这个就是我们之前配置的nameserver,这里你需要哪几个机器作为Master就配置几个机器的nameserver服务吧
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

配置文件我们其实就配置完了,还有就是启动文件的配置,在bin目录下有2个启动文件:

里面有这一段,根据自己机器的内存大小自己合理分配内存

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

 

第五步:启动nameserver

分别启动多台机器上的nameserver,上面我们讲过nameserver充当zk的角色,自然而然就很好理解为什么先启动nameserver了

在bin目录下有个

启动命令:nohup sh mqnamesrv & 后台启动

可以通过查看nameserver启动日志

 

第六步:启动每台机器的Broker

在bin目录下,我们可以看到下面这个

启动命令:分别启动对应broker

#第一台机器
nohup sh mqbroker -c /usr/local/rocketmq-4.2.0/conf/2m-noslave/broker-b.properties &
# 第二台机器
nohup sh mqbroker -c /usr/local/rocketmq-4.2.0/conf/2m-noslave/broker-a.properties &

 

OK,到此为止,其实RMQ多Master集群就搭建起来了,接下来我们还需要做的就是RMQ的控制台

下载链接:https://github.com/apache/rocketmq-externals

下载下来之后,我们需要修改配置文件:配置你的两台Master机器IP+RMQ端口号,注意下面那个VIP配置要改为false

然后我们使用maven命令打个包:

mvn clean package -Dmaven.test.skip=true

这个控制台是用spring-boot开发的,所以我们只需要打个jar,扔到服务器上直接java -jar启动即可。

启动之后打开浏览器,输入访问路径:

我们的nameserver列表:

 

OK,RMQ的集群就介绍到这了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RocketMQ系列之集群搭建 的相关文章

  • rocketMq中文文档

    title 用户指引 date 2017 12 29 categories 文档翻译 为什么是RocketMQ 动机 在早期阶段 我们在ActiveMQ 5 x 早于5 3 的基础上构建我们的分布式消息中间件 我们的跨国业务使用它来实现异步
  • Windows下安装RocketMQ、配置可视化界面

    1 下载RocketMQ 官网下载地址 https rocketmq apache org dowloading releases 2 安装及启动 1 前提条件 已安装jdk和maven 注意jdk安装路径不能有空格 否则启动mq时会报类加
  • 【Linux】利用消息队列实现一个简单的进程间双向通信(两种方式)

    在实现利用消息队列的进程间通信之前 先了解一下基本的概念和所需要用到的函数 消息队列 消息队列是Linux内核地址空间中的内部链表 各个进程可以通过它来进行消息传递 进程发送的消息会顺序写入消息队列之中 且每个消息队列都有IPC标识符唯一地
  • 如何保证消息队列的顺序性?

    面试题 如何保证消息的顺序性 面试官心理分析 其实这个也是用 MQ 的时候必问的话题 第一看看你了不了解顺序这个事儿 第二看看你有没有办法保证消息是有顺序的 这是生产系统中常见的问题 面试题剖析 我举个例子 我们以前做过一个 mysql b
  • 分布式秒杀案例讲解教程文档

    程序员ken 一 准备工作 1 1 vmware软件安装 虚拟机 相关教程 http c biancheng net view 714 html 网络配置这块 1 进入网络配置文件目录 cd etc sysconfig network sc
  • C++ 实现一个消息队列

    文章目录 前言 一 如何实现 1 接口定义 1 推送消息 2 等待消息 3 轮询消息 2 用到的对象 1 队列 2 互斥变量 3 条件变量 3 基本流程 1 线程通信 二 完整代码 三 使用示例 1 线程通信 1 等待消息 2 轮询消息 总
  • 4 SpringBoot整合RocketMQ实现消息发送和接收

    我们使用主流的SpringBoot框架整合RocketMQ来讲解 使用方便快捷 最终项目结构如下 具体步骤如下 第一步 我们新建一个父项目rocketmq test pom类型 主要是依赖管理 包括版本的管理 以及管理module子项目 p
  • RocketMQ学习笔记 - 顺序消息

    文章目录 1 定义 2 代码示例 2 1 消息实体 2 2 生产者 2 3 消费者 2 3 测试结果 1 定义 顺序消息 FIFO 消息 是 MQ 提供的一种严格按照顺序进行发布和消费的消息类型 顺序消息由两个部分组成 顺序发布和顺序消费
  • Kafka常见面试题

    1 什么是消息中间件 2 kafka 是什么 有什么作用 3 kafka 的架构是怎么样的 4 Kafka Replicas是怎么管理的 5 如何确定当前能读到哪一条消息 6 生产者发送消息有哪些模式 7 发送消息的分区策略有哪些 8 Ka
  • 一文详解RabbitMQ,RocketMQ和Kafka的异同

  • 通过Java操作Kafka

    通过Java操作Kafka 前置知识 https editor csdn net md articleId 125883056 创建maven项目 导入kafka客户端依赖
  • 06-分布式消息队列Kafka

    目录 一 简介 1 什么是kafka 1 1 概念 1 2 特性 2 应用场景 二 原理 1 基本概念 1 1 Broker 代理 1 2 Topic 主题 1 3 Partition 分区 1 4 Replication 副本 1 5 P
  • RabbitMQ的安装

    一 安装erlang环境 官网下载 http www erlang org downloads 这个文件其实不是gz格式的 使用file otp src 20 1 tar gz可以查看它的真实数据格式 解压 tar xvf otp src
  • RabbitMQ消息队列实战(1)—— RabbitMQ的体系

    RabbitMQ是一个开源的消息代理和队列服务器 用来在不同的应用之间共享数据 1983年 被认为是RabbitMQ的雏形的Teknekron创建 首次提出了消息总线的概念 中间经历过数个阶段的发展 一直到2004年 AMQP Advanc
  • Kafka实战——简单易懂的生产者消费者demo

    单线程版本适合本地调试 多线程版本适合做压测 1 引入maven依赖
  • RocketMQ 简介

    本文根据阿里云 RocketMQ产品文档整理 地址 https help aliyun com document detail 29532 html userCode qtldtin2 简介 RocketMQ是由阿里捐赠给Apache的一款
  • 秒杀系统中常见问题及解决方案

    秒杀中的常见问题的解决 1 解决超卖的问题 1 Redis预减库存 有一个下单请求过来时预减库存 若减完后的redis库存小于0说明已经卖完 此时直接返回客户端已经卖完 后续使用内存标记 减少Redis访问 若预减库存成功 则异步下单 请求
  • 消息队列:Ubuntu16.04安装和Web页面管理RabbitMQ(楼主亲测、真实有效)

    RabbitMQ 总来来说 RabbitMQ的安装还是有一些难度的 不同的方式 安装的方法也是完全不一样 还要解决蛮多依赖 加上现在有些网站 极其不负责 很多博文都没有经过测试检验就直接发出来的 楼主来亲测一下 希望能对大家有好的帮助 一
  • RocketMQ第四篇 Rocket集群配置

    在实际开发中一般都会使用docker安装rocketMQ docker安装rocketmq如下 docker安装配置rocketmq docker安装rocketmq docker pull foxiswho rocketmq server
  • 腾讯技术工程总结-主流消息队列你了解哪些?

    文章参考 腾讯技术工程 关于消息队列的知识总结 主流消息队列你了解哪些 消息队列的发展历程 2003 年至今有很多优秀的消息队列诞生 如 kafka 阿里自研的 rocketmq 以及后起之秀 pulsar 消息队列在刚出现所需要解决的问题

随机推荐

  • 应用SVM预测澳大利亚降雨(含数据预处理与调参)

    0 声明 本文主要内容来自视频 2020机器学习全集 菜菜的sklearn完整版 价值4999元的最全机器学习sklearn全集 赶紧收藏 哔哩哔哩 bilibili 课件来自 https pan baidu com s 1Xl4o0PMA
  • 操作系统——文件管理

    0 关注博主有更多知识 操作系统入门知识合集 目录 9 1文件系统概念 思考题 9 2文件的物理结构 思考题 9 3文件存储和目录 9 1文件系统概念 文件的定义 文件是计算机信息存取的一种重要组织形式 文件由若干信息项有序构成 信息项可以
  • html2pdf 一键生成pdf实践

    背景 项目中需要将查询的图表及表格一键生成pdf 便于运营查看操作 调研 经调研 目前社区有合适的插件实现 html2pdf js 该插件的实现原理就是将html内容获取 解析 用cavans画出来 生成图片 然后由图片生成pdf文件 使用
  • 子组件向父组件传值

    子组件 div style margin top 20px font size 14px span 已经拥有账户 span span span div
  • Qt 屏蔽qDebug 输出

    在pro 文件中定义 QT NO DEBUG OUTPUT 这个宏 就可以屏蔽qDebug 的输出了 DEFINES QT NO DEBUG OUTPUT 那么为什么定义这个宏就可以屏蔽qDebug 的输出呢 看qlogging h 中的定
  • origin设置不同区域的颜色_半分钟教程:关于 Origin 中 Error Bar,看这篇教程就够了...

    本教程转载自 Originlab 帮助中心 前 言 几年前 小编写过一篇关于 Error Bar 的小教程 Error Bar其实一点也不Error 文中介绍了 Error Bar 的基本使用方法 但还有一些内容没能介绍完全 比如如何添加不
  • layui 监听多选框(checkbox) 点击事件

    html代码
  • 关于MIPI协议(一)——物理层D-PHY总结

    关于MIPI协议 一 物理层D PHY总结 通读了一下MIPI物理层D PHY的规格书 拿掉了规格书中一些冗余繁复的部分 留下了一些比较重要的内容 现总结如下 规格书中前部分章节大篇幅论述了D PHY的几种内部实现结构 D PHY采用的是非
  • [Heat]Heat中资源的扩展与加载

    Heat的核心是stack 从某方面讲 heat就是围绕stack的生命周期在玩 stack又是由各种各样的资源组成的 heat除了自定义的大量资源外 还允许用户自定义自己需要的资源 提供了很强的扩展性 下面将简单分析heat资源加载的流程
  • Oracle---排序、分组、表连接

    文章目录 一 排序查询 二 分组查询 三 多表关联查询 表连接 1 内连接 2 外连接 3 自然连接 一 排序查询 使用ORDER BY子句排序 ASC 升序 默认情况下 DESC 降序 ORDER BY 子句在SELECT语句的结尾 例1
  • Mybatis Generator 逆向生成器

    一 首先 安装eclipse插件 Help Eclipser Marketplace中查找 Mybatis Generator 1 3 5安装 二 新建project New other 查找如下 点击next 选择你要将文件生成到哪里的项
  • avalon视频学习笔记(五)

    一 插入移除处理 1 绑定属性ms if a 当ms if的值为真 true 时 就将元素输出到页面里面 div div 根据条件显示内容 div div div div 根据条件显示内容 div div b 如果当ms if 的值为假 f
  • Pytorch c++ 部署报错解决方案

    目录 1 Only the versions between 2017 and 2019 inclusive are supported 2 Cannot find cuDNN library Turning the option off
  • Linux firewall(防火墙)相关命令

    1 检验防火墙是否启动 firewall cmd state 2 检查8080 端口是否启动 firewall cmd permanent zone public list ports 3 开启 8080 端口 firewall cmd z
  • 离群点检测算法python代码

    很高兴为您回答问题 在python中 可以使用以下几种方法实现离群点检测算法 Z score方法 该方法通过计算数据的Z score来识别离群点 您可以使用scipy库中的zscore函数来计算Z score IQR方法 该方法通过计算数据
  • 黄金矿工-Python

    首先做这个项目之前得清楚需要的材料和这个项目的结构 我自己感觉这个游戏项目的难点就在于钩子摆动的问题 它需要利用到三角函数来实现出来 我利用了pygame transform rotate 方法来实现钩字摇摆的问题 用sin和cos的方法来
  • ​Learun FrameWork 强大工作流引擎,让OA更智能

    互联网的发展促使企业在信息化的道路上不断探索 而随着企业信息化进程的不断深入 OA协同办公的概念也逐步进入大众的视野 OA的选型关乎企业的生存发展 除了需要重视 OA技术 OA品牌 OA产品 OA服务 四大要素之外 更重要的其实是让OA变得
  • Llama2下载流程与报错:download.sh: [[: not found Downloading LICENSE and Acceptable Usage Policy..

    最近Meta的新模型LlamaV2可谓是火出圈了 第一时间我也尝试下载了权重 下载Llama2需要首先取得许可 不过没有门槛 秒批 https ai meta com resources models and libraries llama
  • C++11的 thread多线程

    一 C 11的多线程类thread C 11之前 C 库中没有提供和线程相关的类或者接口 因此在编写多线程程序时 Windows上需要调用CreateThread创建线程 Linux下需要调用clone或者pthread create来创建
  • RocketMQ系列之集群搭建

    前言 上节我们对RocketMQ 以下简称RMQ 有了一些基本的认识 大致知道了 什么是RMQ以及他能做什么 今天我们来讲讲如何搭建RMQ 与其说搭建RMQ不如说是搭建RMQ集群 为什么这么说呢 看完这篇文章自然就懂了 RMQ几个重要角色