假如有一个接口需要调用服务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事务型消息的能力 去实现达到最终一致性的。

0
0

刘果国

2018-05-15

是的哦,这就属于分布式事务的范畴啦

0
2
刘果国
回复
微暖丶温情
是的 跟通讯协议没有关系了,跨库业务都涉及到
2018-05-16
共2条回复

Docker+Kubernetes(k8s)微服务容器化实践

从开发到编排,快速,完整,深入的掌握微服务

2617 学习 · 609 问题

查看课程