目录
一、RabbitMQ
集群简介
1、默认集群原理
3-1、RabbitMQ 集群简介
单台 RabbitMQ 服务器处理消息的能力是有瓶颈的,而且可靠性还无法保证,所以需要通过集群来提高消息的吞吐量和提高数据可靠性。
由于 RabbitMQ 本身是基于 Erlang
编写,而 Erlang 语言天生具备分布式特性(通过同步 Erlang 集群各节点的 erlang.cookie 来实现)。因此,RabbitMQ 天然支持集群,并且还能通过水平扩展节点的方式提高吞吐量。
在一个多节点的 RabbitMQ 集群中,Exchange
(交换器)的元数据(Metadata
)信息在所有节点上都是一致的,而 Queue
(存放消息的队列)的完整数据只会存在于创建它的那个节点上,其他节点只知道这个 Queue 的 Qetadata 信息和一个指向 Queue 的 owner node 的指针(起到消息转发作用)。
3-2、RabbitMQ 集群同步的元数据
RabbitMQ 集群会始终同步以下四种类型的内部元数据:
- Queue 元数据:队列名称和它的属性;
- Exchange 元数据:交换器名称、类型和属性;
- Binding 元数据:一张简单的表格展示了如何将消息路由到队列;
- VHost 元数据:为 VHost 内的队列、交换器和绑定提供命名空间和安全属性;
所以,当用户访问其中任何一个 RabbitMQ 节点时,通过 rabbitmqctl
查询到的 Queue/Exchange/Binding/VHost
等信息都是相同的。