Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。
基于 Seata Saga模式,演示分布式事务的提交和回滚;
本demo中一个分布式事务内会有2个Saga事务参与者,分别是: InventoryAction 和 BalanceAction ;分布式事务提交则两者均提交,分布式事务回滚则两者均回滚;
这2个Saga参与者均是 本地bean(非远程RPC服务),两个参与都有一个reduce方法,表示库存扣减或余额扣减,还有一个compensateReduce方法,表示补偿扣减操作。
public interface InventoryAction { /** * reduce * @param businessKey * @param amount * @param params * @return */ boolean reduce(String businessKey, BigDecimal amount, Map<String, Object> params); /** * compensateReduce * @param businessKey * @param params * @return */ boolean compensateReduce(String businessKey, Map<String, Object> params); }
运行 SeataServerStarter ,启动 Seata Server;
运行 LocalSagaTransactionStarter , 启动 demo工程;
内含Saga 事务提交场景和Saga事务回滚场景的演示;