分布式事务常见解决方案

2023-05-17  本文已影响0人  雪飘千里

分布式事务常见解决方案

一、事务介绍

事务是一系列的动作,它们综合在一起才是一个完的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。

1、单事务概念

应用多次数据库操作,通过用事务进行管理,来保证ACID原则。

2、分布式事务概念

分布式事务常见场景:

  1. 单应用内部调用(多个数据源调用,操作多个库)

  2. 涉及多应用调用(有可能操作同一个数据源,也有可能操作不同的数据源)

CAP理论

分布式事务的理论基础(ACID事务无法满足)

常见组合: AP:互联网业务 CP:金融业务

base理论

base理论是CAP理论中AP方案的延伸,核心思想是即时无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

更详细的介绍见 分布式系统原理

二、分布式事务常见方案

分布式场景下,多个服务同时对服务一个流程,比如电商下单场景,需要支付服务进行支付、库存服务扣减库存、订单服务进行订单生成、物流服务更新物流信息等。如果某一个服务执行失败,或者网络不通引起的请求丢失,那么整个系统可能出现数据不一致的原因。

常见方案

强事务:满足CP理论,XA协议(2PC、JTA、JTS)

柔性事务:满足AP,base理论,适合异步更新数据,并且对数据的实时性要求较低的场景,主要分为:

实现方式

互联网业务,一般的流量比较大,涉及很多高并发场景、我们一般采用柔性事务,这样系统的性能好。

三、柔性事务之最大努力通知型(互联网应用最广泛)

基于本地消息表实现分布式事务

image.png

基于mq实现柔性分布式事务

image.png

重试注意事项

  1. 通过本地消息表+MQ重试对账+下游(接口幂等、提供);

  2. 打印日志+告警+人工介入补偿

回滚注意事项

  1. 程序捕获异常,调用回滚代码;

  2. 发送回滚MQ,各个系统消费MQ,调用本地回滚方法。

上一篇下一篇

猜你喜欢

热点阅读