事务ACID特性和分布式事务BASE理论
文章目录
-
- 1、事务
- 2、事务特性
- 3、分布式事务
- 4、BASE 理论
1、事务
- 交易项 (
Transaction) 最初特指传统的 database 事务;它是一个系统中执行的一系列 data read 和 write 操作。- 最后发展成为了一种更为广泛的定义;它通常采用 advanced database manipulation language 或 programming language 编程实现。
最经典的事务场景有:银行转账,12306 购票等。
2、事务特性
从严格的定义上讲,并非所有的数据库操作流程都是数据库事务;只有那些具备ACID属性的操作流程才被视为真正的事务
ACID:
-
原子性(Atomicity):
-
整个事务作为一个完整的单位被执行,在此过程中所有操作要么全都成功地完成,要么全都未完成。
-
一旦出现操作失败的情况,则导致整个事务失败,并将所有先前的操作都被撤销并回滚。
-
一致性(Consistency):
-
事务需保证数据库的状态由一个一致的状态转换至另一个一致的状态。
-
在这一状态下(即一致性状态),数据库的数据必须符合完整性约束。
-
一致性(Isolation):
-
在多个事务并发执行时,各事务之间互不影响。
-
事务的一致性层级有四种类型:
-
READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE -
四种一致性层级依次增强,在实际应用中由于并行性能逐渐降低,在开发中通常采用第二种一致性的
READ_COMMITTED级别。 -
持久性(Durability):
- 已被成功提交的事务对数据库的修改应该永久保存在数据库中。
-
3、分布式事务
在单机数据库环境中相对容易轻易实现支持ACID特性的能力,并能确保数据的严格的事务一致性;然而,在分布式系统中这一目标较为困难。
分布式事务:
在分布式系统中,在线服务提供者需要将各个组成部分进行协调配置以便满足服务质量和可用性的要求。其中包含客户端设备(即发起事务的终端)、操作目标以及资源服务器等关键要素,并且这些要素分散部署在不同的节点上以实现负载均衡和高可用性。在这种架构下,在线服务提供者通常会通过网络层协议进行通信以完成跨节点的数据同步与服务请求处理工作。
-
面临的关键挑战:
- 如何在数据一致性、系统可用性和分区容错性之间实现平衡?(即 CAP 理论)
- 当前情况下,在分布式系统中实现CAP原则的全部三项标准是不可能的。
-
CAP 理论: * 一致性:
Consistency多个节点间的数据持续保持一致- 可用性:
Availability系统服务始终处于可用状态,在用户可接受的时间段内返回响应结果 - 分区容错性:
Partition tolerance面对任何网络分区故障(部分子网络故障)时依然能够正常服务所有请求
- 可用性:
4、BASE 理论
-
最初源于eBay架构师将CAP理论与大规模分布式系统实践中取得的经验相结合, 构成了当前绝大多数分布式事务解决方案所依赖的理论基础。
-
其基本理念在于, 当系统无法实现强一致性时, 应根据业务特点选择合适的方式来实现最终一致性。
-
基本可得
Available: -
当系统出现故障时,在不完全影响整体服务的情况下允许部分功能不可用(例如常见的限流措施)。
- 软状态
Soft state:- 数据副本在不同节点之间同步时,允许存在延时
- 软状态
系统中所有数据副本在经过一段时间的同步后能够达成一致的状态,并不需要保证实时的强一致性
总体而言,在分布式计算领域中,默认采用ACID严格一致性的传统事务系统。基于BASE理论设计的分布式系统架构追求高可用性和扩展性,在一定程度上放松了严格的强一致性要求以换取更高的性能效率。这种设计允许在短时间内存在数据不一致现象,并在此基础上确保最终必须恢复到一致的状态以保证数据完整性与系统可靠性。
在实际的分布式系统架构中,各业务类型对于数据一致性的需求存在显著差异,并且一般会采用ACID特性和BASE理论的综合运用。
