每日一博 | 一种基于柔性事务的分布式事务解决方案设计探究
1 背景 市面上常见的有,2pc/3pc、tcc、saga等常见的分布式事务解决方案,但是实际实施起来框架比较重,设计开发比较繁琐,不易于快速开发上手。本文提供一种基于柔性事务设计的简单易上手的分布式事务设计方案,用于解决常见的分布式事务常见场景。 2 常见分布式事务场景 2.1 同步场景 常见的场景,方法内依赖外部微服务多个同步接口,等同步接口返回再展开后续逻辑,如下图1描述。 图1 分布式事务同步场景 存在的问题:B/C失败后,A/B不能回滚,造成数据不一致? 2.2 异步场景 方法内依赖外部微服务多个同步接口同时,本地事务提交并发出异步MQ,如下图2描述。 图2 分布式事务异步场景 存在的问题:询价系统无法保证本地事务和mq消息的发送同时成功或失败,会造成数据不一致。 3 解决方案 3.1 数据模型设计 事务表:记录每次同步方法执行的状态,包括:1-进行中(同步方法执行开始)、2-已完成(同步方法执行成功)、3-失败(同步方法执行失败)、4-已回滚(回滚方法执行成功); 方法调用表:记录一个完整的事务内所有方法的执行前入参、同步方法接口、回滚接口、回滚入参、方法执行顺序,如下图...
