【发布时间】:2022-10-16 14:15:39
【问题描述】:
我有 5 个账户微服务实例,将资金从账户 A 转移到账户 B,然后更新 Postgres 数据库中的数据。 我的问题是
一个用户向帐户服务发送了五个请求,我的所有微服务都在并行工作,每个请求都发送到所有 5 个服务的方式,但是现在用户在帐户中没有足够的余额,我已经在检查用户是否有足够的余额平衡与否。
但是在 2 个请求之后,用户没有足够的余额,所以我很困惑如何在请求转到同一微服务的另一个实例之前检查这一点并首先实现数据一致性。
我也很想提出建议和其他方法
【问题讨论】:
-
这根本不应该发生!您的部署架构是什么?不管架构如何,我想说的是,你的微服务实例一次只能处理请求,如果你同时重载请求,更新操作必须是
synchronized(假设每个请求都是有效的)但是一个请求必须只映射到一个微服务实例,其他实例可能会收到第二、第三个请求并公平对待它们!If your single request is being replicated to all 5 services那就有问题了!
标签: database microservices system-design data-consistency