提到分布式应用,就不得不考虑分布式事务。在分布式事务中,常见的有 CAP
,BASE
理论,解决方案也有很多种,比如:2PC
、TCC
、最终一致性等。
2PC
(两阶段提交)比较适合单块应用,跨多个库的分布式事务。因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景,而且,对于微服务而言,不推荐一个服务出现跨多个数据库操作, 如果需要操作其它数据库数据,推荐通过调用别的服务接口来实现。
TCC
属于强一致性事务的方案,适用资金流转业务相关业务,比如:支付、交易等场景。根据 CAP
理论,这种实现需要牺牲可用性。
如果是一般的分布式事务场景,比如:订单插入之后要调用库存服务更新库存,库存数据没有资金那么的敏感,可以用可靠消息最终一致性方案。
下面是一种可靠消息最终一致性事务方案的实现流程: