gpt4 book ai didi

load-balancing - 具有基于消费者的负载平衡的消息队列

转载 作者:行者123 更新时间:2023-12-04 04:29:42 24 4
gpt4 key购买 nike

阅读常见消息队列系统(例如 RabbitMQ、ActiveMQ)的文档,似乎负载平衡总是由队列系统(循环)或生产者使用消息上的多个队列或属性来完成。然而,在我们的应用程序中,没有人知道处理消息需要多长时间,甚至消费者也不知道。它可以在几毫秒到几小时之间(它基本上是在任意输入 x 上计算任意函数 f)。因此,负载平衡应该由消费者执行,因为他们只在“负载”低于阈值时才接受消息(负载可以是执行作业的数量、CPU 负载等)。理想情况下,生产者将一条消息放入队列中,该消息“提供”给所有消费者,但只有一个消费者接受并处理该消息。甚至可能发生在第一轮没有消费者接受它并且它一直在队列中直到一个消费者有空闲资源的情况。
所以可能的问题是:这对于任何常见的消息队列系统是否有可能实现,或者我们是否在寻找错误的方向?

最佳答案

由于这些系统的性质,这无需任何真正的额外工作即可实现。在RabbitMQ中,你可以设置一个prefetch size ,它指定要提前获取的作业数。您将其设置为 0,这样每个消费者一次只能有一份工作。您希望将其与消息确认结合使用,以便消费者必须先确认一条消息,然后才能提供另一条消息。

所有空闲的消费者将排队等待作业,MQ 将按 FIFO 顺序将作业分流给它们。一旦他们完成了他们的工作,他们就会确认,MQ 会给他们队列中的下一个工作。如果没有消费者空闲并准备好进行工作,则消息将位于队列中,直到有消费者可用为止。

关于load-balancing - 具有基于消费者的负载平衡的消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265484/

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