Den*_*nov 6 spring distributed-transactions spring-boot microservices spring-cloud
我需要在基于 Spring Boot 的微服务应用程序中解决原子操作。您可以想象 2 个微服务,如图所示。
一项服务用于保存用户权限和凭据作为身份提供者,另一项服务作为应用程序中用于与订单、联系人、地址等配对的用户帐户。
当用户创建新帐户时,我需要创建用于商业目的的用户和用于授权的用户身份。这两个操作都应该作为一个原子操作来执行。这意味着如果失败,机器人必须失败并回滚。如果没有业务用户对象,则无法保存用户凭据。您能告诉我解决此问题的最佳方法是什么或应该采取哪些步骤吗?
我的第一个想法是使用 Feign 的 RestTemplate 调用另一个服务,但我不知道如果第二次失败如何回滚操作。谢谢你的建议。
如果由于事务一致性而需要原子操作,则应将这两个服务合并为一个。
如果一致性可以更宽松一些,你可以研究一下 sagas。在事件驱动系统中,这是一种管理具有此类需求的复杂业务事务的方法。传奇的概念提供了一种通过补偿操作来处理错误的方法。因此,如果出现问题,系统将恢复到一致的状态。这可以防止在分布式系统中使用两阶段提交。
| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |