支付宝运营架构中柔性事务指的是什么?

Posted 架构师成长营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支付宝运营架构中柔性事务指的是什么?相关的知识,希望对你有一定的参考价值。

支付宝架构与技术中对柔性事务有大致的描述:

支付宝运营架构中柔性事务指的是什么?

可以看出,柔性事务(遵循BASE理论)是指相对于ACID刚性事务而言的。

支付宝所说的柔性事务分为:两阶段型、补偿型、异步确保型、最大努力通知型几种。

由于支付宝整个架构是SOA架构,因此传统单机环境下数据库的ACID事务满足了分布式环境下的业务需要,以上几种事务类似就是针对分布式环境下业务需要设定的。

其中:

1、两阶段型:就是分布式事务两阶段提交,对应技术上的XA、JTA/JTS。

这是分布式环境下事务处理的典型模式。

2、补偿型:

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/answer/53437637




以上是关于支付宝运营架构中柔性事务指的是什么?的主要内容,如果未能解决你的问题,请参考以下文章

[转] 支付宝系统架构内部剖析

阿里专家:讲述支付宝内部架构剖析......

转 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

最全最强解析:支付宝钱包系统架构内部剖析(架构图)

柔性事务和刚性事务

支付宝转账过程并发交易引起的分布式死锁问题