今天被问到一个问题,就是如果有调用同时插入数据的微服务A和B,如果A成功,B不成功怎么办?
首先从 业务上来分析:
1.我们为什么要同时操作两个微服务来插入呢?
2.是这两个微服务中有强依赖关系吗?是上一个插入成功下一个才能插入吗?那为何不直接在A服务里面写,调用B服务呢?
值得深思,微服务的划分粒度是否有问题?
分布式事务方案:
Seata:https://seata.io/zh-cn/docs/overview/what-is-seata.html
tx-lcn :https://www.codingapi.com/docs/txlcn-preface/
MQ 事务消息
有一些第三方的MQ是支持事务消息的,比如RocketMQ,他们支持事务消息的方式也是类似于采用的二阶段提交,但是市面上一些主流的MQ都是不支持事务消息的,比如 RabbitMQ 和 Kafka 都不支持