事务-04-分布式概念篇ACID&CAP&BASE

1 数据库ACIDphp

维基百科说明 https://zh.wikipedia.org/wiki/ACIDnode

ACID,是指数据库管理系统DBMS)在写入或更新资料的过程当中,为保证事务(transaction)是正确可靠的,所必须具有的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。mysql

1.1 Atomicity原子性sql

一个事务(transaction)中的全部操做,要么所有完成,要么所有不完成,不会结束在中间某个环节。事务在执行过程当中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务历来没有执行过同样。数据库

1.2 Consistency 一致性网络

在事务开始以前和事务结束之后,数据库的完整性没有被破坏。这表示写入的资料必须彻底符合全部的预设规则,这包含资料的精确度、串联性以及后续数据库能够自发性地完成预约的工做。架构

1.3 Isolation 隔离性并发

数据库容许多个并发事务同时对其数据进行读写和修改的能力,隔离性能够防止多个事务并发执行时因为交叉执行而致使数据的不一致。事务隔离分为不一样级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。异步

1.4 durability 持久性分布式

事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失。

 

2 分布式系统CAP定理

维基百科说明 https://zh.wikipedia.org/wiki/CAP定理

2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜测。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证实了CAP。以后,CAP理论正式成为分布式计算领域的公认定理。

CAP理论为:一个分布式系统最多只能同时知足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

2.1 Consistence 一致性

一致性指“all nodes see the same data at the same time”,即更新操做成功并返回客户端完成后,全部节点在同一时间的数据彻底一致。

2.2 Availability 可用性

可用性指“Reads and writes always succeed”,即服务一直可用,并且是正常响应时间。

2.3 Partition tolerance 分区容错性

分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然可以对外提供知足一致性和可用性的服务。

2.4 CAP 权衡

经过CAP理论,咱们知道没法同时知足一致性、可用性和分区容错性这三个特性,那要舍弃哪一个呢?

对于多数大型互联网应用的场景,主机众多、部署分散,并且如今的集群规模愈来愈大,因此节点故障、网络故障是常态,并且要保证服务可用性达到N个9,即保证P和A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到形成用户流程的严重程度。

对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁肯中止服务,这是保证CA,舍弃P。貌似这几年国内银行业发生了不下10起事故,但影响面不大,报到也很少,广大群众知道的少。还有一种是保证CP,舍弃A。例如网络故障事只读不写。

孰优孰略,没有定论,只能根据场景定夺,适合的才是最好的。

 

3、分布式BASE理论

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

BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

3.1 基本可用(Basically Available)

基本可用是指分布式系统在出现故障的时候,容许损失部分可用性,即保证核心可用。
电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。

3.2 软状态( Soft State)

软状态是指容许系统存在中间状态,而该中间状态不会影响系统总体可用性。分布式存储中通常一份数据至少会有三个副本,容许不一样节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。

3.3 最终一致性( Eventual Consistency)

最终一致性是指系统中的全部数据副本通过必定时间后,最终可以达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊状况。

 

四、ACID和BASE的区别与联系

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

ACID和BASE表明了两种截然相反的设计哲学

在分布式系统设计的场景中,系统组件对一致性要求是不一样的,所以ACID和BASE又会结合使用。

相关文章
相关标签/搜索