RabbitMQ 部署方式选择

部署模式

RabbitMQ支持多种部署模式,可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式:

  • 单节点模式: 最简单的部署方式,所有的RabbitMQ组件(消息存储、交换机、队列等)都运行在单个节点上。适用于小型应用或者开发和测试环境,但不具备高可用性和容错能力。

  • 集群模式: RabbitMQ集群由多个节点组成,分布在不同的物理服务器上。集群提供高可用性和容错性,其中一个节点出现故障时,其他节点可以继续提供服务。集群模式需要仔细的配置和管理,以确保数据同步和故障转移的正确性。

  • 镜像队列模式: 镜像队列模式是集群模式的一种变体,用于提供队列级别的高可用性。队列的内容被复制到集群中的多个节点上,确保在节点故障时仍然可以访问数据。

  • 仲裁队列模式:仲裁队列模式是镜像队列的替代方案,用于提供队列级别的高可用性。队列内容被复制集群中的多个节点上,通过raft算法保证数据的一致性。使用仲裁队列时,需要保证集群至少有一半以上节点可用。

  • 双机房模式:用于保证在其中一个机房MQ服务不可用时,可以将服务切换到另一个机房,避免单机房故障。该方案对机房间、机房内部网络都有很高要求,否则会有很多可靠性问题。

单机部署模式

单机部署模式是最简单的部署模式,该模式下RabbitMQ不具备高可用性: MQ节点下线后,所有依赖RabbitMQ的服务将无法提供服务。
在这里插入图片描述

优点

  • 简单易部署:单节点部署非常简单,不需要复杂的配置或管理。

  • 适用于小型应用:对于小型应用或开发/测试环境,单节点部署足够满足需求。

  • 成本低廉:由于只需部署单个节点,因此硬件和资源需求较低,成本相对较低。

缺点

  • 容错性差:单节点部署的容错性较差,如果节点出现故障,整个系统可能会中断。没有故障转移或冗余机制来保证可用性。

  • 扩展性有限:无法满足大规模应用的需求,无法水平扩展来提高性能和处理能力。

  • 单点故障:由于只有一个节点,所以存在单点故障的风险,一旦节点出现问题,整个消息传递系统将不可用。

  • 无法实现高可用性:缺乏故障转移和冗余机制,因此无法实现高可用性和持久性,消息可能会丢失或不可达。

使用场景

开发环境。

集群模式

普通集群模式下,队列数据节点分布在各节点中,具备较好的负载均衡能力,需要注意:该模式下如果有节点下线则该节点上的队列状态会变成down状态,正在消费队列消息的消费者也将会被下线。
在这里插入图片描述

优点

  • 具备负载均衡能力:相比于单点部署模式,普通集群模式下,不同队列的消息生产者和消费者可以连接到不通过节点,节点之间通过内部代理的方式将消息发送请求和消费请求转发到内部数据节点。

  • 可用性相比于单点模式有增强:单个节点进程不可用后,只要队列数据不可用的节点不是队列数据所在节点,则队列可用性不受影响。

缺点

队列数据缺少副本,队列数据所在节点不可用后, 和队列相关的消息将不会进入队列,队列中的消息将无法消费。

使用场景

对性能要求较高,但是对队列可用性较低的场景。

镜像队列模式

镜像集群模式下,非临时队列会有多个副本(分master副本和slave副本)分散在各节点下,单个节点下线不影响整体可用性。镜像队列内部采用可靠组播方式来保证集群内各副本数据的一致,对网络稳定性有很高要求。需要注意的是:启用了镜像模式后,消息需要在多个节点之间同步,性能相对单节点或者普通节点而言会有降低,且镜像队列副本数越多性能损失越大。
在这里插入图片描述

优点

  • 相比于普通集群,镜像队列支持队列级别的高可用,部分节点出现不可用故障不会影响队列整体的可用性。

  • 可通过任意一个节点将数据复制到镜像队列副本,客户端无序关心队列master节点位置。

缺点

  • 数据通过可靠性组播方式来完成镜像队列副本数据同步,效率低下,对性能影响较大。

  • 镜像队列副本不支持增量数据同步, 同步时会删除本地数据全量从master副本所在节点拉取数据,拉取数据过程中,集群不可用。

  • 受网络稳定性影响较大,分区恢复过程中不稳定的网络环境容易导致队列crash并进一步引发消费者掉线、消息发送阻塞等现象。

  • RabbitMQ官方已不在维护,计划在4.0版本中删除镜像队列。

使用场景

在MQ 版本低于3.8的版本中推荐使用, 镜像队列是3.8版本之前版本中唯一支持高可用的方案, 为了减少网络分区导致的各种问题,建议使用3节点 + pause_minority模式。

仲裁队列模式

仲裁队列是RabbitMQ官方支持的新一代高可用队列,内部采用Raft算法实现,队列副本也会分leader角色和follow角色,只要一半以上节点可用集群即可用,其在高可用和性能之间做了很好的平衡。
在这里插入图片描述

优点

  • 相比于镜像队列,仲裁队列在一致性算法上做了升级,换成了raft算法,节点同步的容错能力明显增强:只需要一半以上的节点完成同步确认即可认为成功。

  • 相比于镜像队列需要全量同步情况,仲裁也做了优化:支持增量同步,并且同步过程中并不会导致整个集群不可用。

  • 相比于镜像队里,不存在队列副本之间的分区问题。

缺点

  • 低于3.8的版本中不支持仲裁队列

  • 要求集群节点为奇数,部分特性,如优先级不支持,部分特性如ttl,长度限制需要3.10版本支持。

使用场景

新环境对接使用3.10以上版本RabbitMQ 包含3个节点的仲裁队列集群。

双机房模式

多机房部署RabbitMq集群,防止因单机房出问题到时服务不可用。

优点

相比于普通的单机房镜像队列集群,双机房模式下, 可以避免集群出现单机房故障引发的整个集群不可用问题。

缺点

启用双机房模式后,客户端需要开启主机房定位策略来保证所有队列的主副本在主机房的节点上,无法做到队列master副本的负载均衡,且从理论上而言,并不能完全做到所有主副本都在主机房节点

使用场景

针对跨机房MQ的应用场景,官方的建议是不推荐同一个集群内的MQ节点之间跨机房,推荐的做法是各机房MQ集群独立部署,通过sholve或者federation插件来进行数据同步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/263116.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java程序设计】【C00278】基于Springboot的数码论坛管理系统(有论文)

基于Springboot的数码论坛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的数码论坛系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:在系统首页可以查看首页、…

Linux Android USB gadget(从设备驱动)

Linux Android USB gadget 一:Linux usb gadget 与 Android Composite Gadget二:原生方式和Android方式如何配置函数调用逻辑内核配置原生驱动android驱动三:mass_storage配置虚拟化U盘四:遍历usb设备五:adb usb判断usb设备为adb获取adb配置信息adb设备序列号发送与接收《Linux…

maven的聚合和生命周期

什么是maven的聚合呢?就是父类直接将子类项目一起统一打包安装统一maven的生命周期 1.maven的生命周期 2.在父亲类pom文件指定需要打包的项目 实例代码: <!--maven的聚合 通过modules指定需要打包的maven项目--> <modules><module>../ithema-jopo</m…

【Java】RestClient的使用

RestClient的使用 先导入Maven坐标&#xff0c;要和elasticsearch和kibana的版本保持一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1<…

神经网络系列---计算图基本原理

文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…

2024最新版Python 3.12.2安装使用指南

2024最新版Python 3.12.2安装使用指南 Installation and Usage Guide to the Latest Version - Python 3.12.2 for Windows in 2024 By JacksonML 0. Python的受欢迎程度 据TechRepublic报道&#xff0c;截至2024年2月16日&#xff0c;全球最流行的编程语言之中&#xff0c…

【Java网络编程06】HTTPS原理

1. HTTPS基本概念 HTTPS&#xff1a;HTTPS也是一个应用层协议&#xff0c;它在HTTP协议的基础上引入了一个加密层——SSL协议&#xff0c;区别就在于HTTP协议是基于明文传输的&#xff08;不安全&#xff09;&#xff0c;使用HTTPS加密就能在一定程度上防止数据在传输过程中被…

如何在Pycharm中导入第三方库(以pyecharts为例子)

打开Pycharm 点击右上角文件->设置->项目->pythonProject&#xff08;Python解释器&#xff09; 点击下图号 下一步&#xff1a;在搜索栏中直接搜索第三方包pyecharts并安装即可 以上便为使用Pycharm安装第三方库的全过程。 温馨小提示&#xff0c;如果大家在Pychar…

基于粒子群优化BP神经网络的三分类代码,基于pso+bp的01编码分类识别,PSOBP三分类

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群优化BP神经网络的三分类代码,基于pso+bp的01编码分类识别 matlab代码下载链接:基于粒子群优化BP神经…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘 Linux没有盘符这个概念&#xff0c;只有一个根目录 /&#xff0c;所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中&#xff0c;路径之…

[rust] 11 所有权

文章目录 一 背景二 Stack 和 Heap2.1 Stack2.2 Heap2.3 性能区别2.4 所有权和堆栈 三 所有权原则3.1 变量作用域3.2 String 类型示例 四 变量绑定背后的数据交互4.1 所有权转移4.1.1 基本类型: 拷贝, 不转移所有权4.1.2 分配在 Heap 的类型: 转移所有权 4.2 Clone(深拷贝)4.3 …

普中51单片机学习(定时器和计数器)

定时器和计数器 51单片机有两组定时器/计数器&#xff0c;因为既可以定时&#xff0c;又可以计数&#xff0c;故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的&#xff0c;不需要CPU的参与。51单片机中的定时器/计数器是…

模型 HBG(品牌增长)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。品牌增长法。 1 HBG(品牌增长)模型的应用 1.1 江小白使用HBG模型提高品牌知名度和销售额 选择受众市场&#xff1a;江小白的目标客户是年轻人&#xff0c;他们喜欢简单、时尚的产品。因此&#xff0c;江…

Vue3自定义组件v-model双向绑定

无能吐槽一下&#xff0c;虽然用了很多遍v-model&#xff0c;但是还是不得要领&#xff0c;每次看官网都感觉说的不是很清晰&#xff0c;在写的时候还是要查看文档&#xff0c;可能就是不理解原理&#xff0c;这次特意好好写一篇文章&#xff0c;让自己好好理解一下。 自定义一…

python程序设计基础:字符串与正则表达式

第四章&#xff1a;字符串与正则表达式 4.1字符串 最早的字符串编码是美国标准信息交换码ASCII&#xff0c;仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码采用1个字节来对字符进行编码&#xff0c;最多只能表示256个符号。 随着信息技…

【k8s核心概念与专业术语】

k8s架构 1、服务的分类 服务分类按如下图根据数据服务支撑&#xff0c;分为无状态和有状态 无状态引用如下所示&#xff0c;如果一个nginx服务&#xff0c;删除后重新部署有可以访问&#xff0c;这个属于无状态&#xff0c;不涉及到数据存储。 有状态服务&#xff0c;如redis&a…

备战蓝桥杯之并查集刷题之删除

题目比较模板&#xff0c;但是也扩展了许多以前不知道的知识点&#xff0c;记录一下比较有启发性的题。 目录 1.并查集之删除操作---创点转移&#xff1a; 2.并查集之删除操作---逆向思考&#xff1a; 1.并查集之删除操作---创点转移&#xff1a; 1和3都是并查集的基础操作&…

STM32F103x 的时钟源

AHB (Advanced High-performance Bus) 高速总线&#xff0c;用来接高速外设的。 APB (Advanced Peripheral Bus) 低速总线&#xff0c;用来接低速外设的&#xff0c;包含APB1 和 APB2。 APB1&#xff1a;上面连接的是低速外设&#xff0c;包括电源接口、备份接口、 CAN 、 US…

域名 SSL 证书信息解析 API 数据接口

域名 SSL 证书信息解析 API 数据接口 网络工具&#xff0c;提供域名 SSL 证书信息解析&#xff0c;多信息查询&#xff0c;毫秒级响应。 1. 产品功能 提供域名 SSL 证书信息解析&#xff1b;最完整 SSL 属性信息解析&#xff1b;支持多种元素信息抽取&#xff0c;包括主题的可…

CSS三大定位方式(浮动、定位、弹性盒)详细解析

CSS三大定位方式 前言&#xff1a;作为一名前端开发&#xff0c;已经工作2年了。由于自己是半路出家&#xff0c;从嵌入式方向转到前端开发&#xff0c;都是边百度边开发&#xff0c;很多基础都不了解&#xff0c;只要解决问题就好&#xff0c;但是近来为了让自己知识体系化&a…