关于分布式事务BASE模型和柔性事务TCC
分布式事务CAP问题
分布式系统面临的挑战是CAP问题。
2、availability:可用性,良好的响应性能
3、partition tolerance:分区容错性,可靠性
定理:所有分布式系统最多只能同时支持两个特性,并非能够实现三项特性的兼容性。忠告:通常情况下三种特性无法完全兼容,并建议根据具体需求选择其中一种特性进行优化
通常情况下,在不同设备上分散存在(如实体集群、虚拟服务器或分布在不同机房中)的数据具有显著的优势,并可作为评估多个关键绩效指标的标准参考。
1、数据分布
2、负载平衡
3、备份
4、高可用性
5、容错
BASE模型是CAP牺牲强一致性、保证可用性的折中方案:
1、basically available-基本可用
当分布式系统遭遇不可预见的服务中断时,并非完全无法维持可用性;可以让一部分服务可用性得以保留,并列举可能出现的情况如服务降级等。
2、soft state-弱状态
在某些情况下,在某一时间点可能存在中间状态;当不同节点的数据副本进行同步操作时可能会出现延迟现象;主从同步是一种常见的机制。
3、eventually consistent-最终一致
各节点的数据副本,在完成一段时间的数据同步过程后会达到统一状态,并且这种状态下能够确保系统的整体一致性
我们通常接触的经典的中间件包括mysql、zookeeper、redis和elasticsearch等,都建立在BASE理论基础之上。
柔性事务TCC
在某些情况下
最近学习的柔韧性事务与传统ACID原则相比具有显著差异。柔性事务主要体现在其遵循BASE原则这一核心特征上具体而言,在实际操作中这一类事务由三步关键操作构成:尝试(Try)、确认(Confirm)和取消(Cancel)。在尝试阶段会执行数据验证和资源预先创建操作当上述两项验证均成功后,则进入确认阶段完成整个TCC流程;若确认环节出现异常,则需启动取消流程。

整个柔性事务有多种实现的思想,例如:

使用哪一种方式,根据具体项目业务来选择。
tcc柔性事务开源实现:
码云:https://gitee.com/git.sy/Raincat
github:https://github.com/changmingxie/tcc-transaction/tree/master
分布式事务框架:http://www.txlcn.org/zh-cn/
