基于队列的负载均衡(Queue based load leveling)


问题
云中的许多解决方案都涉及运行调用服务的任务。在这种环境中,如果服务遭受间歇性重负载,则可能导致性能或可靠性问题。如果同时运行的多个任务使用相同的服务,则可能难以预测在任何给定时间点服务可能经受的请求量。服务可能会遇到需求高峰,导致服务过载并无法及时响应请求。

在任务和服务之间引入队列。任务和服务异步运行。该任务将包含服务所需数据的消息发布到队列。队列充当缓冲区,存储消息,直到服务检索到该消息。该服务从队列中检索消息并处理它们。来自可以以高可变速率生成的许多任务的请求可以通过相同的消息队列传递给服务。
队列有效地将任务与服务分离,并且服务可以按照自己的速度处理消息,而不管来自并发任务的请求量。此外,如果在将消息发布到队列时服务不可用,则任务没有延迟。

适用场景

  • 此模式非常适合使用可能会出现重载的服务的任何类型的应用程序。
  • 如果应用程序期望来自服务的响应具有最小延迟,则此模式可能不合适。