RabbitMQ
的是基于Erlang
语言编写,而Erlang
又是一个面向并发的语言,天然支持集群模式。RabbitMQ
的集群有两
种模式:
- 普通集群:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。
- 镜像集群:是一种主从集群,普通集群的基础上,添加了主从备份功能,提高集群的数据可用性。
镜像集群虽然支持主从,但主从同步并不是强一致的,某些情况下可能有数据丢失
的风险。因此在RabbitMQ
的3.8
版本
以后,推出了新的功能——仲裁队列来代替镜像集群,底层采用Raft
协议确保主从的数据一致性。