BASE 柔性事务学习笔记
BASE 柔性事务
本地事务 -> XA(2PC) -> BASE
如果将实现了 ACID 的事务要素的事务称为刚性事务的话,那么基于 BASE 事务要素的事务则称为柔性事务。 BASE 是基本可用、柔性状态和最终一致性这三个要素的缩写。
• 基本可用(Basically Available)保证分布式事务参与方不一定同时在线。
• 柔性状态(Soft state)则允许系统状态更新有一定的延时,这个延时对客户来说不一定能够察觉。
• 而最终一致性(Eventually consistent)通常是通过消息传递的方式保证系统的最终一致性。
在 ACID 事务中对隔离性的要求很高,在事务执行过程中,必须将所有的资源锁定。 柔性事务的理念
则是通过业务逻辑将互斥锁操作从资源层面上移至业务层面。通过放宽对强一致性要求,来换取系
统吞吐量的提升。
BASE 柔性事务常见模式:
1、TCC
通过手动补偿处理。
2、AT
通过自动补偿处理。
BASE 柔性事务 TCC
TCC 模式即将每个服务业务操作分为两个阶段,第一个阶段检查并预留相关资源,第二阶段根据所有
服务业务的 Try 状态来操作,如果都成功,则进行 Confirm 操作,如果任意一个 Try 发生错误,则全
部 Cancel。
TCC 使用要求就是业务接口都必须实现三段逻辑:
1.准备操作 Try:完成所有业务检查,预留必须的业务资源。
2.确认操作 Confirm:真正执行的业务逻辑,不做任何业务检查,只使用 Try 阶段预留的业务资源。因此,只要 Try 操作成功,Confirm 必须能成功。另外,Confirm 操作需满足幂等性,保证一笔分布式事务能且只能成功一次。
3.取消操作 Cancel:释放 Try 阶段预留的业务资源。同样的,Cancel 操作也需要满足幂等性。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/b63e4aaa5eb7018ec02acb392】。文章转载请联系作者。
评论