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个接口,开发成本高。

  • 相关阅读:
    Javascript创建对象的几种方式
    web化的远程桌面
    (原创) Asp.net XPS HighLight(高亮)CreateWatermark(水印 )
    C# 序列化和反序列化
    删除 HttpCookie
    (轉)AlertBox 彈出層(真的不錯哦)
    净高误差超过20mm
    如何处理并发
    ORM性能比对
    STL源码iterator和traits编程技法
  • 原文地址:https://www.cnblogs.com/xhyouyou/p/12465530.html
Copyright © 2011-2022 走看看