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

  • 相关阅读:
    MooseFS基础和安装
    自动化运维工具SaltStack详细部署
    linux中的通配符与正则表达式
    使用GitHub做个人博客
    mysql数据库分库备份脚本
    php-fpm配置详解
    php-fpm安装、配置与优化
    ceph的正常卸载与非正常卸载
    CentOS系统/tmp目录里面的文件默认保留多久
    ansible常用命令
  • 原文地址:https://www.cnblogs.com/javawxid/p/15644454.html
Copyright © 2011-2022 走看看