RabbitMQ高可用性

RabbitMQ高可用性,rabbitmq,high-availability,Rabbitmq,High Availability,我是拉比犬的新手。我想知道在HA的情况下如何使用内存。 例如,在Kafka中,如果数据存在或不存在,分区使用特定数量的内存,复制也是如此。在RabbitMQ中,队列如何分配内存?HA是如何工作的?镜像队列是否占用每个复制节点相同的内存量?RabbitMQ中的队列本身并不需要大量资源,但在大多数情况下,消息将保留在内存中。将消息发送到具有镜像队列的队列时,将在镜像策略定义的其他节点之间复制此消息。镜像队列的思想是提供高可用性,因此,如果承载主队列的代理崩溃,将在活动镜像队列中选择一个新的主队列。切

我是拉比犬的新手。我想知道在HA的情况下如何使用内存。
例如,在Kafka中,如果数据存在或不存在,分区使用特定数量的内存,复制也是如此。在RabbitMQ中,队列如何分配内存?HA是如何工作的?镜像队列是否占用每个复制节点相同的内存量?

RabbitMQ中的队列本身并不需要大量资源,但在大多数情况下,消息将保留在内存中。将消息发送到具有镜像队列的队列时,将在镜像策略定义的其他节点之间复制此消息。镜像队列的思想是提供高可用性,因此,如果承载主队列的代理崩溃,将在活动镜像队列中选择一个新的主队列。切换到新节点的速度应该相当快,因为所有消息都已准备好使用

简单示例:

群集由3个节点组成:

节点-1上创建了
测试
队列。rabbitmq
节点应用镜像策略在所有节点上复制消息:

大约有70k条消息被发送到
测试
队列,RabbitMQ管理工具的屏幕截图如下所示:

很明显,所有节点都得到了消息,它们都保存在内存中

RabbitMQ的内存消耗是一个棘手的话题,有许多因素会影响它(队列类型、其他队列中的消息量、达到定义的限制等)。报告中指出:

RabbitMQ可以报告自己的内存使用情况,让您看到系统在哪里使用内存。请注意,根据底层Erlang虚拟机返回的值,所有测量值都是近似值;然而,它们仍然应该足够准确,以便有用