Rabbitmq-集群

集群分类

RabbitMq是天然支持集群模式。rabbitmq的集群有两种模式:

  • 普通模式: 是一种分布式集群,将队列分散到集群各个节点,从而提供整个集群的并发能力。可用性不高。因为一个节点宕机,这个节点上的数据将不可用。
  • 镜像集群:是一种主从集群,普通集群的基础上,添加了主从备份功能,提供集群的数据可用性。

镜像集群虽然支持主从,但主从同步并不是强一致性的,某些情况下可能有数据丢失的风险。因此在RabbitMq的3.8版本以后退出了新的功能:仲裁队列来替代镜像集群。底层采用Raft协议确保主从的数据一致性。

普通集群

普通集群,或者叫标准集群(classic cluster),具备下列特征:

  • 会在集群各个节点间共享数据部分,包括交换机,队列元信息(队列的名字,队列的地址)。但是不包含队列的信息
  • 当访问集群某节点时,如果队列不再该节点,会在数据所在节点传递到当前节点并返回(因为共享队列的元信息)
  • 队列所在节点宕机,队列中消息将会丢失。

在这里插入图片描述

镜像集群

镜像集群: 本质是主从模式,具备下面的特征:

  • 交换机,队列,队列中消息会在各个mq的镜像节点之间同步备份。
  • 创建队列的节点被称为队列的主节点,备份到其他节点叫做该队列的镜像节点。
  • 一个队列的主节点可能是另一个队列的镜像节点
  • 所有操作都是主节点完成,然后同步给镜像节点
  • 主节点宕机后,镜像节点会成为主节点
    在这里插入图片描述

仲裁队列

是用来替换镜像队列的

  • 与镜像集群一样,都是主从模式,支持主从数据同步
  • 使用简单,没有复杂的配置 (默认值为5,就是 1主 4镜像)
  • 主从同步基于Raft 协议,强一致

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

优势

  1. 客户端不需要改变它们生产和订阅的方法,无需考虑队列类型。
    唯一的区别就是在客户端定义队列的时候需要定义成仲裁队列(代码中添加相关属性)
  2. 被解决当节点重新上线时,不会丢数据(解决了镜像队列同步的问题)
    主副本会直接从从副本中断的地方开始复制消息。复制的过程是非阻塞的,所以整个队列不会因为新的副本加入而收到影响。唯一的影响是网络使用率。
  3. 没有了同步问题,不仅让仲裁队列比镜像队列更可靠,同时,因为写入必须被超过半数的副本接受,所以不会因为脑裂而丢数据。
    4.Raft 协议比镜像队列的算法更有效率,可以提供更好的消息吞吐量
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值