我怀疑与微服务有关。假设有5个微服务,例如M1,M2,M3,M3,M4和M5。有4个数据库,由4个微服务连接/访问。例如,M2连接到MySql,M3连接到Cassandra,M4连接到MangoDb,M5连接到Oracle。
现在
步骤1:M1调用M2以更新mySql中的某些用户数据,并成功更新然后最终得到了M2的成功响应
步骤2:M1调用M3以更新Cassandra中的某些数据,并成功更新,然后最终得到M3的成功响应
[步骤3:M1调用M4以更新MangoDb中的某些数据,但由于某些数据库服务器问题或任何其他问题而失败。
我的要求是,我想回滚以前的微服务(M2和M3)所发生的数据库更改
要实现这种回滚方案,我们需要做什么?
您可以确保在整个调用序列中都启用了@Transactional。
这可能不是一个完美的解决方案,因为它引入了另一个故障点/回滚处理,但是可以实现的最快。