【问题标题】:Atomic operations between microservices微服务之间的原子操作
【发布时间】:2020-06-05 04:22:20
【问题描述】:

我需要在基于 Spring Boot 的基于微服务的应用程序中解析原子操作。如图所示,您可以想象 2 个微服务。

一项服务用于将用户权限和凭据保存为身份提供者,另一项服务用作应用程序中用于与订单、联系人、地址等配对的用户帐户。

当用户创建新帐户时,我需要创建用于业务目的的用户和用于授权的用户身份。这两个操作都应该作为一个原子操作来执行。这意味着如果一个失败,必须机器人失败并回滚。无法保存用户凭据但没有业务用户对象。你能告诉我解决这个问题的最佳方法是什么或应该是什么样的步骤吗?

我的第一个想法是使用 Feign 的 RestTemplate 从另一个服务调用,但我不知道如果第二个服务失败如何回滚操作。谢谢你的建议。

【问题讨论】:

标签: spring spring-boot microservices spring-cloud distributed-transactions


【解决方案1】:

如果由于事务一致性而需要原子操作,则应将这两个服务合并为一个。

如果一致性可以更轻松,您可以查看 sagas。在事件驱动系统中,这是一种管理具有此类需求的复杂业务事务的方法。 sagas 的概念提供了一种通过补偿操作来处理错误的方法。因此,如果出现问题,系统将恢复到一致的状态。这可以防止在分布式系统中使用两阶段提交。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 2016-06-10
    • 2016-10-18
    • 2021-06-20
    • 1970-01-01
    • 2016-03-05
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多