小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
BASE理论没有要求数据的强一致性,而是允许数据在一段时间内是不一致的情况,但是数据最终会在某个时间点实现一致性。采用BASE理论来实现数据的一致性,应用的可用性对用户很重要。
比如在电商平台中用户发起一个订单的支付,不需要同步等待支付的返回结果,系统会返回一个支付处理中的状态到用户界面,对用户来说,可从订单列表中看到支付的处理结果。对系统来说,当第三方的支付处理成功后,再更新订单的支付状态即可,在这种情况下,订单的支付装填和第三方的支付状态存在较短时间的不一致,但是用户获取更好的用户体验。
分布式事务问题常用解决方案
对CAP理论的数据一致性问题有AP和CP两种方案,但是在电商等互联网场景下,基于CP的强一致性方案在数据库性能和系统处理能力上会存在一定的瓶颈,所以在互联网场景中主要采用柔性事务,柔性事务是遵循BASE理论来实现事务模型,它有两个特性:基本可用、柔性状态。
TCC补偿型方案
TCC(Try-Confirm-Cancel)是一种分布式数据一致性解决方案,它实际上是把一个完整的业务拆分为如下桑步骤
- Try:这个阶段主要是对数据的校验或者资源的预留
- Confirm:确认真正执行的任务,只操作Try阶段预留的资源
- Cancel:取消执行,释放Try阶段预留的资源