什么是TCC(Try-Confirm/Cancel)模式?

什么是TCC(Try-Confirm/Cancel)模式?

TCC(Try-Confirm/Cancel)模式是一种分布式事务管理模式,用于确保分布式系统中的数据一致性。它通过将事务分解为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel),来实现分布式事务的管理和控制。

TCC模式的三个阶段

  1. 尝试(Try)
    • 尝试阶段是预留资源或锁定资源的阶段。
    • 该阶段确保所有需要的资源都可以被成功预留,以便后续的确认操作能够顺利进行。
    • 这一步不会真正提交事务,只是做预留操作。
  2. 确认(Confirm)
    • 确认阶段是实际提交事务的阶段。
    • 在这个阶段,系统会确认并提交所有的操作,确保数据的最终一致性。
    • 如果尝试阶段成功,确认阶段应该始终成功。
  3. 取消(Cancel)
    • 取消阶段是回滚事务的阶段。
    • 如果尝试阶段失败,或者确认阶段未能执行,系统会执行取消操作来释放预留的资源或回滚已经进行的操作。
    • 这一步确保系统能够恢复到尝试阶段之前的状态。

TCC模式的工作流程

  1. 尝试阶段
    • 各个服务预留资源或锁定资源。
    • 如果所有服务的尝试操作都成功,则进入确认阶段;否则,进入取消阶段。
  2. 确认阶段
    • 各个服务正式提交事务,完成实际操作。
    • 确认阶段的操作应当是幂等的(即多次执行结果相同)。
  3. 取消阶段
    • 如果尝试阶段中的任何一个操作失败,或者确认阶段未能成功执行,系统会调用取消操作来回滚事务。
    • 取消阶段的操作也应当是幂等的。

TCC模式的优缺点

优点

  1. 强一致性:通过明确的三阶段操作,确保了分布式事务的强一致性。
  2. 灵活性:可以根据业务需求灵活定义每个阶段的操作。
  3. 幂等性:由于确认和取消操作需要幂等性,确保了系统的稳定性和可靠性。

缺点

  1. 复杂性:需要为每个操作定义对应的尝试、确认和取消操作,增加了系统设计和实现的复杂性。
  2. 资源占用:尝试阶段需要预留资源,可能会导致资源占用时间较长。
  3. 实现成本:需要确保每个阶段的操作都是幂等的,增加了开发和维护成本。
 wechat
天生我才必有用