RabbitMQ是如何保证高可用的?

RabbitMQ可以通过多种方式来实现高可用,以确保在硬件故障或其他不可预测的情况下,消息队列系统仍然能够正常运行。RabbitMQ有三种模式:单机模式、普通集群模式、镜像集群模式。

其中单机模式一般用于demo搭建,不适合在生产环境中使用。剩下的集群模式和镜像模式都可以帮助我们实现不同程度的高可用。

普通集群模式
普通集群模式,就是将RabbitMQ实例部署到多台服务器上,多个实例之间协同工作,共享队列和交换机的元数据,并通过内部通信协议来协调消息的传递和管理。

在这种模式下,我们场景的Queue,它的元数据(配置信息)会在集群种的所有实例间进行同步,但是队列中的消息只会存在于一个RabbitMQ实例上,而不会同步到其他队列。

在这里插入图片描述当我们消费消息的时候,如果消费者连接到了未保存消息的示例,那么那个实例会通过元数据定位到消息所在的示例,拉取数据过来发送给消费者进行消费。

消息的发送也是一样的,当发送者连接到了一个不保存消息的示例时,也会被转发到保存消息的实例上进行写操作。

这种集群模式下,每一个实例中的元数据都是一样的,大家都是完整的数据。但是队列中的消息数据,在不同的示例上保存的是不一样的。这样通过增加实例的方式就可以提升整个集群的消息存储量,以及性能。

这种共方式在高可用上有一定的帮助,不至于一个节点挂了就全都挂了。但是也还有缺点,至少这个实例上的数据是没办法被读写了。

镜像模式
顾名思义,就是每一台RabbitMQ都像一个镜像一样,存储的内容都是一样的。这种模式下,Queue的元数据和消息数据不再是单独存储在某个实例上,而是集群中的所有实例上都存储一份。

这样每次在消息写入的时候,就需要在集群中的所有实例上都同步一份,这样即使有一台实例发生故障,剩余的示例也可以正常提供完整的数据和服务。
在这里插入图片描述这种模式下,就保障了RabbitMQ的高可用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搜索测试题题解(3月19号总结)

目录 1.Dungeon Master 2.Oil Deposits 3.Find a way 1.Dungeon Master Sample InputcopyOutputcopy 3 4 5 S.... .###. .##.. ###.###### ##### ##.## ##...##### ##### #.### ####E1 3 3 S## #E# ###0 0 0Escaped in 11 minute(s). Trapped! 这道题与普通的bfs模板题就是…

构建强大的API:Django中的REST框架探究与实践【第146篇—Django】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 构建强大的API:Django中的REST框架探究与实践 在当今的Web开发中,构…

微服务cloud--抱团取暖吗 netflix很多停更了

抱团只会卷,卷卷也挺好的 DDD 高内聚 低耦合 服务间不要有业务交叉 通过接口调用 分解技术实现的复杂性,围绕业务概念构建领域模型;边界划分 业务中台: 数据中台: 技术中台: 核心组件 eureka&#x…

【C语言】动态内存管理及其常见错误

文章目录 1、前言:为什么要有动态内存分布2、三种动态内存的创建方式及其释放2.1 malloc2.2 calloc2.3 ralloc2.4 free 3、常⻅的动态内存的错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使⽤free释放⼀块动态开…

Linux网络协议栈从应用层到内核层②

文章目录 1、bind 源码剖析2、listen 源码剖析3、accept 源码剖析4、connect 源码剖析客户端调用connect成功,但三次握手并未完成,进程是如何阻塞自己客户端在connect时,如何选择源端口客户发送syn封包以及重传服务端收到syn封包,…

echarts 折线图 数据点过密,显示重叠该如何解决

echarts 折线图 数据点过密,显示重叠该如何解决 有这样一个图表,显示的数据比较多, 当把 label 显示出来的时候,这些 label 重叠了,我想让它间隔一下。 结果是这样的: 只需要在 label.formatter 上处理 …

Linux课程____Samba文件共享服务

一、 Samba服务基础 SMB协议,服务消息块 CIFS协议,通用互联网文件系统 1.Samba 服务器的主要程序 smbd:提供对服务器中文件、打印资源的共享访问 nmbd:提供基于 NetBlOS 主机名称的解析 2.目录文件 /etc/samba/smb.conf 检查工具:test…

408学习笔记-17-C-C/C++中程序内存区域划分

C/C中程序内存区域划分 C/C程序内存分配的几个区域: 1、栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高…

前端学习笔记 | Node.js

一、Node.js入门 1、什么是Node.js 定义:是跨平台JS运行环境(可以独立执行JS的环境)作用: 编写数据接口,提供网页资源功能等等前端工程化:为后续学Vue和React等框架做铺垫 2、Node.js为何能执行JS&#xff…

【Java反序列化】CommonsCollections-CC1链分析

前言 好几天没发博文了,偷偷憋了个大的——CC1链分析,手撸了一遍代码。虽然说,这个链很老了,但还是花费了我一段时间去消化吸收,那么接下来,我会简洁的介绍下整个链的利用过程,还有哪些不理解的…

2核4G服务器阿里云性能测评和优惠价格表

阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

HTTP --- 上

目录 1. HTTP协议 2. 认识URL 2.1. URL中的四个主要字段 2.2. URL Encode && URL Decode 3. HTTP 协议格式 3.1. 快速构建 HTTP 请求和响应的报文格式 3.1.1. HTTP 请求格式 3.1.2. HTTP 响应格式 3.1.3. 关于 HTTP 请求 && 响应的宏观理解 3.2. 实现…

SpringBoot+Vue项目(后端项目搭建 + 添加家居)

文章目录 1.使用版本控制管理该项目1.创建远程仓库2.克隆到本地 2.后端项目环境搭建1.创建一个maven项目2.删除不必要的文件夹3.pom.xml文件引入依赖4.application.yml 配置数据源(注意,数据库名还没写)5.com/sun/furn/Application.java 编写…

2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作…

【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器

【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器 文章目录 【OpenSSH】Windows系统使用OpenSSH搭建SFTP服务器一、环境说明二、安装配置步骤1.下载完成后,传至服务器或者本机并解压至C:/Program Files/目录下2.打开PowerShell终端3.进入到包含ssh可执行exe文件的文…

每日五道java面试题之springboot篇(一)

目录: 第一题. 什么是 Spring Boot?第二题. Spring Boot 有哪些优点?第三题. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?第四题. 什么是 JavaConfig?第五题. Spring Boot 自动配置原理是什么…

全流程ArcGIS Pro技术应用

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

小本创业项目哪个比较赚钱?户用光伏加盟如何

随着不可再生能源的不断消耗和环保问题的日益重视,世界各国对新能源的需求都迫在眉睫。而光伏发电在新能源又有独特的优势。而光伏既改变了人们的生活方式也推动了社会的进步和市场经济的发展。那想做小本游戏创业的话可以选择户用光伏加盟吗? 首先要确认…

【微服务】Feign远程调用

📝个人主页:五敷有你 🔥系列专栏:微服务 ⛺️稳中求进,晒太阳 先来看我们以前利用RestTemplate发起远程调用的代码: 存在下面的问题:代码可读性差,编程体验不统一参数复杂URL…