分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型

标签: 分布 典型 2pc | 发表时间:2017-09-12 11:23 | 作者:aoyouzi
出处:http://www.iteye.com

 

1. 柔性事务和刚性事务

柔性事务满足BASE理论(基本可用,最终一致)
刚性事务满足ACID理论

本文主要围绕分布式事务当中的柔性事务的处理方式进行讨论。

柔性事务分为

  1. 两阶段型
  2. 补偿型
  3. 异步确保型
  4. 最大努力通知型几种。 由于支付宝整个架构是SOA架构,因此传统单机环境下数据库的ACID事务满足了分布式环境下的业务需要,以上几种事务类似就是针对分布式环境下业务需要设定的。

2. 两阶段提交(2PC)型

两阶段型:就是分布式事务两阶段提交,对应技术上的XA、JTA/JTS。
这是分布式环境下事务处理的典型模式。

2、事务补偿型(TCC事务):

TCC型事务(Try/Confirm/Cancel)可以归为补偿型。
补偿型的例子,在一个长事务( long-running )中 ,一个由两台服务器一起参与的事务,服务器A发起事务,服务器B参与事务,B的事务需要人工参与,所以处理时间可能很长。如果按照ACID的原则,要保持事务的隔离性、一致性,服务器A中发起的事务中使用到的事务资源将会被锁定,不允许其他应用访问到事务过程中的中间结果,直到整个事务被提交或者回滚。这就造成事务A中的资源被长时间锁定,系统的可用性将不可接受。
WS-BusinessActivity提供了一种基于补偿的long-running的事务处理模型。还是上面的例子,服务器A的事务如果执行顺利,那么事务A就先行提交,如果事务B也执行顺利,则事务B也提交,整个事务就算完成。但是如果事务B执行失败,事务B本身回滚,这时事务A已经被提交,所以需要执行一个补偿操作,将已经提交的事务A执行的操作作反操作,恢复到未执行前事务A的状态。这样的SAGA事务模型,是牺牲了一定的隔离性和一致性的,但是提高了long-running事务的可用性。
例子来源:OASIS的WS-BusinessActivity文档

3、异步确保型

将一些同步阻塞的事务操作变为异步的操作,避免对数据库事务的争用,典型例子是热点账户异步记账、批量记账的处理。

4、最大努力型

PPT中提到的例子交易的消息通知(例如商户交易结果通知重试、补单重试)

如果有技术背景,可以参考另外一个文档 大规模SOA系统中的分布事务处事 ,对支付宝分布式事务处理机制有较为详细描述。
更详细的也可以参考OASIS的相关资料。

参考资料:
https://www.zhihu.com/question/31813039(梁川)
支付宝架构与技术
大规模SOA系统中的分布式事务处理

 

http://blog.csdn.net/garfielder007/article/details/70515859



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [分布 典型 2pc] 推荐:

分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型

- - 研发管理 - ITeye博客
柔性事务满足BASE理论(基本可用,最终一致). 本文主要围绕分布式事务当中的柔性事务的处理方式进行讨论. 由于支付宝整个架构是SOA架构,因此传统单机环境下数据库的ACID事务满足了分布式环境下的业务需要,以上几种事务类似就是针对分布式环境下业务需要设定的. 两阶段型:就是分布式事务两阶段提交,对应技术上的XA、JTA/JTS.

分布式系统中的一致性协议之两阶段提交协议(2PC)

- - 断尘居
 两阶段提交协议是很常见的解决分布式事务的方式,他可以保证分布式事务中,要么所有参与的进程都提交事务成功,要么都取消事务,这样做可以在分布式环境中保持ACID中A(原子性).      在两阶段提交协议中,包含了两种角色:协调者与参与者. 参与者就是实际处理事务的机器,而协调者就是其中一台单独的处理分布式事务的机器.

如何选择分布式事务形态(TCC,SAGA,2PC,补偿,基于消息最终一致性等等) - YOYO&# - 博客园

- -
分布式事务有多种主流形态,包括:. 基于补偿实现的分布式事务(gts/seata自动补偿的形式). 基于TCC实现的分布式事务. 基于SAGA实现的分布式事务. 基于2PC实现的分布式事务. 因为任何事情都没有银弹,只有最合适当前场景的解决方案. 这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重点放在如何根据业务选择对应的分布式事务形态上.

hbase两个典型应用实例

- - CSDN博客推荐文章
本文介绍hbase的两个典型应用实例OpenTSDB和地理信息系统. 学习一种技术最好的办法就是了解一个正在使用的应用系统是如何应用这种技术来解决问题的. 其中开源的OPenTSDB数据监控系统就是应用hbase解决数据存储的. 同时hbase还能很好的应对地理信息系统(GIS)中的两个挑战:大规模数据处理的延迟和空间位置建模.

典型的大数据架构

- - 数据库 - ITeye博客
“任何数据架构由主要的四个逻辑组件组成:”. “我不认为这是一个大数据架构的蓝图. 但这样一个图能给你一个关于可能包含的组件的大致的想法. 然后对工程师让事情变得简单,你开始在每个等级上添加需求,约束,和服务等级协议(SLAS Service-level agreement). 一旦你有了关于事情该怎么看的某种想法,你开始建立它并发现你将用到的一些组件不能很好的在一起工作,或者根本没有办法达到这些服务等级协议.

keepalived配置及典型应用案例

- - ITeye博客
keepalived配置及典型应用案例. 使用源码先安装keepalived 1.2.6. 所设keepalived安装到/usr/local/keepalived, 则所有配置文件均位于此目录之下. 我一直没搞明白一个问题,Linux默认总是将程序安装到/usr/local目录下,所有程序共享了/usr/local/sbin目录.

高级数据库典型技术

- - CSDN博客推荐文章
            数据库作为计算机学科中一个比较重要的分支,也是一个对于程序员来说非常好的学习方向. 平时我们用的最多的,同时也是接触最多的一定是增删改查语句,select,. update,delete等,当然,我不会拿这些再说一遍,这些都是老的掉渣的东西了. 所以我们可以学习高级数据库中所以涉及的技术.

[转]ZooKeeper典型应用场景一览

- - 企业架构 - ITeye博客
转载自:http://www.coder4.com/archives/3856. ZooKeeper是一个高可用的分布式数据管理与系统协调框架. 基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是 基于这样的特性,使得ZooKeeper解决很多分布式问题. 网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景 进行一个分门归类的介绍.

ZooKeeper 典型的应用场景

- - CSDN博客推荐文章
下面详细介绍这些典型的应用场景,也就是 Zookeeper 到底能帮我们解决那些问题. 统一命名服务(Name Service). 分布式应用中,通常需要有一套完整的命名规则,既能够产生唯一的名称又便于人识别和记住,通常情况下用树形的名称结构是一个理想的选择,树形的名称结构是一个有层次的目录结构,既对人友好又不会重复.

中国非典型互联网创业案例

- iamsure - 麻木之美-李安科的Blog
综合分析他说的N多事情,我觉得这个案例可信度100%. 这两年来,每当我想起这个案例,总会在心里激赏:中国互联网真是一片神奇的黄金之地啊. 在C市,有2个年轻人,都不大. 不知道他们以前是做啥的,啥性格. 他们没什么积蓄,凑到的资金加起来不到10万. 他们先花了4000块钱,买了1000张电影DVD,全是大片、经典片.