开发模式-顺序保护

2021-06-23  本文已影响0人  零一间

按定义的顺序处理一组相关的消息,不需阻止对其他消息组的处理。

上下文和问题

应用程序通常需要按照消息到达的顺序处理消息序列,同时仍可以横向扩展以处理增加的负载。 在分布式体系结构中,按顺序处理这些消息并不是很简单,因为辅助角色可以独立缩放,并且通常使用竞争性使用者模式单独提取消息。

例如,订单跟踪系统接收包含订单的分类帐和对这些订单的相关操作。 这些操作可能是创建订单、向订单中添加事务、修改过去的交易或删除订单。 在此系统中,必须按照先进先出 (FIFO) 方式执行操作,但只能在订单级别执行操作。 不过,初始队列接收多个订单的包含多个订单的交易,这可能是交错的。

解决方案

将相关的消息推送到队列系统内的类别中,并让队列侦听器锁定并仅从一个类别(一次一个消息)中请求。

一般顺序保护模式如下所示:

顺序保护模式示意图

在队列中,不同类别的消息可能交错,如下图所示:

显示交错消息的关系图

问题和注意事项

在决定如何实现此模式时,请考虑以下几点:

何时使用此模式

在以下情况下使用此模式:

此模式可能不适用于以下情况:

上一篇 下一篇

猜你喜欢

热点阅读