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不太好定义及处理

  • 相关阅读:
    cssmagic/action js
    sublime Text快捷键
    CSS3动画整理
    有个名字叫随便乱记——JS
    读取Excel文件中的单元格的内容和颜色
    在Windows下利用php自带的mail函数发邮件
    装个Redmine真是麻烦啊
    MVC的项目使用html编辑器UEditorMINI
    数锐科技新网站上线
    本来运行的好的Ajax.dll怎么突然不起作用了
  • 原文地址:https://www.cnblogs.com/javawxid/p/15644454.html
Copyright © 2011-2022 走看看