分布式事务设计之同步场景

1.同步场景:

           1)、 读场景:首页推荐商品列表:商品信息,用户信息,社交信息

            2)、 写场景 购买商品:下单-》A ; 减库存-》B ;支付-》C

2.解决方案:

           1)、基于异步补偿的分布式事务

            2)、架构设计的三大关键点

                                                        

如以写场景为例:针对每个步骤的请求都需要在事务补偿服务的数据库中存放事务id , state, ts , 每个微服务数据访问层提供补偿接口,如下图:

3.业务逻辑层proxy设置(基于AOP实现)

3.1.逻辑层调用上加上事务注解@Around("execution(* *(..)) && @annotation(TX)")

3.2.Proxy在真正业务逻辑被调用之前,生成一个全局唯一TXID标示事务组,TXID保存在ThreadLocal变量里,方法开始前写入,完成后清除,并向远端数据库写入TXID并把事务组置为开始状态

3.3.业务逻辑层调用数据库访问层之前,通过RpcProxy代理记录当前调用参数

3.4.如果业务正常,调用完成后,当前方法的调用记录存档或删除

3.5.如果业务异常,查询调用链反向补偿

4.数据访问层设计 

4.1.原子接口

4.2.补偿接口

       谁来提供, 幂等性保证

4.3.基于原则接口方法,在方法名加注解标注补偿方法名

@Compensable (cancelMethod="cancelRecord")

5.分布式事务补偿服务

5.1.事务组表(数据库表TDB)

        记录事务组状态

        txid\state\timestamp

5.2.事务调用组表(数据库表TDB)

      记录事务组内的每一次调用 以及相关参数

       Txid,actionid,callmethod,pramatype,params

5.3.补偿策略

       调用执行失败,修改事务组状态,

       分布式事务补偿服务异步执行补偿

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值