分布式从ACID、CAP、BASE的理论推进

ACID理论

原⼦性(Atomicity)

⼀致性(Consistency)

隔离性(Isolation)

持久性(Durability)

CAP理论

(1) ⼀致性Consistency

“all nodes see the same data at the same time”

⼀旦数据更新完成并成功返回客户端后,那么分布式系统中所有节点在同⼀时间的数据完全⼀致。

特点

1. 由于存在数据同步的过程,写操作的响应会有⼀定的延迟。

2. 为了保证数据⼀致性会对资源暂时锁定,待数据同步完成释放锁定资源。

3. 如果请求数据同步失败的结点则会返回错误信息,⼀定不会返回旧数据。

(2) 可⽤性(Availability)

“Reads and writes always succeed”

服务⼀直可⽤,⽽且是正常响应时间。

特点 所有请求都有响应,且不会出现响应超时或响应错误

(3) 分区容错性(Partition tolerance)

“the system continues to operate despite arbitrary message loss or failure of part of the system”

分布式系统中,尽管部分节点出现任何消息丢失或者故障,系统应继续运⾏。

通常分布式系统的各各结点部署在不同的⼦⽹,这就是⽹络分区,不可避免的会出 现由于⽹络问题⽽导致结点之间通信失败,此时仍可对外提供服务。

特点 分区容忍性分是布式系统具备的基本能⼒。

CAP的3选2的特性

CA 放弃 P:如果不要求P(不允许分区),则C(强⼀致性)和A(可⽤性)是可以保证的。这样 分区将永远不会存在,因此CA的系统更多的是允许分区后各⼦系统依然保持CA。

CP 放弃 A:如果不要求A(可⽤),相当于每个请求都需要在Server之间强⼀致,⽽P(分区)会导 致同步时间⽆限延⻓,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

场景: 跨⾏转账,⼀次转账请求要等待 双⽅银⾏系统都完成整个事务才 算完成。

AP 放弃 C:要⾼可⽤并允许分区,则需放弃⼀致性。⼀旦分区发⽣,节点之间可能会失去联系,为了 ⾼可⽤,每个节点只能⽤本地数据提供服务,⽽这样会导致全局数据的不⼀致性。现在众多的NoSQL 都属于此类。

场景1: 淘宝订单退款。今⽇退款成功, 明⽇账户到账,只要⽤户可以接 受在⼀定时间内到账即可。

场景2: 12306的买票。都是在可⽤性和 ⼀致性之间舍弃了⼀致性⽽选择 可⽤性。

分布式的BASE理论

Basically Available(基本可⽤)

对响应上时间的妥协

对功能损失的妥协

Soft state(软状态)

硬状态

要求多个节点的数据副本都是⼀致的,这是⼀种"硬状态"

软状态:

允许系统中的数据存在中间状态,并认为该状态不影响系统的整体 可⽤性,即允许系统在多个不同节点的数据副本存在数据延迟。

Eventually consistent(最终⼀致性)

系统能够保证在没有其他新的更新操作的情况下,数据最终⼀定能够达到⼀致 的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值

base是和ACID对⽴的:

ACID 传统数据库 追求强⼀致性模型

BASE ⼤型分布式系统 通过牺牲强⼀致性获得⾼可⽤性

 

posted @ 2020-09-24 22:47  Mr.peter  阅读(205)  评论(0编辑  收藏  举报