gpt4 book ai didi

rabbitmq - 如果每条消息都将路由到主节点,为什么要在 RabbitMQ 节点集群(相同队列)前面放置负载均衡器?

转载 作者:行者123 更新时间:2023-12-05 01:16:39 31 4
gpt4 key购买 nike

根据 https://groups.google.com/forum/#!topic/rabbitmq-users/vvWAymjDww4 ,如果一个队列是跨多个服务器(节点)镜像的,发布者写入哪个队列并不重要——RabbitMQ 总是将消息转发到主节点(队列最初创建的节点)。

如果是这种情况,如果每条消息最终都会被路由到同一个节点,那么在节点前面放置一个负载均衡器有什么意义呢?似乎主节点将始终承担全部负载。

最佳答案

我将举一个示例场景以使其易于理解:

  • 您有一个 2 节点集群,并且在顶部有一个负载均衡器
  • 客户端连接到LB,并连接到node1,也就是queue1所在的节点(master)
  • 队列启用了 HA,因此 queue1 也被复制到 node2 上
  • node1 由于某种原因发生故障,所以 queue1 的新主节点现在是 node2
  • 客户端连接断开,LB 现在将他连接到节点 2,因此客户端一切正常

基本上,一切都与服务可用性有关。当您连接到一个节点,而您正在使用的队列不是主节点时,RabbitMQ 会在内部将您重定向到主节点,这最终会在集群中创建大量互连。

但是如果主节点发生故障,RabbitMQ 会选择一个新节点,因此拥有一个 LB 是一个很好的补充,客户端将重新连接到 LB,并将被重定向到一个工作实例。客户的流程是透明的。

最后,根据您的用例,您可以做一些聪明的事情来确保客户端始终连接到主队列所在的实例,但这实际上取决于您的具体要求。

关于rabbitmq - 如果每条消息都将路由到主节点,为什么要在 RabbitMQ 节点集群(相同队列)前面放置负载均衡器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096487/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com