Concurrency 应用一致性和竞赛条件

Concurrency 应用一致性和竞赛条件,concurrency,runtime,microservices,verification,eventual-consistency,Concurrency,Runtime,Microservices,Verification,Eventual Consistency,我有一个关于最终一致性(EC)微服务系统的影响的问题 假设我们有一个预订系统——用户服务a和预订服务B。每个服务都有自己的数据库。假设系统同时为不同的用户同时预订相同的资源。假设我们有一个运行时验证系统来检查并发预订 是否有可能由于EC机制导致数据库更新延迟,监视器无法在B实现并发预订?在您的示例中,预订服务是资源是否可预订的真实来源(大概)。因此,这项服务应该非常明确,允许第一个预订请求发生,并拒绝第二个预订请求 在这种情况下,如果要求“先到先得”,则需要一个中间状态,该状态将等待预订服务的响

我有一个关于最终一致性(EC)微服务系统的影响的问题

假设我们有一个预订系统——用户服务a和预订服务B。每个服务都有自己的数据库。假设系统同时为不同的用户同时预订相同的资源。假设我们有一个运行时验证系统来检查并发预订


是否有可能由于EC机制导致数据库更新延迟,监视器无法在B实现并发预订?

在您的示例中,
预订服务
是资源是否可预订的真实来源(大概)。因此,这项服务应该非常明确,允许第一个预订请求发生,并拒绝第二个预订请求

在这种情况下,如果要求“先到先得”,则需要一个中间状态,该状态将等待
预订服务的响应
,并仅在收到响应时更新
用户服务

如果您的架构设置正确,
用户服务
无论如何都不应该直接调用
预订服务
——它应该通过消息平面进行通信。因此,当
用户
单击“立即预订”时,您可以生成
resourceBookingRequested
消息并将其提交到队列。您将确认此请求已排队等待用户,并将其UI更新为“等待预订确认…”或类似内容


一旦预订被接受或拒绝,
用户服务将订阅生成的消息并更新用户界面(和/或采取其他操作,如发送电子邮件)让用户知道他们的请求是否成功。

但如果用户无法等待,并且由于预订救援服务等紧急情况需要立即响应,该怎么办?好的,问题是为什么他有时间选择选项,但是……所以这个EC不应该应用于这个设置?但是如果它被应用,这个场景是否可能呢?我关注的是RV在微服务系统中可能出现故障的场景,这就是我的想法。我很难想象你的场景。“即时反应”是什么意思?用户界面可以直接调用您的
预订服务
(该服务应与
用户服务
分开),如果不再可用,则返回错误。你真的没有比这更直接的了。即时响应我的意思是,不要让用户等待“等待预订确认…”,而是在请求后直接在“用户服务”执行预订检查。我的意思是EC的想法是提高可用性。当我在“用户服务”进行预订检查时,这是否会大大提高可用性?