写点什么

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 操作也需要满足幂等性。

发布于: 刚刚阅读数: 2
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
BASE 柔性事务学习笔记