【消息中间件篇06】RabbitMQ高可用机制

48 阅读2分钟

知识点

一般来说高可用,就是指集群等策略;特别是生成环境下,我们肯定是要搭建集群的

  • 在生产环境下,使用集群来保证高可用性
  • 普通集群、镜像集群、仲裁队列

普通集群(标准集群:严格说来是非高可用的)

  • 会在集群的各个节点间共享部分数据,包括:交换机、队列元信息等,不包含队列中的消息。
  • 当访问集群某个节点时,如果队列不在该节点,会从数据所在节点传递给当前节点
  • 队列所在节点宕机,队列中的数据就丢失了

image.png

镜像集群(本质是主从模式)

  • 交换机、队列、队列中的消息会在各个MQ的镜像节点之间同步备份
  • 创建队列的节点被称为该队列的主节点,备份到其他节点叫做该队列的镜像节点
  • 一个队列的主节点可能是另一个队列的镜像节点
  • 所有操作都是主节点完成,然后同步给镜像节点
  • 主节点宕机后,镜像节点会替代称为新的主节点

image.png

这种模式有个小缺点就是:

数据还未同步到镜像节点,主节点就宕机了,造成了数据丢失

仲裁队列(3.8版本后才有的,用来代替镜像队列)

  • 与镜像队列一样,都是主从模式,支持主从数据同步
  • 使用简单,没有复杂配置
  • 主从同步基于Raft协议,强一致

image.png