Java架构直通车——RabbitMQ集群架构模式

2023-11-17

RabbitMQ四种架构模式

主备模式

主备模式也被称为warren(兔子窝),一个主/备方案(主节点挂掉后,从节点提供服务,和ActiveMQ利用Zookeeper做主/备一样,只不过RabbitMQ使用的是HAproxy做的主/备)。主节点提供读写,从节点不提供读写服务,只是负责提供备份服务

在这里插入图片描述
主节点宕机后,启用备份节点。当主节点恢复后,成为当前主节点的备份节点。
HAproxy配置如下:

  listen rabbitmq_cluster #主/备的集群名字
  bind 0.0.0.0:5672 
  mode tcp  #配置TCP模式
  balance roundrobin #简单的轮询
  server bhz76 192.168.11.12:5672 check inter 5000 rise 2 fall 3 #主节点
  server bhz77 192.168.11.13:5672 backup check inter 5000 rise 2 fall 3 #备用节点

rabbitmq集群节点配置 inter 每隔5秒对mq集群做健康检查,2次正确证明服务器可用,3次失败证明服务器不可用,并且配置主备机制

远程模式

实现远距离通信和复制,也就是双活的一种模式,简称Shovel模式。现在这种模式使用的不是很多了,因为它的可靠性有待提高,并且配置非常的麻烦。

所谓的Shovel就是我们可以把消息进行不同数据中心的复制工作,可以跨地域的让两个mq进行互联。怎么理解呢?上游的消息序列太大了,处理不过来了,可以堆积到下游进行处理,然后让两个集群进行互联的这样一个操作。

在这里插入图片描述

在使用了shovel插件后,模型变成了近端同步确认,远端异步确认方式,大大提高了订单确认速度,并且还能保证可靠性。

这样就是一个多活的方式。

镜像模式

这是业内使用的最主流的一种方式,集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。

Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个实现数据同步(对于100%数据可靠性解决方案一般是3个节点来做数据的备份存储),并且它的底层性能很高,使用erlang有媲美原生socket一样低的延迟,所以做数据同步的时候性能是特别好的。

其集群架构如下:
在这里插入图片描述
这种模式虽然能保证数据的高可用,但是缺点还是很明显的:不支持横向扩展,横向再增加一份是增加了rabbitmq集群的负担,因为4个节点4份数据要同步,那肯定吞吐量上一定是有所降低的。所以官方建议3个节点就行了。

如果要扩容,应该怎么办呢?也就是下面的多活模式解决的。

多活模式

这种模式也是实现异地数据复制的主流模式,因为Shovel模式配置比较复杂,所以一般来说实现异地集群都是使用双活或者多活模式来实现的。

这种模式需要依赖rabbitmq的federation插件,可以实现继续的可靠AMQP数据通信,多活模式在实际配置与应用非常的简单。可以简单的将federation插件的作用理解为上下游的消息的转发。

Federation插件是一个不需要构建Cluster,而在Brokers之间传输消息的高性能插件,Federation插件可以在Brokers或者Cluster之间传输消息,连接双方可以使用不同的users和vistual hosts,双方也可以使用版本不同的RabbitMQ和Erlang。Federation插件使用AMQP协议通信,可以接收不连续的传输。

Federation Exchanges,可以看成Downstream从Upstream主动拉取消息,但并不是拉取所有消息,必须是在Downstream上已经明确定义Bindings关系的Exchange,也就是有实际的物理Queue来接收消息,才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通信,Downstream会将绑定关系组合在一起,绑定/解绑命令将会发送到Upstream交换机。因此,FederationExchange只接收具有订阅的消息。

RabbitMQ部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心中各部署一套RabbitMQ集群,各中心之间还需要实现部分队列消息共享。多活集群架构如下:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java架构直通车——RabbitMQ集群架构模式 的相关文章

随机推荐

  • 利用cglib的BeanCopier用原型模式以及享元模式完成对象的拷贝

    实际上对象拷贝的工具有很多种 比如apache BeanUtils apache PropertyUtils spring BeanUtils 在一些业务代码中现在经常看到的都是spring BeanUtils来进行对象拷贝 大部分情况下来
  • Tensorflow运行报错:tensorflow/core/common_runtime/gpu/gpu_event_mgr.cc:220] Unexpected Event status: 1

    在跑keras上的代码时突然报错 tensorflow core common runtime gpu gpu event mgr cc 220 Unexpected Event status 1 跑了一下以前的代码都是跑的出来的 所以应该
  • 决策树损失函数

    决策树损失函数 一 决策树的损失函数 二 如何理解 在学习决策树的过程中 会存在损失函数 损失函数是什么呢 如何理解 一 决策树的损失函数 为了避免出现过拟合的现象 我们要对决策树进行剪枝 决策树的剪枝类似一种参数正则化的过程 其选择正则化
  • uart协议_UART协议帧格式

    参考文章 地址1 地址2 地址3
  • 安全开发-PHP应用&文件管理模块&显示上传&黑白名单类型过滤&访问控制&文件管理模块&包含&上传&遍历&写入&删除&下载&安全

    文章目录 文件管理模块 上传 过滤机制 文件管理模块 显示 过滤机制 PHP文件操作安全 文件包含 文件上传 文件删除 文件下载 文件编辑 文件管理模块 上传 过滤机制 FILES PHP中一个预定义的超全局变量 用于在上传文件时从客户端接
  • JS逆向之基础定位技巧

    篇幅有限 完整内容及源码关注公众号 ReverseCode 发送 冲 当我们拿到一个网站时 首先就是抓包定位加密参数的实现 本文将通过常用的定位方案结合实际案例完成对加密参数的分析 搜索关键参数 这是最常见也是最简单的定位方案 F12打开网
  • 详解在vue项目当中绑定键盘事件

    在vue项目当中 有时会遇到为文本输入框或者button按钮绑定键盘事件 最常见的就是enter回车事件 按照vue官网给出的方法是 v on keyup enter 简写 keyup enter 如果是绑定在组件上的话 需要加native
  • Spring Boot + Vue的网上商城之订单商品评价实现

    Spring Boot Vue的网上商城之订单商品评价实现 在网上商城中 用户下单购买商品后 通常会有一个订单评价的功能 用户可以对购买的商品进行评价和打分 本篇博客将介绍如何使用Spring Boot和Vue js实现订单商品评价功能 包
  • hp打印机怎么连接电脑_小白使用手册

    工作中 总是离不开文印 文印难题也是在所难免 而对于文印小白来说 只有在打印机一切正常的情况下才能顺利使用打印机 当打印机出现一点 异常 时 就变得不知所措 比如 电脑如何通过无线网络设置打印机 手机如何连接打印机等 问题 遇到这些问题不用
  • 华为od机考真题-跳跃比赛

    def dfs nums i 0 if len nums lt i 1 return 0 return min dfs nums i j 1
  • 视频瞳孔跟踪之星团模型

    视频瞳孔跟踪之星团模型 http www cnblogs com ren19930504 p 4319156 html 视频瞳孔跟踪之星团模型 1 预处理 1 1去除图像噪声 使用5 5的高斯平滑处理散粒噪声 使用 模型处理线路噪声 是第
  • 【华为OD机试真题2023B卷 JAVA&JS】分积木

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 分积木 知识点位运算线性表 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 Solo和koko是两兄弟 妈妈给了他们一大堆积木 每块积木上都有自己的重量 现在他们想要将这
  • 003:打印ASCII码

    003 打印ASCII码 描述 输入一个除空格以外的可见字符 保证在函数scanf中可使用格式说明符 c读入 输出其ASCII码 输入 一个除空格以外的可见字符 输出 一个十进制整数 即该字符的ASCII码 样例输入 A 样例输出 65 这
  • 毕设教学 多分类与数据预测分析算法 - python

    文章目录 0 前言 机器学习 基于逻辑回归 LightGBM XGBoost额的分类预测 一 基于逻辑回归的分类预测 1 逻辑回归的介绍和应用 1 1 逻辑回归的介绍 1 2逻辑回归的应用 2 Demo实践 Step1 库函数导入 Step
  • 加快edge网页的下载速度

    1 edge flags enable parallel downloading 2 点击enabled
  • tomcat8.5之后版本,远程无法登录管理页面

    1 修改 webapps magager META INF context xml文件 注意是webapp下manager发布包里的 不是conf下的context xml 隐藏其中的内容
  • python参数之间用什么分割_如何根据python的两个参数在美丽的汤中分割

    我使用beutifulsoup来提取文档中图像的地址 但是文档中的链接需要清理 特别是大多数图像都有类似的链接 image jpg amp 随机文本和我想要的信息https www webaddress com image jpg file
  • SpringIOC

    一 Sping理解 Spring 是个java企业级应用的开源开发框架 Spring主要用来开发Java应用 但是有些扩展是针对构建J2EE平台的web应用 Spring 框架目标是简化Java企业级应用开发 并通过POJO为基础的编程模型
  • hmcl启动器怎么联机_HMCL 启动器教程 #1 安装启动器

    HMCL 和其他第三方 Minecraft 启动器的安装流程比别的软件都难多了 它们不提供核善的安装程序 所以格外麻 quan 烦 tui 下面是 HMCL 详细安装教程 安装 Java 运行时环境 JRE 注意选择正确的版本 创建一个空的
  • Java架构直通车——RabbitMQ集群架构模式

    文章目录 RabbitMQ四种架构模式 主备模式 远程模式 镜像模式 多活模式 RabbitMQ四种架构模式 主备模式 主备模式也被称为warren 兔子窝 一个主 备方案 主节点挂掉后 从节点提供服务 和ActiveMQ利用Zookeep