07-RabbitMQ集群

1.MQ集群分类

RabbitMQ是基于Erlang语言编写的,而Erlang语言是基于面向并发的语言,天然支持集群,MQ集群有两种:

普通集群:是一种分布式集群,将队列分散到各个节点,从而提高整个集群的并发能力。

镜像集群:是一种主从集群,在普通集群的基础上,添加了主从集群备份,提高了系统可用性。

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

2.普通集群

 普通集群又叫做标准集群,具备一下特征:

  &会在集群的各个节点间共享部分数据,包括:交换机,队列的元信息,不包括队列中的信息。

  &当访问集群某节点时,如果队列不在该节点,会从数据所在节点传递到当前节点返回。

  &队列中节点宕机,队列中消息就会丢失。

3.镜像集群

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

  &交换机、队列、队列中的消息会在MQ镜像节点之间同步备份。

  &创建队列的节点被称为主节点,备份到其他节点叫做队列的镜像节点。

  &一个队列的主节点可能是另一个队列的镜像节点。

  &所有操作都是主节点完成,然后同步镜像节点。

  &主机宕机后镜像节点会替换成为新的主节点。

4.仲裁队列

仲裁队列时3.8以后才有的新功能,用来代替镜像队列,具备一下特征:

  &与镜像队列一样,都是主从模式,支持主从数据同步。

  &使用非常简单,没有复杂的配置。

  &主从使用Raft协议,支持强一致。

springAMQP创建仲裁队列:

@Bean
    public Queue quorumQueue() {
        return QueueBuilder.durable("quorum.queue") // 持久化           
                .quorum() // 仲裁队列       
                .build();
    }

 

springAMQP链接集群:

spring:
  rabbitmq:
    addresses: 192.168.150.105:8071, 192.168.150.105:8072, 192.168.150.105:8073
    username: **
    password: **
    virtual-host: /

  

posted @ 2023-04-19 09:48  老王的日常  阅读(52)  评论(0)    收藏  举报