分布式事务的Tcc 解决方案 利用 hmily框架

五迷三道 提交于 2019-12-08 22:02:31

2、TCC 解决分布式事务的方案 落地时 hmily框架。

       2.1 TCC 代表了三个阶段 Try Confirm cancel

          Try 就是 一个方法,这里 是 业务的逻辑,几个逻辑都操纵数据库 比如完成 注册用户,调用 送积分的 远程逻辑
                 默认 try执行了 confirm一定执行。
          Confirm 这里呢 可以理解成 确认提交。
          Cancel 就是业务的 回滚,只要try里面有异常 就 走cancel。

     2.2 TCC 注意的异常处理情况

        1) 空回滚 :就是 try没有执行 就执行cancel 方法。
        2)幂等性 :一个方法无论调多少次 结果都是一样的 这是幂等性。
        3) 悬挂 ;confirm 或者 cancel已经执行了 又要执行 try方法 这是悬挂。


            处理的方法是调用 数据库的 逻辑。 hmily需要的数据库表设计。



            事务的发起方   try这里需要解决幂等性 和悬挂的问题。 try方法上要加本地事务的注解。

                                        cancel这里需要解决 空回滚和幂等性的问题。

             事务的另一方  try这里 啥也不用写逻辑

                                     confirm 这里需要 写 送积分的逻辑。这里即使又异常整个事务也回滚不了 可以人工的处理。 需要解决幂等性。方法上要加本地事务的注解。

                                    cancel 这里 也啥也不用写。

      ##feign 的使用注意事项


                     @FeignClient(value="tcc-demo-bank2",fallback=Bank2ClientFallback.class)
                    public interface Bank2Client {
                    //远程调用李四的微服务
                 @GetMapping("/bank2/transfer")

                   ##这里特别注意啊一定要加 这个注解 为的是 把全局的 事务id 传到 下游。
                  @Hmily
                  public Boolean transfer(@RequestParam("amount") Double amount);
                   }

 

 

 

代码 位置

       https://pan.baidu.com/s/1Qn4qrAr-HIoO_gdcreAQug

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!