普通的集群

普通集群模式,有服务器ABC,在服务器ABC上分别启动RabbitMQ实例,生产者生产消息1,随机发给某一实例A,实例BC
上记录消息1的原数据信息(比如消息1具体信息在示例A上),消费者消费消息,随机连接某个示例B,消费消息1,实例B根据
原数据发现消息1在实例A上,则实例B去实例A拉取消息返回给消费者。
rabbitmq集群介绍

镜像模式(高可用性)

这种模式,才是所谓的 RabbitMQ 的高可用模式。跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会 存在于多个实例上 ,就是说,每个 RabbitMQ 节点都有这个 queue 的一个 完整镜像 ,包含 queue 的全部数据的意思。然后每次你写消息到 queue 的时候,都会 自动把消息同步到多个实例 的 queue 上。
rabbitmq集群介绍

  • 什么是队列镜像
    默认情况下,RabbitMQ集群中队列的内容位于单个节点(声明该队列的节点)上。这与交换和绑定相反,交换和绑定始终可以被视为在所有节点上。可以选择使队列跨多个节点进行 镜像
    每个镜像队列由一个 主服务器 和一个或多个 镜像组成 。主节点托管在一个通常称为主节点的节点上。每个队列都有其自己的主节点。给定队列的所有操作都首先应用于队列的主节点,然后传播到镜像。这涉及排队发布,向消费者传递消息,跟踪 来自消费者的确认等。
    队列镜像意味着节点的集群。因此,不建议在WAN中使用它(当然,客户端仍然可以根据需要进行远近连接)。
    发布到队列的消息将复制到所有镜像。消费者连接到主服务器,无论他们连接到哪个节点,镜像都会丢弃已在主服务器上确认的消息。因此,队列镜像可提高可用性,但不会在节点之间分配负载(所有参与节点均完成所有工作)。
    如果承载队列主服务器的节点发生故障,则最早的镜像将被同步到新的主服务器。 根据队列镜像参数,也可以升级不同步的镜像。
    通常有多个术语用于标识分布式系统中的主副本和辅助副本。本指南通常使用“主”来指代队列的主副本,并使用“镜像”来指代辅助副本。

镜像策略

all:队列将mirrored到所有集群中的节点中,当新节点添加进来时也会mirrored到新的节点
exactly:需要设置count数,count值一般设置为(N / 2 + 1)个节点。如果节点数小于count数,则队列将mirrored到所有的节点。如果节点数大于count,新的节点将不再创建队列的mirror。
nodes:对指定的节点进行mirror。如果没有一个指定的节点在运行中,那么只有client连接的那个节点才会声明queue。

mq镜像模式官方文档介绍

相关文章:

  • 2021-08-16
  • 2021-12-02
  • 2021-04-04
  • 2021-10-01
  • 2021-11-17
  • 2021-06-20
猜你喜欢
  • 2021-11-23
  • 2022-01-20
  • 2021-09-20
  • 2021-10-03
  • 2021-11-26
  • 2022-12-23
相关资源
相似解决方案