Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
负载平衡器在RabbitMQ中的工作原理_Rabbitmq_Load Balancing - Fatal编程技术网

负载平衡器在RabbitMQ中的工作原理

负载平衡器在RabbitMQ中的工作原理,rabbitmq,load-balancing,Rabbitmq,Load Balancing,我是RabbitMQ的新手,所以请原谅我提出一些琐碎的问题: 1) 在RabbitMQ中进行集群的情况下,如果一个节点出现故障,则将负载转移到另一个节点(而不停止其他节点)。类似地,我们还可以向现有集群添加新的新节点,而无需停止集群中的现有节点。对吗 2) 假设我们从一个rabbitMQ节点开始,并在其上创建100个队列。现在制作人开始以更快的速度发送消息。为了处理这个负载,我们添加了更多的节点并创建了一个集群。但队列仅存在于第一个节点上。现在如何在节点之间平衡负载?如果我们需要添加更多队列,我

我是RabbitMQ的新手,所以请原谅我提出一些琐碎的问题:

1) 在RabbitMQ中进行集群的情况下,如果一个节点出现故障,则将负载转移到另一个节点(而不停止其他节点)。类似地,我们还可以向现有集群添加新的新节点,而无需停止集群中的现有节点。对吗

2) 假设我们从一个rabbitMQ节点开始,并在其上创建100个队列。现在制作人开始以更快的速度发送消息。为了处理这个负载,我们添加了更多的节点并创建了一个集群。但队列仅存在于第一个节点上。现在如何在节点之间平衡负载?如果我们需要添加更多队列,我们应该在哪个节点上添加它们?或者我们可以使用负载平衡器添加它们

提前谢谢

1) 在RabbitMQ中进行集群的情况下,如果一个节点出现故障,则将负载转移到另一个节点(而不停止其他节点)。类似地,我们还可以向现有集群添加新的新节点,而无需停止集群中的现有节点。对吗

如果在其上创建队列的节点失败,rabbitmq将在集群中为该队列选择一个新的主节点,只要该队列的镜像已启用。集群根据您可以定义的策略提供HA

2) 假设我们从一个rabbitMQ节点开始,并在其上创建100个队列。现在制作人开始以更快的速度发送消息。为了处理这个负载,我们添加了更多的节点并创建了一个集群。但队列仅存在于第一个节点上。现在如何在节点之间平衡负载

负载不平衡。分布式集群提供HA而不是负载平衡。您的请求将被重定向到队列所在集群中的节点

如果我们需要添加更多队列,我们应该在哪个节点上添加它们?或者我们可以使用负载平衡器添加它们

这取决于您的用例。有些人使用循环,在不同的节点上创建队列

总之
  • 供HA在集群中使用
  • 要平衡节点间的负载,请使用
  • 如果您希望负载平衡,请查看队列本身。它们允许您从上游队列获取下游队列上的消息

    • 让我试着回答您的问题,这通常是dev可能遇到的大多数问题

      问题1)在RabbitMQ中进行集群的情况下,如果一个节点出现故障,则将负载转移到另一个节点(而不停止其他节点)。类似地,我们还可以向现有集群添加新的新节点,而无需停止集群中的现有节点。对吗

      答:完全正确(如果rabbitMQ在单个主机上运行),但rabbitMQ的队列在集群上的行为不同。默认情况下,队列只存在于集群中的一个节点上。但是
      Rabbit(2.6.0)
      为队列提供了内置的主动冗余选项:
      镜像队列
      。声明镜像队列就像声明普通队列一样;您传递了一个名为
      x-ha-policy
      的额外参数;告诉Rabbit您希望在群集中的所有节点上镜像队列这意味着,如果在声明队列后将新节点添加到集群中,它将自动开始承载队列的从属副本。

      问题2)假设我们从一个rabbitMQ节点开始,并在其上创建100个队列。现在制作人开始以更快的速度发送消息。为了处理这个负载,我们添加了更多的节点并创建了一个集群。但队列仅存在于第一个节点上。现在如何在节点之间平衡负载?如果我们需要添加更多队列,我们应该在哪个节点上添加它们?或者我们可以使用负载平衡器添加它们

      此问题有多个子问题

      现在如何在节点之间平衡负载

      设置为all时,x-ha-policy会告诉Rabbit您希望在集群中的所有节点上镜像队列。这意味着,如果在声明队列后将新节点添加到集群中,它将自动开始承载队列的从属副本

      我们应该在哪个节点上添加它们

      回答上面的问题

      我们可以使用负载平衡器添加它们吗

      不,但可以(您必须在LB中调用rabbitMQ API,这不是最佳实践方法),负载平衡器用于弹性消息传递基础架构。集群节点是负载平衡器后面的服务器,生产者和消费者是客户