zoukankan      html  css  js  c++  java
  • TCC

    XA协议包含两阶段提交(Two-phase Commit,2PC)和三阶段提交(3PC)两种实现

    2PC、3PC还有TCC都蛮相似的。 
    3PC大致是把2PC的第一阶段拆分成了两个阶段, 
    而TCC我感觉是把2PC的第二阶段拆分成了两个阶段。

    TCC又称补偿事务。其核心思想是:"针对每个操作都要注册一个与其对应的确认和补偿(撤销操作)"。它分为三个操作:

    1. Try阶段:主要是对业务系统做检测及资源预留。
    2. Confirm阶段:确认执行业务操作。
    3. Cancel阶段:取消执行业务操作。

    TCC对应 Try、Confirm、Cancel 三种操作可以理解成关系型数据库事务的三种操作:DML、Commit、Rollback。

    在一个跨应用的业务操作中 
    Try:Try操作是先把多个应用中的业务资源预留和锁定住,为后续的确认打下基础,类似的,DML操作要锁定数据库记录行,持有数据库资源。 
    Confirm:Confirm操作是在Try操作中涉及的所有应用均成功之后进行确认,使用预留的业务资源,和Commit类似; 
    Cancel:Cancel则是当Try操作中涉及的所有应用没有全部成功,需要将已成功的应用进行取消(即Rollback回滚)。其中Confirm和Cancel操作是一对反向业务操作。

    总结

    TCC 实质上是应用层的2PC(),好比把 XA 两阶段提交那种在数据资源层做的事务管理工作提到了数据应用层。

    2PC是资源层面的分布式事务,是强一致性,在两阶段提交的整个过程中,一直会持有资源的锁

    TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁

    TCC相比较于2PC来讲性能会好很多,但是因为同时需要改造try、confirm、canel3个接口,开发成本高。

  • 相关阅读:
    codeforces431C
    codeforces158C
    codeforces570C
    codeforces472C
    codeforces401C
    codeforces630C
    codeforces581C
    校内题目腐草为萤
    校内题目大美江湖
    洛谷P3370 && 字符串哈希讲解
  • 原文地址:https://www.cnblogs.com/xhyouyou/p/12465530.html
Copyright © 2011-2022 走看看