前言分布式事务是在微服务开发中经常会遇到的一个问题,之前的文章中我们已经实现了利用Seata来实现强一致性事务,其实还有一种广为人知的方案就是利用消息队列来实现分布式事务,保证数据的最终一致性,也就是我们常说的柔性事务。消息队列实现分布式事务原理首先让我们来看一下基于消息队列实现分布式事务的原理方案。发送消息的服务有个OUTBOX数据表,在进行INSERT、UPDATE、DELETE业务操作时也会给OUTBOX数据表INSERT一条消息记录,这样可以保证原子性,因为这是基于本地的ACID事务。OUTBOX表充当临时消息队列,然后我们在引入一个消息中继(MessageRelay)的服务,由他从O
导读:本篇作为SpringCloudAlibaba微服务实战系列的第七篇,主要内容是使用Seata解决分布式事务问题。系列文章,欢迎持续关注。场景说明订单服务order-service需要对外提供创建订单的接口,创建订单的业务逻辑如下:先调用本地的orderService保存订单操作,然后通过feign调用远程的accout-service进行账户余额扣减,最后再通过feign调用远程的product-service进行库存扣减操作。关键的逻辑代码如下:OrderController对外提供创建订单的接口@PostMapping("/order/create")public