考虑Martin Fowler的 LMAX 架构描述中的以下场景:
我将使用一个简单的非 LMAX 示例来说明。想象一下,您正在通过信用卡订购果冻豆。<...>
在 LMAX 架构中,您可以将此操作分成两部分。第一个操作将捕获订单信息并通过向信用卡公司输出事件(请求信用卡验证)来完成。然后,业务逻辑处理器将继续为其他客户处理事件,直到它在其输入事件流中收到信用卡验证事件。在处理该事件时,它将执行该订单的确认任务。
因此,订单一直保存在内存中,直到收到付款处理结果。
现在让我们假设不是信用卡处理步骤,而是需要更多时间的步骤,例如:我们需要执行库存检查,其中有人必须物理验证我们是否有已订购的特定风味的软糖。这可能需要一个小时。
如果是这种情况,是否会导致内存中保存的数据增长,因为可能有很多订单正在等待库存状态更新事件?
可能在这种情况下,我们需要从内存中删除订单并将其作为输出事件的一部分包含在内,外部系统(库存)负责生成另一个包含订单详细信息的输入事件。
我在这种方法中看到的问题是,我们不能将库存作为业务逻辑处理器的一部分。
关于我们如何解决这个问题的想法?