zoukankan      html  css  js  c++  java
  • 【JavaP6大纲】分布式事务篇:补偿事务(TCC)

    补偿事务(TCC)?

    补偿事务(TCC)
    针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。它分为三个阶段:

    Try 阶段主要是对业务系统做检测及资源预留
    Confirm 阶段主要是对业务系统做确认提交,Try阶段执行成功并开始执行 Confirm阶段时,默认 Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。
    Cancel 阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。

    举个例子,假入 Bob 要向 Smith 转账,思路大概是:我们有一个本地方法,里面依次调用
    首先在 Try 阶段,要先调用远程接口把 Smith 和 Bob 的钱给冻结起来。
    在 Confirm 阶段,执行远程调用的转账的操作,转账成功进行解冻。
    如果第2步执行成功,那么转账成功,如果第二步执行失败,则调用远程冻结接口对应的解冻方法 (Cancel)。
    优点: 跟2PC比起来,实现以及流程相对简单了一些,但数据的一致性比2PC也要差一些
    缺点: 缺点还是比较明显的,在2,3步中都有可能失败。TCC属于应用层的一种补偿方式,所以需要程序员在实现的时候多写很多补偿的代码,在一些场景中,一些业务流程可能用TCC不太好定义及处理

  • 相关阅读:
    双六游戏 扩展欧几里得
    线段上的格点 辗转相除法(GCD)
    POJ 2395 Out of Hay
    POJ 2377 Bad Cowtractors
    POJ 1258 Agri-Net
    POJ 3169 Layout
    POJ 3723 Conscription
    次最短路径 POJ 3255 Roadblocks
    最小生成树求法 Prim + Kruskal
    如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS
  • 原文地址:https://www.cnblogs.com/javawxid/p/15644454.html
Copyright © 2011-2022 走看看