概述
本文简单简单介绍刚性/柔性事务,还有实现方式,后面的文章将会详细介绍几种事务模型。
事务分类
刚性事务:遵循ACID原则,强一致性。
柔性事务:遵循BASE理论,最终一致性;与刚性事务不同,柔性事务允许一定时间内,不同节点的数据不一致,但要求最终一致。
刚性事务
ACID 是什么?
A : 原子性(Atomicity)
C : 一致性(Consistency)
I : 隔离性(Isolation)
D : 持久性(Durability)
这里就不多解释 ACID ,可以结合数据库(例如 MySQL)进行学习
柔性事务
BASE 是什么?
基本可用(Basically Available): 基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性
软状态(Soft state): 存在中间状态
最终一致性(Eventually consistent): 最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
如何实现
刚性事务
以MySQL为例,MySQL 使用 WAL (Write ahead logging)--redo log 实现 和 快照--undo log 实现来保证刚性事务 。
柔性事务实现
柔性事务的实现方式有 :
- TCC(Try/Confirm/Cancel)型事务
- 异步确保性
- 最大努力性