mysql中的tcc_分布式事务TCC原理介绍

前言

分布式事务的产生是由于需要同时对多个数据源进行事务操作(资源层),资源层的分布式事务常用的方案有JTA、spring事务等。随着微服务的盛行,服务层的分布式事务也日益重要,本文就着重讨论一种服务层分布式事务的实现原理:TCC。

钢性事务与柔性事务

一般而言,满足ACID的事务的为钢性事务,满足BASE理论的为柔性事务。其中,柔性事务大致可以分为以下四种:两阶段型

补偿型

异步确保型

最大努力通知型

TCC型事务

TCC属于补偿型柔性事务,本质也是一个两阶段型事务,这与JTA是极为相似的,但是与JTA的不同点是,JTA属于资源层事务,而TCC是服务层事务。

在一个长事务( long-running )中 ,一个由两台服务器一起参与的事务,服务器A发起事务,服务器B参与事务,B的事务需要人工参与,所以处理时间可能很长。如果按照ACID的原则,要保持事务的隔离性、一致性,服务器A中发起的事务中使用到的事务资源将会被锁定,不允许其他应用访问到事务过程中的中间结果,直到整个事务被提交或者回滚。这就造成事务A中的资源被长时间锁定,系统的可用性将不可接受。

WS-BusinessActivity提供了一种基于补偿的long-running的事务处理模型。还是上面的例子,服务器A的事务如果执行顺利,那么事务A就先行提交,如果事务B也执行顺利,则事务B也提交,整个事务就算完成。但是如果事务B执行失败,事务B本身回滚,这时事务A已经被提交,所以需要执行一个补偿

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值