消息中间件之RabbitMQ(四):集群搭建以及一些其他知识

RabbitMQ 高可用集群搭建 RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 ​ 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每个节点共享所有的用户,虚拟主机,队列,交换器,绑定关系,运行时参数和其他分布式状态等信息。一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图: 这里对上面的集群架构做一下解释说明: ​ 首先一个基本的 Rabbi 阅读详情

集群搭建

  • 比较简单,有空再尝试搭建,大概步骤如下
  • 准备3台rabbitmq
  • 保证相互之间可以ping通,最好修改hostname便于分辨
  • 复制 erlang 的 cookie(RabbitMQ 集群需要在每个从节点上使用与主节点一样的 ErLang Cookie),参考如下:
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
  • 重启3台mq
  • node2执行相关命令加入node1,node3加入node2
  • 任意一台mq上查看集群状态,ok
  • 创建账户、设置角色、权限等
  • 解除某个节点,执行相关命令即可

配置镜像队列

  • 默认搭好的集群,每个节点之间,数据是不同步的,需要配置镜像队列
  • 在管理界面添加策略:保持集群中始终有2台机器数据自动同步,所有创建的队列必须带上指定前缀才生效

在这里插入图片描述

Nginx+Keepalived实现MQ负载均衡+HA

  • MQ默认不支持负载均衡,需要配合Nginx或HAProxy实现负载均衡,如果要两台Nginx,则还需要使用Keepalived实现Nginx的HA以及虚拟IP,最终用户通过虚拟IP就可以负载均衡到所有MQ节点
  • 有空再实战,架构图如下:

在这里插入图片描述

备份交换机

  • 对于已经到达队列但无法被正常消费的消息,可以设置死信队列来存储这些消息
  • 但是对于不可路由的消息,根本没有机会进入到队列,因此无法使用死信队列
  • 在 RabbitMQ 中,有一种备份交换机的机制存在,可以很好的应对这个问题
  • 备份交换机就是用于处理无法被普通交换机路由的消息
  • 需要注意:当同时设置了消息回退机制和备份交换机时,会优先采用备份交换机
  • 下图中,无法路由的消息将通过备份交换机发送给告警队列,示意图:

在这里插入图片描述

  • 核心配置:
//声明确认交换机的备份交换机
@Bean
public DirectExchange confirmExchange() {
    ExchangeBuilder exchangeBuilder = ExchangeBuilder.directExchange(CONFIRM_EXCHANGE_NAME)
        .durable(true)
        .alternate(BACKUP_EXCHANGE_NAME);//设置该交换机的备份交换机
        //.withArgument("alternate-exchange", BACKUP_EXCHANGE_NAME);
    return exchangeBuilder.build();
}
  • 告警队列消费者:
@RabbitListener(queues = WARNING_QUEUE_NAME)
public void receiveWarningMsg(Message message) {
    String msg = new String(message.getBody());
    log.warn("报警发现不可路由消息:{}", msg);
}

优先队列

  • 是指队列中的消息具备优先级,优先级高的消息将先被消费
  • 使用场景:订单催付,大客户先催付
  • 创建队列时指定参数:QueueBuilder.durable(WARNING_QUEUE_NAME).maxPriority(10).build()(优先级在0-255之间)
  • 发送消息时指定优先级即可

惰性队列

  • 惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中
  • 当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时,惰性队列就很有必要了
  • 在创建队列时设置即可:QueueBuilder.durable(BACKUP_QUEUE_NAME).lazy().build();
  • MQ从 3.6.0 版本引入了惰性队列的概念

Federation exchange 和 shovel

  • 有空再学
【RabbitMQ】之高可用集群搭建 1、默认集群原理单台 RabbitMQ 服务器处理消息的能力是有瓶颈的,而且可靠性还无法保证,所以需要通过集群来提高消息的吞吐量和提高数据可靠性。由于 RabbitMQ 本身是基于Erlang编写,而Erlang 语言天生具备分布式特性通过同步 Erlang 集群各节点的 erlang.cookie 来实现因此,RabbitMQ 天然支持集群,并且还能通过水平扩展节点的方式提高吞吐量。在一个多节点的 RabbitMQ 集群中,Exchange交换器)的元数据(Metadata。 阅读详情

相关推荐

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 854

rabbitmq集群,负载均衡,Federation Exchange

RabbitMQ集群 1、为什么使用集群 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办? 单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢? 购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键. 2、搭建

白鸽 750

零基础手把手教你做FMEDA

本文通过分步骤手把手来教大家具体如何做FMEDA,希望对工作中要做FMEDA的童鞋有帮助。对于工作当中用不到FMEDA的童鞋,也可以作为科普知识,更好地了解一下FMEDA及硬件功能安全。

NewCarRen的博客 9929

springboot整合rabbitmq集群配置并实现消息确认

一,集群环境搭建 见文章: Linux安装rabbitMq及elrang环境_qq837993702的博客-优快云博客 RabbitMQ 集群环境搭建_qq837993702的博客-优快云博客 二、pom文件配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&gt

qq837993702的博客 4888

RTC时钟芯片替换代码移植-IIC通信

1、问题 RTC时钟芯片由爱普生RX-8010SJ更换成大普INS5710A,两者都是IIC通信,更换大普芯片后时钟不走、以及报掉电错误。仿真分析原因是CPU和RTC芯片收发数据延时不够导致,根据爱普生芯片手册,8010收发数据不采取延时,但大普芯片采用同样方式读取不行(需要加延时) 2、RX-8010SJ手册说明(以读取数据为例) (1)寄存器读操作时序图 指定地址读操作: 1)CPU 发送开始条件[S] 2)CPU 传输RX-8010SJ 的从地址,用R/W 位设定写模式 3)检测从RX-8010

weixin_42851683的博客 2066

TexGen模型导出ABAQUS inp文件时纱线材料属性缺失?5分钟快速修复指南

本文针对TexGen模型导出ABAQUS inp文件时纱线材料属性缺失的问题,提供了快速修复指南。通过手动编辑inp文件或使用Python脚本自动补全材料属性,帮助复合材料仿真工程师高效解决问题。文章还介绍了TexGen导出前的预防性设置和ABAQUS中的验证技巧,确保仿真分析的准确性。

qsc901234的博客 250

RabbitMQ集群方案

目录 1.集群方案的原理 2.单机多实例部署 3.RabbitMQ镜像集群配置 4.负载均衡-HAProxy 4.1 安装HAProxy 4.2 配置HAProxy 实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用Ra

老王不掉头发的博客 3083

InVEST模型实战指南:从水源涵养到热岛缓解的生态系统服务评估

本文提供了InVEST模型的实战指南,详细介绍了从环境搭建、数据预处理到核心模型应用的完整流程。通过水源涵养、碳存储、土壤保持和城市热岛缓解等核心模型的拆解,帮助生态学者与规划者系统量化评估生态系统服务,将复杂的生态价值转化为直观的空间数据与地图,为科学决策提供有力支撑。

weixin_29197051的博客 430

spring boot整合rabbitmq以及使用场景和集群搭建

个人印象笔记地址:https://app.yinxiang.com/fx/c19556bc-e80f-4f4c-bf1f-04595af67180 SpringBoot整合RabbitMQ 搭建初始环境 1. 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId>

weixin_43373417的博客 1193

一篇文章认识《双目立体视觉》

双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,具有深度的信息;单目视觉只能看到二维的物体。 1)双目摄像头 2)双目相机基线 3)打开双目摄像头 4)双目测距 视差disparity、 极线约束、 极线校正/立体校正、 a.双目标定 b.双目矫正 c.立体匹配 d.双目测距(三角测量) e.测距效果 立体视觉方法评测网站

黎国溥 7958

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

springboot整合rabbitmq集群配置项详解

https://blog.youkuaiyun.com/qq_45491757/article/details/105712530 springboot整合rabbitmq 集群创建方式这里省略 整合开始 1 引入starter <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&gt...

yygr的博客 7405

self‑improving‑agent 安装与配置指南(OpenClaw)

长期记忆错误反思用户偏好学习持续进化AI → 反思 → 学习 → 改进。

tiantiantbtb的博客 1340

RabbitMQ 集群

RabbitMQ集群

不能再留遗憾了的博客 3854

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

详解RabbitMQ单机多节点搭建集群

详解RabbitMQ单机多节点搭建集群。

. 3458

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RabbitMQ 消息中间件与集群的部署

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

zbw0323的博客 1947

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

手把手教你搭建 RabbitMQ 集群

文章目录1. 两种模式1.1 普通集群1.2 镜像集群1.3 节点类型2. 搭建普通集群2.1 预备知识2.2 开始搭建2.3 代码测试2.4 反向测试3. 搭建镜像集群3.1 网页配置镜像队列3.2 命令行配置镜像队列4. 小结 单个的 RabbitMQ 肯定无法实现高可用,要想高可用,还得上集群。 今天松哥就来和大家聊一聊 RabbitMQ 集群的搭建。 1. 两种模式 说到集群,小伙伴们可能第一个问题是,如果我有一个 RabbitMQ 集群,那么是不是我的消息集群中的每一个实例都保存一份呢? 这其实就

江南一点雨的专栏 1万+

RabbitMQ集群的搭建

讲解单机部署RabbitMQ集群,通过集群的搭建去理解集群思想以及集群知识的理解。

一心同学的博客 3961

RabbitMQ之集群搭建

1.RabbitMQ集群模式RabbitMQ集群中节点包括内存节点(RAM)、磁盘节点(Disk,消息持久化),集群中至少有一个Disk节点。2.普通模式(默认)        对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。        应用...

jinyidong的博客 2万+

RabbitMQ集群搭建

RabbitMQ集群搭建

qq_46112274的博客 4437

RabbitMQ——Docker搭建RabbitMQ集群

文章目录RabbitMQ——Docker搭建RabbitMQ集群1、普通集群的搭建1.1、普通集群架构介绍1.2、环境准备1.3、集群搭建2、镜像集群的搭建2.1、配置镜像集群的策略 RabbitMQ——Docker搭建RabbitMQ集群 集群模式介绍 RabbitMQ集群模式有两种:普通模式和镜像模式 普通模式:默认模式,多个节点组成的普通集群,消息随机发送到其中一个节点的队列上,其他节点仅保留元数据,各个节点仅有相同的元数据,即队列结构、交换器结构、交换器与队列绑定关系、vhost。消费者消费消

万里顾一程的博客 5833

RabbitMQ集群搭建及使用

前提条件:linux服务器下已经安装好了docker服务。本文档将搭建一个三台RabbitMQ的集群,包括三个RabbitMQ容器安装在同一服务器和三台不同的服务器。

weixin_46562226的博客 1541

RabbitMQ镜像集群搭建

集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。它和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2万+

消息中间件:RabbitMQ镜像集群部署配置全流程

涵盖环境准备、安装Erlang和RabbitMQ、配置RabbitMQ节点、启动RabbitMQ服务、将节点加入集群以及设置镜像队列策略等关键步骤。

weixin_45065854的博客 2333

RabbitMQ详解(四):RabbitMQ集群默认模式、使用Docker搭建RabbitMQ集群、镜像队列

七、RabbitMQ集群 1、默认模式 RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的情况下继续运行,它可以通过添加更多的节点来线性地扩展消息通信的吞吐量。当失去一个RabbitMQ节点时,客户端能够重新连接到集群中的任何其他节点并继续生产或者消费 RabbitMQ集群不能保证消息的万无一失,即使将消息、队列、交换器等都设置为可持久化,生产端和消费端都正确地使用了确认方式,...

hxt的博客 5268

CentOS系统用docker搭建rabbitMQ集群

文章目录前言一、环境准备二、部署RabbitMQ1.在机器1上安装RabbitMQ执行命令部分参数解释docker ps -a ,查看容器状态浏览器输入RabbitMQ管理地址2.在机器2上安装RabbitMQ执行命令docker ps -a ,查看容器状态浏览器输入RabbitMQ管理地址三、搭建普通集群模式1.rabbitmq1容器配置进入容器进入容器后通过rabbitmqctl命令对MQ进行操作2.rabbitmq2容器配置进入容器进入容器后通过rabbitmqctl命令对MQ进行操作四、代码测试1.

qq_27895527的博客 3102
上一篇: 消息中间件之RabbitMQ(三):死信队列和延迟队列
下一篇: 基于Hexo+GitHub Pages搭建的个人静态网站
NGC 604
博客等级 码龄9年 165粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值