前言
事务的一致性
强一致性:系统中的某个数据被成功更新后,后续的访问都能看到更新后的值;
弱一致性:系统中的某个数据被更新后,后续的访问可能得到更新后的值,也可能是更改前的值;
最终一致性:系统中的某个数据被更新,经过一段时间后,最终所有的访问都是更新的值;
原子性(Atomicity):事务被视为一个不可分割的最小工作单元,事务中的所有操作要么全部提交成功,要么全部失败回滚;
一致性(Consistency):数据库总是从一个一致性的状态转换到另外一个一致性的状态;
隔离性(Isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的;
持久性(Durability):一旦事务提交,则其所做的修改就会永久保存到数据库中;
原子性:完全支持。
一致性:只提供最终一致性支持。
隔离性:不完全保证,通常为了系统的吞吐和性能,会一定程度上放弃对隔离性的要求。
持久性:完全支持。
CAP理论
一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) ;
可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性);
分区容忍性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择;
CP:牺牲可用性。复制同步的协议一般使用严格的法定数协议 (Paxos、Raft、ZAB)或者2PC协议。CP类型的系统有MongoDB、HBase、 Zookeeper、Redis等。
AP:牺牲一致性。复制同步的协议一般使用非严格的法定数协议。AP类型的系统有 Couch DB、Cassandra、Amazon Dynamo等。
AC:抛开RDBMS的Oracle和MySQL不谈,分布式系统中宣称是CA系统的有谷歌的Spanner 和阿里的OceanBase。
ACID一致性是有关数据库规则,数据库总是从一个一致性的状态转换到另外一个一致性的状态;
CAP的一致性是分布式多服务器之间复制数据令这些服务器拥有同样的数据,由于网速限制,这种复制在不同的服务器上所消耗的时间是不固定的,集群通过组织客户端查看不同节点上还未同步的数据维持逻辑视图,这是一种分布式领域的一致性概念;
ACID中的A指的是原子性(Atomicity),是指事务被视为一个不可分割的最小工作单元,事务中的所有操作要么全部提交成功,要么全部失败回滚;
CAP中的A指的是可用性(Availability),是指集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求;
BASE理论
基本可用(Basically Available):指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。
柔性状态(Soft state):指允许系统存在中间状态,并认为该中间状态不会影响系统整体可用性。比如,允许不同节点间副本同步的延时就是柔性状态的体现。
最终一致性(Eventually consistent):指系统中的所有副本经过一定时间后,最终能够达到一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。





