Day83 分布式事务解决方案 & 中台架构落地

  • 2 阶段,创建订单,扣减库存

请求调用订单服务 1 创建订单---> 订单库 2 库存库减库存.

image.png

订单服务 下订单,扣减库存

存在单点故障,数据不一致的问题

执行前后,生成前置和后置的镜像。 逆向执行Sql.

  • Seata引入了for update 全局锁,如果出现死锁,会不断进行重试。 最后靠等待全局锁超时才能释放锁。不优雅也延长了对数据库锁的占有时间

下单的 库存,订单,账户,优惠券等各个库.

XA 是 强一致性: 整合2阶段提交都会一直持有锁
TCC最终一致性: 不会一直持有资源的锁
AT: 全局行锁

  • 定时任务,尽最大努力通知

最大努力通知和可靠消息最终一致性

最大努力: 消息无法被发送方接收时,由接收方主动查询消息
可靠性消息最终一致性:发出到接收的一致性,消息发出并且被接收到

image.png

可靠性消息最终一致性方案

  1. 本地消息表记录消息发送和消费状态,定时任务不断的做轮训
  2. MQ事务消息
  3. 最大努力通知

中台架构落地实战

image.png

你可能感兴趣的:(Day83 分布式事务解决方案 & 中台架构落地)