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: /

浙公网安备 33010602011771号