问题: 如果我有一个 RabbitMQ 集群,那么是不是我的消息集群中的每一个实例都保存一份呢?

这里就涉及到 RabbitMQ 集群的两种模式。

普通集群

将 RabbitMQ 部署到多台服务器上,每个服务器启动一个 RabbitMQ 实例,多个实例之间进行消息通信。

此时我们创建的队列 Queue,它的元数据(主要就是 Queue 的一些配置信息)会在所有的 RabbitMQ 实例中进行同步,但是队列中的消息只会存在于一个 RabbitMQ 实例上,而不会同步到其他队列。

当我们消费消息的时候,如果连接到了另外一个实例,那么那个实例会通过元数据定位到 Queue 所在的位置,然后访问 Queue 所在的实例,拉取数据过来发送给消费者。

这种集群可以提高 RabbitMQ 的消息吞吐能力,但是无法保证高可用,因为一旦一个 RabbitMQ 实例挂了,消息就没法访问了,如果消息队列做了持久化,那么等 RabbitMQ 实例恢复后,就可以继续访问了;如果消息队列没做持久化,那么消息就丢了。

镜像集群

和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。

节点类型

RabbitMQ 中的节点类型有两种:

  • RAM node:内存节点将所有的队列、交换机、绑定、用户、权限和 vhost 的元数据定义存储在内存中,好处是可以使得交换机和队列声明等操作速度更快。
  • Disk node:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防止重启 RabbitMQ 的时候,丢失系统的配置信息。

RabbitMQ 要求在集群中至少有一个磁盘节点,所有其他节点可以是内存节点,当节点加入或者离开集群时,必须要将该变更通知到至少一个磁盘节点。如果集群中唯一的一个磁盘节点崩溃的话,集群仍然可以保持运行,但是无法进行其他操作(增删改查),直到节点恢复。为了确保集群信息的可靠性,或者在不确定使用磁盘节点还是内存节点的时候,建议直接用磁盘节点。

手把手教你搭建 RabbitMQ 集群

RabbitMQ 之集群模式相关推荐

  1. RabbitMQ的集群模式

    普通模式 默认模式,以两个节点(rabbit01,rabbit02)为例来进行说明,对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabb ...

  2. RabbitMQ 镜像集群之同步策略_专栏讲解

    文章目录 一. 基础知识汲取 1.1. 镜像集群简述 1.2. 策略参数说明 1.3. 策略案例 二.HA mode 同步方式 2.1. 参数说明 2.2. 案例 2.3. 命令终端形式 2.4. M ...

  3. RabbitMQ 镜像集群配置_05

    接上一篇:(企业级) RabbitMQ 普通集群配置_04 文章目录 一.RabbitMQ 策略实战 1. 创建RabbitMQ 策略 2. ly-01节点查看创建RabbitMQ 策略 3. 登录l ...

  4. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  5. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  6. RabbitMQ学习之集群模式

    由于RabbitMQ是用erlang开发的,RabbitMQ完全依赖Erlang的Cluster,因为erlang天生就是一门分布式语言,集群非常方便,但其本身并不支持负载均衡.Erlang的集群中各 ...

  7. 消息队列专题(架构篇):RabbitMQ 的集群架构模式

    RabbitMQ 的集群架构模式主要有四种,分别是主备模式.远程模式.多活模式和镜像模式,本篇博客将依次介绍这四种架构模式,其中的镜像模式使用范围最广,我们将对其进行重点介绍. 主备模式 主备模式是指 ...

  8. RabbitMQ分布式集群架构

    RabbitMQ分布式集群架构和高可用性(HA) (一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配 ...

  9. 消息中间件—RabbitMQ(集群原理与搭建篇)

    一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性.并发性.吞吐量和消息堆积能力等问题的考虑,在生产 ...

最新文章

  1. Citrix VDI实战攻略之五:vDisk配置
  2. 【c语言】蓝桥杯算法提高 征税程序
  3. 域服务器重装系统,win10系统配置域控制器的详细步骤
  4. php单词出现频率,PHP计算文件或数组中单词出现频率
  5. ORACLE中的INTERVAL类型
  6. junit测试线程_一个在自己的线程中运行测试的JUnit规则
  7. 专栏数量创新高、问答wap端新视觉
  8. HTTP1.1与HTTP1.0
  9. 听说这家云计算公司要搞事情
  10. 2004-2020历年美赛优秀论文资源
  11. 压缩包密码破解工具-ARCHPR
  12. bootstrap table表格点击行checkbox勾选或取消勾选
  13. 为Android虚拟机创建SDCard
  14. 小波模极大值用于图像融合
  15. 加密视频(java加密视频)
  16. clickhouse中的TTL
  17. 通达信接口公式怎样进行破解?
  18. Oracle字符串截取和大小写转换
  19. 51单片机~串口通信(讲解+代码)
  20. 别人5M带宽 搭建的节点,比我100M 搭建的节点 还要流畅

热门文章

  1. 你不可能成为一个死理性派
  2. 034:vue+openlayers上传KMZ文件并在map上解析(代码示例)
  3. Centos 7 虚拟机安装 jenkins
  4. Spring Security CSRF防御源码分析
  5. win10系统升级没有声音?老司机教你怎么重新安装声卡驱动
  6. HTML实现图片切换
  7. 联想潮5000 BIOS 解锁 CFG Lock
  8. 【C语言作业7】猜数游戏:先由计算机“想”一个数请人猜,如果人猜对了,则计算机给出提示:“Right”,否则提示“Wrong”,并告诉人所猜的数是大还是小。
  9. 2022.04.14【读书笔记】|转录因子分析
  10. 文献分析工具Connected Papers