微服务之间的原子操作

问题描述 投票:1回答:1

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

enter image description here

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

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

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

spring spring-boot microservices spring-cloud distributed-transactions
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.