当前位置: 首页 > news >正文

RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列

目录

一、RabbitMQ 集群

1.1、前言

1.2、普通集群

1.3、镜像集群

1.4、仲裁队列


一、RabbitMQ 集群


1.1、前言

前面我们已经解决了消息可靠性问题,以及延迟消息问题 和 消息堆积问题.

这最后一章,我们就来解决以下 mq 的可用性 和 并发能力.

1.2、普通集群

普通集群,也叫做标准集群(classic cluster),它具备以下特征:

1. 集群中的各个节点是可以共享数据的,比如交换机信息、队列元信息,但不包含队列中的消息.

什么是元信息? 元信息,就是指队列的描述信息,队列名、队列在哪一个节点中,但是不包括消息本身.

不包括消息本身是什么意思? 假设我现在两个节点 mq1 和 mq2,然后有一个消费者订阅了 mq2 中的一个队列,但是呢,这个消费者在访问的时候,不想小心访问到了 mq1,不过由于在 mq1 上持有 mq2 的元信息,所以他知道 mq2 在哪,因此就可以通过这个元数据找到 mq2 这个节点,然后拿到我们想要的数据(这就类似于 mq1 上有 指向 mq2 的指针,通过指针就可以找到 mq2).

2. 基于第一个特点的元信息,我们就可以在访问集群中的某个节点时,发现队列不在该节点,就可以通过要访问数据的所在节点的元信息,进一步的拿到这个节点的所有数据.

这一点上面以及解释的很清楚了.

3. 如果队列所在节点宕机,那么消息就会丢失.

这里有点类似于 redis 集群中的分片处理,每一个集群上存储全集队列的一部分队列,因此这个节点挂了,消息必然会丢失.

1.3、镜像集群

镜像集群,本质上就是主从模式.

主要有以下几个特性:

1.交换机、队列、队列中的消息会在各个mq的镜像节点之间同步备份

这里就和之前的普通交换机不一样了,不仅仅是交换机可以共享,队列中的消息大家也可以共享了.

2. 创建队列的节点被称为该队列的主节点,备份到的其它节点叫做该队列的镜像节点。

比如我现在有三个节点,现在我再 mq1 上创建了一个队列 q1,因此 mq1 就是主节点,那么还可以给他挑一个镜像节点,比如我再 mq2 上做一个镜像,那么 mq2 就会去找 mq1 同步 q1 的所有数据.

3. 一个队列的主节点可能是另一个队列的镜像节点

也就是说,主节点和镜像节点是可以相互备份的.

比如 q1 在 mq1 上,给 mq2 备份了一份,q2 实在 mq2 上,给 mq3 备份了一份,q3 在 mq3 上的,给 mq1 备份了一份,那么这个时候,mq1 就是 q1 的主节点,同时也是 q3 的镜像节点.

4. 所有操作都是主节点完成,然后同步给镜像节点

5.主宕机后,镜像节点会替代成新的主

1.4、仲裁队列

仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征:

  1. 与镜像队列一样,都是主从模式,支持主从数据同步
  2. 使用非常简单,没有复杂的配置
  3. 主从同步基于Raft协议,强一致

在 SpringAMQP 中创建仲裁队列:

@Bean
public Queue quorumQueue() {return QueueBuilder.durable("quorum.queue") // 持久化 .quorum() // 仲裁队列.build();
}

SpringAMQP连接集群,只需要在yaml中配置即可:

spring:rabbitmq:addresses: 192.168.150.105:8071, 192.168.150.105:8072, 192.168.150.105:8073username: rootpassword: 1111virtual-host: /

相关文章:

RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列

目录 一、RabbitMQ 集群 1.1、前言 1.2、普通集群 1.3、镜像集群 1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言 前面我们已经解决了消息可靠性问题,以及延迟消息问题 和 消息堆积问题. 这最后一章,我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…...

高项新版教程(第四版)解读+学习指导

第四版主要内容 技术部分 信息化教程、软件工程、网络技术是原来的,学习原来的录播。 新基建、工业互联网、车联网、农业现代化、数字化转型、元宇宙等是新增,以直播讲。 管理部分 变化不是太大 。 整合管理、人力变为资源管理、风险管理新增内容。 …...

【Debian】Debian10.0.0安装选项问答

debian的LXQT是什么? LXQT是一套轻量级的桌面环境,主要基于Qt框架开发。 LXQT在debian中的具体特点包括: - 使用Openbox作为窗口管理器,提供平铺式窗口布局。 - 文件管理器为PCManFM-Qt。 - 设置中心集成 debconf 配置界面。 - 支持GTK和Qt应用程序。 - 资源消耗较低…...

【基于React-Native做位置信息获取,并展示出来】

基于React-Native做位置信息获取 在这个里面最重要的是两个部分&#xff0c;一个是位置定位的权限获取&#xff0c;一个是实时位置的监听&#xff0c;在安卓项目中&#xff0c;在 android/app/src/main/AndroidManifest.xml该文件下&#xff0c;在< manifest > 标签内写…...

ansible安装、点对点Ad-Hoc、模块、剧本Playbook

DevOps: 官网&#xff1a;https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…...

Ceph入门到精通-ceph pool 删除导致 misplaced 的原因

misplaced 的原因 Ceph中的misplaced对象是指将对象&#xff08;或对象的副本&#xff09;存储在错误的位置上&#xff0c;这可能会导致性能下降或数据不一致的问题。在删除Ceph池时&#xff0c;可能会导致misplaced的原因有以下几个&#xff1a; 删除过程中的操作失误&#x…...

计算机组成原理课程设计

操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的&#xff0c;这些微命令怎么来设计&#xff1f; 一个萝卜…...

《从菜鸟到大师之路 MySQL 篇》

《从菜鸟到大师之路 MySQL 篇》 数据库是什么 数据库管理系统&#xff0c;简称为DBMS&#xff08;Database Management System&#xff09;&#xff0c;是用来存储数据的管理系统。 DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 实现读取自动化需要编程…...

使用qt完善对话框功能

1、 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两…...

Day 03 python学习笔记

位运算 基于二进制的运算&#xff08;计算机的底层基于位运算&#xff09; 计算机最小单位&#xff1a;bit (比特/位/二进制) 1byte&#xff08;字节&#xff09; 8bit &#xff08; 0000 0000&#xff09; &&#xff1a;与 &#xff08;全真为真&#xff0c;一假则…...

优化类问题概述

数学建模系列文章&#xff1a; 以下是个人在准备数模国赛时候的一些模型算法和代码整理&#xff0c;有空会不断更新内容&#xff1a; 评价模型&#xff08;一&#xff09;层次分析法&#xff08;AHP&#xff09;,熵权法&#xff0c;TOPSIS分析 及其对应 PYTHON 实现代码和例题…...

第一个 Go 程序“hello,world“ 与 main 函数

第一个 Go 程序"hello&#xff0c;world" 与 main 函数 文章目录 第一个 Go 程序"hello&#xff0c;world" 与 main 函数一.创建“hello&#xff0c;world”示例程序二. “hello&#xff0c;world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…...

MySQL缓冲池Buffer Pool

前言 ​ 在应用系统中&#xff0c;为加速数据访问&#xff0c;会把高频的数据放在「缓存」(Redis、MongoDB)里&#xff0c;减轻数据库的压力。在操作系统中&#xff0c;为了减少磁盘IO&#xff0c;同时为了快速响应&#xff0c;引入了「缓冲池」(buffer pool)机制。 ​ MySQL…...

springboot实现发送邮箱验证码

准备工作 在邮箱官网开放SMTP授权&#xff0c;获取相应密钥&#xff0c;才可以进行发送邮件 这里以网易163邮箱为例&#xff0c;登录邮箱后&#xff0c;依次点击“设置-POP3/SMTP/IMAP” &#xff0c;然后开启SMTP服务。这时候会提示一个授权码&#xff0c;例如&#xff1a;H…...

ESP8266使用记录(三)

通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…...

基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉…...

CloudCompare 二次开发(15)——点云添加高斯噪声

目录 一、概述二、代码集成三、结果展示一、概述 不依赖任何第三方点云相关库,使用CloudCompare编程实现点云添加高斯噪声。添加高斯噪声的算法原理见:PCL 点云添加高斯噪声并保存。 二、代码集成 1、mainwindow.h文件public中添加: void doActionAddGassNoise(); //…...

一波免费、好用的API接口分享

全国快递物流地图轨迹查询&#xff1a;【H5物流轨迹、单号识别】通过物流单号和收寄件地址&#xff0c;自动评估物流时效&#xff0c;并在地图中展示包裹运输轨迹。包括顺丰、圆通、申通等主流快递公司。自动识别快递公司及单号&#xff0c;实时查询&#xff0c;稳定高效&#…...

Android App ~ LiveData

LiveData 两种更新数据方式 setValue(T value)postValue(T value) setValue()只能在主线程中调用&#xff0c;postValue()可以在任何线程中调用。 MutableLiveData 1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据. 2.其次LiveData其实也是一个观察者…...

全球第4大操作系统(鸿蒙)的软件后缀.hap

system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序&#xff1a;这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事&#xff0c;比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应&#xff0c;Wind…...

当stm32遇上ai:利用快马平台辅助开发嵌入式语音关键词识别原型

最近在做一个嵌入式语音识别的小项目&#xff0c;用STM32F4开发板实现关键词唤醒功能。作为一个嵌入式开发者&#xff0c;第一次尝试把AI算法部署到资源有限的MCU上&#xff0c;整个过程踩了不少坑&#xff0c;也发现了一些高效开发的技巧&#xff0c;特别是借助InsCode(快马)平…...

SEO_影响搜索引擎排名的关键SEO因素分析

SEO&#xff1a;影响搜索引擎排名的关键SEO因素分析 在当今信息爆炸的时代&#xff0c;网站的流量和曝光度直接决定了一个品牌的市场竞争力。搜索引擎优化&#xff08;SEO&#xff09;是提升网站在搜索结果中排名的重要手段。本文将从多个角度分析影响搜索引擎排名的关键SEO因…...

明日方舟游戏资源解析:从数据提取到应用开发的技术实践

明日方舟游戏资源解析&#xff1a;从数据提取到应用开发的技术实践 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 在移动游戏开发领域&#xff0c;获取高质量的游戏资源并进行二次开发…...

解决vue项目 vscode查找文件应用 ctrl+鼠标点击import无法跳转的问题

踩坑 前提是 AI的解决方案处理完&#xff0c;你的vue文件一体的script可以查看里面的import文件引用&#xff0c;但是独立的index.js-import无论如何都查看不了文件应用。 解决办法 如下是我的tscoonfig.json。 实际上就是加上 【“allowJs”: true, //为了查看文件引用&#x…...

基于Translategemma-12b-it的跨国电商评论分析系统

基于Translategemma-12b-it的跨国电商评论分析系统 1. 引言 在全球化电商时代&#xff0c;企业面临着来自世界各地用户的多样化反馈。一位日本顾客对产品的赞美、一位德国用户对物流的抱怨、一位巴西消费者对价格的评价——这些多语言评论蕴含着宝贵的市场洞察&#xff0c;但…...

Docker镜像与容器操作全攻略

❤️一&#xff1a;镜像&#xff1a;把镜像保存为文件&#xff08;可放到其他虚拟机中运行&#xff09;&#xff1a; docker save -o centos-7.5-1804.tar&#xff08;保存的文件名&#xff09; centos:7.5.1804&#xff08;仓库:标签&#xff09;将镜像文件加载到本地镜像库&a…...

【农用无人机】dijkstra算法无人机农田农药喷洒路径规划【含Matlab源码 15284期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

4个维度解析QKeyMapper:如何通过全设备协同开源工具实现操作自由

4个维度解析QKeyMapper&#xff1a;如何通过全设备协同开源工具实现操作自由 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止。支持游戏手柄映射到键鼠&…...

Node.js环境下的实时口罩检测API开发与部署教程

Node.js环境下的实时口罩检测API开发与部署教程 1. 引言 在当今的智能化场景中&#xff0c;实时口罩检测技术已经成为许多公共场所和企业的必备功能。无论是商场入口、办公大楼还是公共交通场所&#xff0c;快速准确地检测人员是否佩戴口罩都显得尤为重要。 本教程将手把手教…...

WinAsar终极指南:3分钟掌握Windows平台asar文件图形化处理

WinAsar终极指南&#xff1a;3分钟掌握Windows平台asar文件图形化处理 【免费下载链接】WinAsar Portable and lightweight GUI utility to pack and extract asar( Electron archive ) files, Only 551 KB! 项目地址: https://gitcode.com/gh_mirrors/wi/WinAsar 还在为…...