最终应用了一致性和竞争条件

时间:2020-09-28 15:29:59

标签: concurrency runtime microservices verification eventual-consistency

我对最终一致的(EC)微服务系统的影响有疑问。

想象一下,我们有一个预订系统-用户服务A 预订服务B 。每个服务都有其自己的数据库。想象一下,系统同时为不同的用户并发预订同一资源。假设我们有一个运行时验证系统来检查并发预订。

由于EC机制,数据库中的更新被延迟了,因此监视器是否有可能无法在B处实现并发预订?

1 个答案:

答案 0 :(得分:0)

在您的示例中,Booking Service是(可能是)是否可以预订该资源的真相之源。因此,该服务应明确允许第一个预订请求发生而拒绝第二个预订请求。

在这种情况下,“先来先服务”是必要条件,您希望有一个中间状态,该状态将等待Booking Service的响应并仅在以下情况下更新User Service:已收到回复。

如果正确设置了体系结构,则User Service不应直接调用Booking Service-它应该通过消息传递平面进行通信。这样,当User单击“立即预订”时,您可以生成resourceBookingRequested消息并将其提交到队列。您将确认此请求已排队给用户,并将其UI更新为“正在等待预订确认...”或类似的内容。

一旦接受或拒绝预订,User Service就会订阅生成的消息并更新UI(和/或执行其他操作,例如发送电子邮件),以使用户知道他们的请求成功还是失败。 t。

相关问题