【问题标题】:Data consistency around instances of same micro service围绕同一微服务实例的数据一致性
【发布时间】: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


【解决方案1】:

这是很难解决的问题。您可以使负载均衡器使用粘性会话,以便单个用户请求始终转到单个实例。 无论哪种方式,您都需要确保实现数据库锁定,以便在任何时候只有一个实例可以以应用程序一致的方式更新一行。

【讨论】:

    猜你喜欢
    • 2022-10-12
    • 2015-09-15
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多