使多个并发使用者能够处理同一消息通道上收到的消息。 它可让系统同时处理多个消息,以优化吞吐量、改进可扩展性和可用性,以及平衡工作负荷。
在云中运行的应用程序需要处理大量的请求。 常用方法不是同步处理每个请求,而是应用程序通过消息传递系统将它们传送到异步处理它们的另一个服务(使用者服务)。 此策略有助于确保在处理请求时应用程序中的业务逻辑不会被阻止。
在一段时间内,由于多种原因请求的数量会大幅度变化。 用户活动或来自多个租户的总请求数的突增可能会导致不可预测的工作负荷。 在高峰时间,系统可能需要每秒处理数百个请求,而在其他时间,请求的数量可能非常少。 此外,为处理请求而执行的工作的性质可能会有很大变化。 运行使用者服务的单个实例可能导致该实例充满请求,或者消息系统可能由于来自应用程序的消息涌入而过载。 为了处理这种波动的工作负荷,系统可以运行使用者服务的多个实例。 但是,这些使用者必须进行协调以确保每条消息仅传送给一个使用者。 工作负荷还需要在使用者之间处于负载均衡状态,以防止实例成为瓶颈。
使用消息队列来实现应用程序和使用者服务实例之间的信道。 应用程序以消息的形式将请求发送到队列,使用者服务实例从队列接收消息并进行处理。 此方法可让使用者服务实例的相同池处理来自应用程序实例的消息。 该图说明了如何使用消息队列将工作分布到服务实例。
此解决方案具有以下优点:
在决定如何实现此模式时,请考虑以下几点:
Microsoft Azure 服务总线队列可通过消息会话对消息执行保证的先进先出顺序。 有关详细信息,请参阅使用会话的消息传送模式。
如果使用的是 Azure,工作进程可使用专用消息答复队列将结果传回应用程序逻辑。 应用程序逻辑必须能够将这些结果与原始消息相关联。 有关此方案的详细信息,请参阅 Asynchronous Messaging Primer(异步消息传送入门)。
在以下情况下使用此模式:
在以下情况下,此模式可能不起作用:
某些消息传递系统支持会话,使生成者能够将消息组合在一起,并确保由相同的使用者进行处理。 此机制可用于按优先级排列的消息(如果支持)以实现消息排序的形式,从生成者到单个使用者按顺序传送消息。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有