TCC

作者: 03ca2835cf70 | 来源:发表于2019-12-11 16:14 被阅读0次

    https://www.cnblogs.com/jajian/p/10014145.html

    然后你原本的一个接口,要改造为 3 个逻辑,Try-Confirm-Cancel:

    先是服务调用链路依次执行 Try 逻辑。
    如果都正常的话,TCC 分布式事务框架推进执行 Confirm 逻辑,完成整个事务。
    如果某个服务的 Try 逻辑有问题,TCC 分布式事务框架感知到之后就会推进执行各个服务的 Cancel 逻辑,撤销之前执行的各种操作。
    

    这就是所谓的 TCC 分布式事务。TCC 分布式事务的核心思想,说白了,就是当遇到下面这些情况时:

    某个服务的数据库宕机了。
    某个服务自己挂了。
    那个服务的 Redis、Elasticsearch、MQ 等基础设施故障了。
    某些资源不足了,比如说库存不够这些。
    

    先来 Try 一下,不要把业务逻辑完成,先试试看,看各个服务能不能基本正常运转,能不能先冻结我需要的资源。

    如果 Try 都 OK,也就是说,底层的数据库、Redis、Elasticsearch、MQ 都是可以写入数据的,并且你保留好了需要使用的一些资源(比如冻结了一部分库存)。

    接着,再执行各个服务的 Confirm 逻辑,基本上 Confirm 就可以很大概率保证一个分布式事务的完成了。

    那如果 Try 阶段某个服务就失败了,比如说底层的数据库挂了,或者 Redis 挂了,等等。

    此时就自动执行各个服务的 Cancel 逻辑,把之前的 Try 逻辑都回滚,所有服务都不要执行任何设计的业务逻辑。保证大家要么一起成功,要么一起失败。

    相关文章

      网友评论

          本文标题:TCC

          本文链接:https://www.haomeiwen.com/subject/bqtagctx.html