- 消息队列——RabbitMQ的集群:
- 一、集群分类
- 1、普通集群
- 2、镜像集群
- 3、仲裁队列
- 二、普通集群
- 1、特征:
- 三、镜像集群
- 1、特征:
- 四、仲裁队列
- 1、特征:
- 2、创建仲裁队列:
消息队列——RabbitMQ的集群:
一、集群分类
1、普通集群
是一种分布式集群,将队列分散到集群的各个节点,请求进来会被分发到不同的节点上去,从而提高整个集群的并发能力。
但是这种集群有一个缺点就是如果一个节点宕机,它对应的队列和消息就会丢失。
2、镜像集群
是一种主从集群,普通集群的基础上,添加了主从备份功能,提高集群的数据可用性。
镜像集群虽然支持主从,但主从同步并不是强一致的,某些情况下可能有数据丢失的风险。因此在RabbitMQ的3.8版本以后,推出了新的功能:仲裁队列来代替镜像集群,底层采用Raft协议确保主从的数据一致性。
3、仲裁队列
二、普通集群
1、特征:
- 会在集群的各个节点间共享部分数据,包括:交换机、队列元信息。不包含队列中的消息。
- 当访问集群某节点时,如果队列不在该节点,会从数据所在节点传递到当前节点并返回
- 队列所在节点宕机,队列中的消息就会丢失
三、镜像集群
1、特征:
- 本质是主从模式
- 交换机、队列、队列中的消息会在各个mq的镜像节点之间同步备份。
- 创建队列的节点被称为该队列的主节点,备份到的其它节点叫做该队列的镜像节点。
- 一个队列的主节点可能是另一个队列的镜像节点。
- 所有操作都是主节点完成,然后同步给镜像节点。
- 主宕机后,镜像节点会替代成新的主。
四、仲裁队列
1、特征:
- 与镜像队列一样,都是主从模式,支持主从数据同步
- 使用非常简单,没有复杂的配置
- 主从同步基于Raft协议,强一致
2、创建仲裁队列:
搭建集群后,使用如下的代码: