RabbitMQ 集群之镜像同步

转载地址:http://www.cnblogs.com/LiangSW/p/6242280.html

mirrored

在上个博文中讲到了如果做集群,那么集群是成功了,但是queue是如何存放的呢?消息又是怎么同步呢。

默认的,也就是什么也不配置,直接在某个节点中添加一个queue,那么它仅仅是属于这个节点的。其它节点有的只是它的影子。所以像断线重连、操作恢复是无法做到的,实验证明确实是这样的。声明queue的节点关闭那么是无法再进行发布消息与消费的。这自然失去了集群的意义

image

 

所以default模式一般是不会进行使用的,我们的选择是 镜像节点

queue mirror 也就是说,也就是 会有一个 master 对应零个或多个 slave

也可以说成主从复制,每个节点都有着相同的数据,某个节点挂掉了,另一个可以立即顶上

 

官方的文档也可以看到,镜像的配置是通过 policy 策略的方式

image

我们有三种同步的方式,一般来说  all 是我们的最佳选择

all 所有的节点都将被同步

exactly 指定个数的节点被同步

nodes 指定的名称的节点被同步

一个简单的示例,下面使用的是ha-all 是我们的策略名称,后面的是^ha\. 则是一个正则,queue名满足这个规则的,将被做镜像。方式是所有的节点都被同步

这里需要说明的是 策略 可以被应用到exchange与queue上面,也可以选择只被应用到哪个上面,下面的命令则是exchange与queue都被应用到了

rabbitmqctl set_policy ha-all "^ha\." "{""ha-mode"":""all""}"

image

翻看文档,似乎没有提供apply to 的参数,所以下面的操作都将使用WEB UI可以看到WEB UI的创建策略给我们提供了丰富的选项,比如Apply to,优先级,等其它设置

image 

我们需要关注提上图中 关于 HA的参数

Ha mode 同步方式

Ha params 选择其它同步方式的参数 比如节点名

Ha async mode 同步方式,这个需要详细说明的,默认的情况下。当节点断线后那么这个节点就已经是落后的版本,当我们再去启动节点的时候数据我们需要去手动的同步,这自然是不好的,做到自动化是最完美的,所以设置成automatic是最佳选择

下面设置一个作用与queue,集群中的所有节点将被同步,并且断线重启后自动同步的的策略

image

 

设置完毕后,就可以通过代码来看看效果了,因为使用了集群,所以创建connection的时候需要做些变化了,创建连接的时候把节点的ip放了进去。

AutomaticRecoveryEnabled  断线重连,也就是如果当前的连接断开了,将会尝试重连

TopologyRecoveryEnabled 重连后恢复当前的工作进程,比如channel、queue、发布的消息进度等

复制代码
               var factory = new ConnectionFactory()
                {
                    UserName = "admin",
                    Password = "admin",
                    AutomaticRecoveryEnabled = true,
                    TopologyRecoveryEnabled = true
                };


                Connection = factory.CreateConnection(new string[3] { "192.168.1.115", "192.168.1.113", "192.168.1.123" });
复制代码

这里声明了一个test1queue,然后进行发布消息,当节点崩溃,代码自然也会异常。所以try catch起来,但是没关系。因为我们已经设置了断线重连,所以一会儿,就会恢复如常

复制代码
//创建返回一个新的频道
            using (var channel = RabbitMqHelper.GetConnection().CreateModel())
            {
                channel.QueueDeclare("test1", true, false, false, null);

                var properties = channel.CreateBasicProperties();
                properties.Persistent = true;
                for (var i = 0; i < 10000; i++)
                {
                    try
                    {

                        channel.BasicPublish(string.Empty, "test1", properties, Encoding.UTF8.GetBytes($"这是{i}个消息"));
                        Thread.Sleep(1000);
                        Console.WriteLine($"发布消息 {i}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        i--;
                    }
                }

            }
复制代码

程序运行后,在WEB UI中已经可以看到了,主节点是rabbimq1,剩下的是从节点。

image

可以看到现在连接到的节点是rabbitmq2,现在我们可以手动的把它挂掉

image

D4UIV_$Y2L]VUDC8Y{[3W~8

可以看到应用程序一直在报错,就这么报了一会,然后又继续发布消息了。这样就保证了我们消息队列的高可用、高可靠

image




rabbitmq 同步策略_RabbitMQ 高可用之镜像队列
weixin_42523718的博客
01-01 1103
如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非持久化message存储于非持久化queue中的时候)。可以将所有message都设置为持久化,并且使用持久化的queue,但是这样仍然无法避免由于缓存导致的问题:因为message在发送之后和被写入磁盘并执行fsync之间存在一个虽然短暂但是会产生问题的时...
RabbitMQ——镜像队列问题(一)
hncscwc的博客
10-23 2394
最近在使用镜像队列的过程中遇到了一些坑,通过阅读相关源码,大量的测试,不敢说对其中的原理掌握得非常透彻, 但基本能分析定位问题的原因,并且能自圆其说。这里整理总结下, 方便后续的回溯。欢...
RabbitMQ 镜像集群同步策略_专栏讲解
Gblfy_Blog
05-04 4083
文章目录一、 基础知识汲取1.1. 镜像集群简述1.2. 策略参数说明1.3. 策略案例二、HA mode 同步方式2.1. 参数说明2.2. 案例2.3. 命令终端形式2.4. MQ管控台设置2.5. 队列同步2.5. 优缺点三、Ha async mode 同步方式(推荐使用)3.1. 参数说明3.2. 案例3.3. 命令终端形式3.4. MQ管控台设置四、ha-mode:nodes镜像到到...
RabbitMQ集群配置方案
最新发布
pch330818的博客
08-12 1111
rabbitmq-server 启动时,会一起启动:节点和应用,它预先设置RabbitMQ应用为standalone(脱机)模式。要将一个节点加入到现有的集群中,你需要停止这个应用,并将节点设置为原始状态。如果使用rabbitmqctl stop,应用和节点都将被关闭。(停应用,不停止节点)1.将rabbitmq2和rabbitmq3加入到rabbitmq1中组成集群集群名字一定不要写错(查看rabbitmq1 的节点状态)仅停止应用,不关闭节点(注意是节点2)仅停止应用,不关闭节点(注意是节点3)
RabbitMQ集群故障恢复
qq_43654581的博客
11-24 4394
RabbitMQ集群故障恢复
rabbitmq 同步策略_RabbitMQ 集群镜像同步
weixin_42142062的博客
01-12 460
在上个博文中讲到了如果做集群,那么集群是成功了,但是queue是如何存放的呢?消息又是怎么同步呢。默认的,也就是什么也不配置,直接在某个节点中添加一个queue,那么它仅仅是属于这个节点的。其它节点有的只是它的影子。所以像断线重连、操作恢复是无法做到的,实验证明确实是这样的。声明queue的节点关闭那么是无法再进行发布消息与消费的。这自然失去了集群的意义 所以default模式一般是不会进行使用的...
rabbitMq集群镜像模式
热门推荐
wexiaoword的博客
08-02 3万+
RabbitMQ集群的两种模式1)普通模式:默认的集群模式。 2)镜像模式:把需要的队列做成镜像队列。 普通模式:默认的集群模式 RabbitMQ集群节点包括内存节点、磁盘节点。内存节点就是将所有数据放在内存,磁盘节点将数据放在磁盘上。如果在投递消息时,打开了消息的持久化,那么即使是内存节点,数据还是安全的放在磁盘。那么内存节点的性能只能体现在资源管理上,比如增加或删除队列(queue),...
RabbitMQ镜像集群与Shovel&Federation跨集群数据同步
qq_39344638的博客
07-14 1979
RabbitMQ集群数据同步RabbitMQ的RPO测量与设定,Shovel和Federation工具的使用。
7、RabbitMQ集群(普通模式、镜像模式)
java爱分享
01-01 4392
集群-普通模式 RabbitMQ是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA高可用方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加...
RabbitMQ镜像集群搭建及Springboot整合使用
m0_46189412的博客
11-04 1537
在任意一台rabbitmq上面增加交换机和队列,另一台会自动同步。主机1:192.168.111.100。主机2:192.168.111.101。两台主机提前安装好docker备用。springboot项目。第一台服务器重启为主节点。第二台服务器加入到主节点。docker相关知识。
RabbitMQ——镜像队列Master故障后的处理
hncscwc的博客
06-13 986
默认情况下,镜像队列的master出现故障时,最老的mirror会被提升为新的master。如果新提升为master的这个mirror与原有的master并未完成数据的同步,那么就会出现...
RabbitMQ普通集群镜像集群集群负载均衡、压力测试、选举策略及测试、集群故障恢复【集群超大全详解】
lienze.tech
01-04 1262
前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。 微信小程序搜索:Python面试宝典 或可关注原创个人博客:https://lienze.tech 也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习 集群 集群首先要明白rq中两
rabbitmq 了之后再启动不成功
xiaoliuliu2050的专栏
12-25 2850
故障描述 由于磁盘满,导致rabbitmq崩溃,无法提供服务 清理磁盘空间后,rabbitmq无法自动恢复正常 sudo service rabbitmq-server start 启动失败 sudo systemctl restartrabbitmq-server 看日志提示 是重新构建索引失败了。 所以应该是恢复队列内容数据时候发生了错误 可能是由于磁盘满了,队列数据写磁...
RabbitMQ 镜像队列 使用和原理详解
金甲虫的博客
04-11 7152
文章目录1. 背景2. 镜像队列概述3. 使用方法和注意事项3.1 配置方法3.1.1 管理界面配置3.1.2 命令行3.1.3 HTTP API3.2 镜像队列配置观测3.3 配置参数3.3.1 镜像策略3.3.2 新镜像同步策略3.3.3 从节点晋升策略3.3.4 主队列选择策略3.4 注意事项3.4.1 多少个镜像才是最优的3.4.2 生产者确认和事务3.4.3 流控3.4.4 主节点失效和消费者取消4. 镜像队列原理4.1 镜像队列的数据流4.1.1 客户端连接主节点4.1.2 客户端连接从节点4.
RabbitMQ(六)镜像队列
ex-huh001的博客
10-10 1339
一、镜像队列 默认情况下,RabbitMQ集群中的队列只会存储在某一个节点上,就是队列声明的那个节点上。当访问集群中的其他节点时,会把请求转发给这个节点来进行处理。当这个节点故障时,集群中的这个队列就表现为不可用。队列可以在多个节点中复制镜像以保障可用性,称之为镜像队列。 每一个镜像队列由一个master和若干个slave组成。队列的master通常存储在集群的主节点上,没个队列有自己的主节点镜像队列的所有操作都会首先在mastEr上执行然后广播给其他镜像。包括消息入队,推送给消费者、和消费...
RabbitMQ-模式、集群、故障恢复
qq_23555141的博客
04-09 2783
mq模式 集群 故障恢复
RabbitMQ 队列镜像配置 主机 掉 之后 自动切换 另一台
天外有天,人外有人。 专注品质 不断创新 让精益求精成为习惯
12-29 5546
第三部分——队列镜像配置          在完成RB集群配置之后,在高可用性已经向前走了一步,在了解了RB集群的特点之后,我们知晓RB中Queue的消息只存在于对应的接收节点,这种情况当对应的存储消息的节点(或称主服务)异常宕机的情况下,就存在消息丢失的可能,怎么改善这种应用场景,RB为我们提供了镜像队列(Mirror Queue)的方式。(http://www.rabbitmq.com/
RabbitMQ原理、集群、基本操作及常见故障处理
xinkuaile的专栏
06-19 560
本次学习主要针对运维人员,和对rabbitmq不熟悉的开发人员。通过本次学习你将掌握rabbitmq 的基本原理、集群、基本运维操作、常见故障处理。 1、原理与概念 简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。Rabbi...
rabbitmq镜像集群数据强一致
01-13
总而言之,rabbitmq镜像集群通过数据的复制和同步,保证了消息队列数据的强一致性。这种集群方式不仅提高了系统的可用性和容错性,还保证了消息的可靠性和持久化,确保了系统在任何情况下都能正常工作。
写文章

热门文章

  • textarea 在浏览器中固定大小和禁止拖动 213550
  • 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. . 66640
  • 基于SAML的单点登录介绍 42370
  • string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法的区别 39124
  • C# ftp 上传、下载、删除 32195

分类专栏

  • CICD 7篇
  • [ 00 ] Linux&Docker&MySQL 32篇
  • Azure 2篇
  • python&django&selenium 10篇
  • VS Code DEV 3篇
  • VSCode Element VUE 3篇
  • Skywalking 7篇
  • Xxx 22篇
  • [ 01 ] .NET 330篇
  • [ 03 ] SQL Server 113篇
  • [ 04 ] PHP 16篇
  • [ 05 ] JS&HTML&CSS 94篇
  • [ 06 ] Silverlight&T4&Nginx 14篇
  • [ 10 ] 未归档&正则表达式 72篇
  • [ 17 ] 维护应用程序状态 13篇
  • [ 19 ] 项目管理 33篇
  • [ 20 ] Oracle 53篇
  • [ 21 ] Winform&Web标准 39篇
  • [ 27 ] UML&设计模式 14篇
  • [ 33 ] IIS&VS工具 26篇
  • [ 38 ] 富文本编辑器&QC&VBA 20篇
  • [ 43 ] SVN&BAT 36篇
  • [ 44 ] Lucene & elasticsearch 16篇
  • [ 56 ] 支付接口 7篇
  • [ 64 ] Single Sign On 17篇
  • [ 69 ] Redis&MongoDB&android 9篇
  • [ 74 ] RabbitMQ&Power Automate 27篇
  • [ 76 ] Log4Net&ExceptionLess 6篇
  • [ 77 ] .NET Core&Ioc 22篇

最新评论

  • Nginx + MySql5.7 主从 主主 高可用集群环境搭建

    安得权: 9.104 和 9.106 和 9.107 都可以连接,根据你的想法来

  • Nginx + MySql5.7 主从 主主 高可用集群环境搭建

    安得权: 192.168.9.104:3306

  • Nginx + MySql5.7 主从 主主 高可用集群环境搭建

    weixin_61608495: jdbc连接指定数据怎么写呢

  • MySQL 快速找到 锁表 以及正在锁表的SQL的方法

    CSDN-Ada助手: 推荐 MySQL入门 技能树:https://edu.csdn.net/skill/mysql?utm_source=AI_act_mysql

  • Azure SqlServer 创建只读账号 - 给一个数据库

    CSDN-Ada助手: 如何在 SQL Server 中查询数据?

大家在看

  • Vue 计算属性(computed)的使用和优化 903
  • Android14音频进阶之如何集成音效(八十五) 1235
  • 《Flask Web应用开发 基于Python和统信UOS》这本书数据库管理与操作方面的内容如何? 444
  • 自然语言处理实战项目 665
  • 基于nodejs+vue小区物业管理系统[开题+源码+程序+论文]计算机毕业设计

最新文章

  • Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
  • Windows .NET8 实现 远程一键部署,几秒完成发布,提高效率 - CICD
  • Windows Server SSH 免密登录 环境
2024
09月 3篇
08月 15篇
07月 9篇
06月 14篇
05月 3篇
02月 3篇
2023年6篇
2022年7篇
2021年42篇
2020年18篇
2019年34篇
2018年42篇
2017年42篇
2016年71篇
2015年77篇
2014年223篇
2013年203篇
2012年93篇
2011年83篇
2010年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家安徽玻璃钢雕塑厂招聘长春小品系列玻璃钢雕塑生产厂家义乌人物玻璃钢雕塑设计山西省玻璃钢雕塑生产厂家玻璃钢日漫形象雕塑资阳创意成都商场美陈成都仿铜玻璃钢雕塑白银公园玻璃钢雕塑哪家好玻璃钢瓜果雕塑哪里有临江玻璃钢价值观雕塑玻璃钢超人雕塑鹤壁玻璃钢彩绘雕塑户外游乐场玻璃钢卡通雕塑定做淮南公园玻璃钢雕塑哪家便宜甘南玻璃钢卡通雕塑设计义乌城市玻璃钢雕塑北京市玻璃钢雕塑报价春节商场美陈照片北京走廊商场美陈现价开封玻璃钢泡沫雕塑价格上海玻璃钢老虎雕塑保定玻璃钢雕塑承诺守信郴州玻璃钢雕塑设计公司福州多彩玻璃钢雕塑白银玻璃钢动物雕塑河北周年庆典商场美陈怎么样商场增加美陈的申请禅城玻璃钢人物雕塑山西动物玻璃钢雕塑定做价格玻璃钢抽象猴子雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化