CAP原理与传统的ACID
一 CAP
1.C(Consistency) 强一致性
所有的节点上的数据时刻保持同步。
2.A(Availability) 可用性
每个请求都能接受到一个响应,无论响应成功或失败。
3.P(Partition tolerance) 分区容忍性
系统应该能持续提供服务,即使系统内部有消息丢失(分区)。
4.CAP核心理论
最多只能同时满足两个,因此分为三大类
- CA:单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
- CP:满足一致性,分区容忍性的系统,通常性能不是特别高。Redis、
- AP:满足可用性,分区容忍性的系统,通常可能对一致性要求低一些.。
5.CAP的3进2
分区容忍性必须要实现,所以只能在一致性与可用性之间均衡
- CA:传统的Oracle数据库。
- CP:Redis、Mongodb。
- AP:大多数网站架构。
BASE思想:让系统在某一时刻放松对数据一致性的要求来换取整体伸缩性和性能上的改观
- BA(Basically Available) 基本可用
- S(Soft state) 软状态
- E(Eventually consistent) 最终一致
二 ACID
1.A(Atomicity) 原子性
原子性很好理解就是说事务的所有操作要不全部做完,要不都不做完,事务成功建立在事务的所有操作都进行完成,不会出现执行成功一半的情况,凡是半路出错就会回滚,如A给B转账1000元,步骤是先扣A1000元,再给B加1000元,若不一起完成,就会导致A少了1000元。
2.C(Cinsistency) 一致性
数据库要一致处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
3.I(Isolation) 独立性
独立性是指并发的事务之间不会相互影响,若一个事务A查询的数据正在被事务B进行修改,只要B事务的修改没有提交,A事务访问的数据就不会发生变化。
4.D(Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库中,即使出现宕机也不会丢失。