分布式理论之事务 - 酸(ACID)碱(BASE)理论

目录

一. 前言

二. 酸理论ACID

三. 碱理论BASE

3.1. BASE来源

3.2. 什么是BASE

四. CAP与ACID、BASE的关系

4.1. CAP与ACID的关系

4.2. CAP与BASE的关系


一. 前言

        不管是酸理论还是碱理论都是针对事务提出的。ACID能够保证事务的强一致性,即数据是实时一致的,这在本地事务中是没有问题的。在分布式事务中,强一致性会极大影响分布式系统的性能,因此分布式系统中遵循BASE理论即可。但分布式系统的不同业务场景对一致性的要求也不同。如交易场景下,就要求强一致性,此时就需要遵循ACID理论,而在注册成功后发送短信验证码等场景下,并不需要实时一致,因此遵循BASE理论即可。因此要根据具体业务场景,在ACID和BASE之间寻求平衡。

二. 酸理论ACID

一个事务有四个基本特性,也就是我们常说的(ACID),满足ACID理论的称为刚性事务
Atomicity原子性):事务是一个不可分割的整体,事务内所有操作要么全做成功,要么全失败。
Consistency一致性):务执行前后,数据从一个状态到另一个状态必须是一致的(A向B转账,不能出现A扣了钱,B却没收到)。
Isolation隔离性): 多个并发事务之间相互隔离,不能互相干扰。
Durability持久性):事务完成后,对数据库的更改是永久保存的,不能回滚。

ACID靠什么保证的呢?以MySQL为例:
A原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql。
C一致性一般由代码层面来保证。
I隔离性由MVCC来保证。
D持久性由内存+redo log来保证,mysql修改数据同时在内存和redo log记录这次操作,事务提交的时候通过redo log刷盘,宕机的时候可以从redo log恢复。

三. 碱理论BASE

3.1. BASE来源

eBay 的架构师 Dan Pritchett 源于对大规模分布式系统的实践总结,在 ACM 上发表文章提出 BASE 理论,BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

满足BASE理论的称为柔性事务。BASE理论解决了CAP理论提出的分布式系统的一致性和可用性不能兼得的问题,BASE模型与ACID模型截然不同,满足CAP理论,通过牺牲强一致性,获得可用性,一般应用在服务化系统的应用层或者大数据处理系统,通过达到最终一致性来尽量满足业务的绝大部分需求。

3.2. 什么是BASE

Basically Available基本可用)分布式系统在出现不可预知故障的时候,允许损失部分可用性。
Soft state软状态)软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
Eventually consistent最终一致性)最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

四. CAP与ACID、BASE的关系

4.1. CAP与ACID的关系

ACID 是传统数据库常用的设计理念,追求强一致性模型。BASE 支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

ACID 和 BASE 代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此 ACID 和 BASE 又会结合使用。

4.2. CAP与BASE的关系

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),更具体地说,是对 CAP 中 AP 方案的一个补充。其基本思路就是:通过业务,牺牲强一致性而获得可用性,并允许数据在一段时间内是不一致的,但是最终达到一致性状态。

分布式理论之事务 - 酸(ACID)碱(BASE)理论_第1张图片

你可能感兴趣的:(方法论,分布式)