分布式CAP、ACID、BASE基本概念

526 阅读2分钟

1、CAP

Consistency(一致性):数据一致更新,所有数据变动都是同步的 Availability(可用性):好的响应性能 Partition tolerance(分区耐受性):可靠性 一个提供数据服务的存储系统无法同时完美的满足一致性、可用性、分区耐受性这三个条件。

在实际应用中,数据的规模会快速扩张,因此数据架构的伸缩性(分区可耐受性)必不可少。在大型网站中,通常会选择强化分布式存储系统的可用性(A)和伸缩性(P),在某种程度上放弃一致性(C)。

CAP原理实例推导: 1.单实例 常见的单实例数据库,如单实例Mysql、Redis等

单实例
特性: 满足一致性(C)、满足分区可容忍性(P),不满足可用性(A)

2.Sharding 客户端应用HASH算法,进行数据分片存放

分片
特性: 满足一致性(C)、满足分区可容忍性(P)、满足部分可用性(A)(可用性上升)

好处: a.单个服务器宕机只会导致服务降级 b.集群有了扩容缩容的可能性

3.多副本写入

客户端多副本写入,Client在写数据库的时候对多个数据库进行写入,并且在都写入成功的时候才认为成功。

特性: 满足一致性(C),满足分区容忍性(P),读可用性上升(A),写可用性下降(A)

适用于读多写少的场景应用。

变种: 写成功部分副本就返回成功,剩下的副本写入不保证结果,这种结果就是牺牲了一定的一致性(C),换取可用性(A)提升。

4.Clustering

4.1 多副本 -- 写其中一个,同步完成任务写成功

多副本
特性:保证了一致性(C)、可用性、分区容忍性(P)下降

2、ACID

事务机制,保证事务是正确可靠的。 数据库事务机制: 1.原子性(Atomicity): 一个事务是一个不可分割的单元,要么全部成功,要么全部失败 2.一致性(Consistency):从数据库多次读取数据一致 3.隔离性(Isolation):事务之间相互隔离,互不干扰 4.持久性(Durability):事务一旦提交,数据库中的改变也是永久性的

3、BASE

1.基本可用(basically availble) 支持分区失败,出了问题服务仅降级(部分不可用)

2.软状态/柔性(Soft state) 事务软状态可理解为“无连接”的,软状态可以有一段时间不同步、异步

3.最终一致性(Eventual consistency) 最终该数据是一致的,而不是时时一致。