云计算平台是非常巨大的分布式系统,需要处理庞大的处理请求,因此任何小概率事件在此平台中都必然发生。


DBMS强调ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性 (Durability)。其中的一致性强调当程序员定义的事务完成时,数据库处于一致的状态,如对于转帐来说,事务完成时必须是A少了多少钱B就多了多少钱。而对于很多互联网应用来说,对于一致性和隔离性的要求可以降低,而可用性(Availability)的要求则更为明显。从而产生了两种弱一致性的理论:BASE和CAP。

BASE:Basically Availble --基本可用;Soft-state --;Eventual Consistency --最终一致性

CAP: Consistency 一致性;Availability 可用性; Tolerance of network Partition 分区容忍性(可理解为部分节点故障或节点之间连接故障下系统仍可正常工作)。Brewer提出的该经验理论认为这三个目标最多只能达成两个,而另一个则需要通过其他方式来弥补。


如果网络中不存在分区,客户端和存储系统在同一环境中,通过分布式事务机制可以保证一致性和可用性。但在大型网络系统中,分区是必然存在的,因此一般的选择只能是在一致性和可用性之间权衡和折衷。如Ebay的经验尽可能保证可用性,但采用周密调整数据库操作的次序、异步恢复事件,以及数据核对(reconciliation)或者集中决算(settlement batches)等方式来帮助系统达到最终一致性。


实际互联网系统往往都是ACID和BASE两种系统的结合,例如用户身份数据、交易数据通常采取ACID准则。

Guy Pardon认为,CAP理论认为三者不能同时达到是假定CAP被满足是在at the same moment in time,如果放弃这个假定就可以得到三者都满足的方案。但是在我看来,其方案也只是在可用性和一致性之间的折衷而已。放弃了读写一致性,读到的可能只是 cache中的快照而不是最新值;通过在系统无分区时才执行写入队列来保证数据更新一致性,而结果则是异步获得,相当于是对写入可用性要求的一种降低


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wdwbw/archive/2009/05/13/4179749.aspx

分布式领域CAP理论,
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
关系数据库的ACID模型拥有 高一致性 + 可靠性 丧失可用性:
Atomicity原子性:一个缓存 + 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活,更应该是架构师必须掌握的。 

相关文章: