假如有一个接口需要调用服务A和服务B,这两个都需要操作数据库,服务A成功了,服务B失败了
来源:1-5 微服务架构的优势和不足

微暖丶温情
2018-05-15
老师好,假如有一个接口需要通过http调用服务A和服务B,这两个都需要操作数据库,服务A成功了,服务B失败了,那么是不是事务是不会回滚的,需要自己写补偿机制?
写回答
2回答
-
慕的地5059815
2021-09-16
这个涉及到分布式事务问题,像这种分布式事务的数据一致性问题,也有很多经典的解决方案,可以去了解一下,只有结合业务需要权衡ACP原则,像CP强一致性要求比较高的,比较经典的 结合 二阶段提交+读写相等+raft同步的方式,完美解决强一致性问题,但是缺点就是效率低下,基本不会采纳;往往对数据实时性不高的数据一致性问题,更注重AP可用性原则,比较多的有 TCC设计原则,还有借助消息中间件的方式去做一个异步确保型的数据一致性,比较经典的实现就是借助RocketMq事务型消息的能力 去实现达到最终一致性的。
00 -
刘果国
2018-05-15
是的哦,这就属于分布式事务的范畴啦
022018-05-16