分布式基础-CAP理论

CAP概述

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

CAP定义

C(一致性)

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

三种一致性策略

    对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。数据库

    若是能容忍后续的部分或者所有访问不到,则是弱一致性。网络

    若是通过一段时间后要求能访问到更新后的数据,则是最终一致性。分布式

A(可用性)

    服务一直可用,并且是正常响应时间。spa

P(分区容错性)

分布式系统在遇到某节点或网络分区故障的时候,仍然可以对外提供知足一致性和可用性的服务。code

CAP权衡

    注意:C,A,P三者并非平等的,对于一个分布式系统来讲。P是一个基本要求,CAP三者中,只能在CA二者之间作权衡,而且要想尽办法提高P。故不考虑CA没有P的状况。it

CP

    若是一个分布式系统不要求强的可用性,即允许系统停机或者长时间无响应的话,就能够在CAP三者中保障CP而舍弃A。io

    一个保证了CP而一个舍弃了A的分布式系统,一旦发生网络故障或者消息丢失等状况,就要牺牲用户的体验,等待全部数据所有一致了以后再让用户访问系统。电商

    如redis、Zookeeper等。

AP

    要高可用并容许分区,则需放弃一致性。一旦网络问题发生,节点之间可能会失去联系。为了保证高可用,须要在用户访问时能够立刻获得返回,则每一个节点只能用本地数据提供服务,而这样会致使全局数据的不一致性。

    如1230六、电商系统等

    可是,放弃了C,只是放弃了强一致性,系统仍会保证最终一致性。好比12306买票,你按照正常流程,付完款以后,过了一段时间,12306提示你出票失败,这就是最终一致性的表现。

参考

http://www.hollischuang.com/archives/666

相关文章
相关标签/搜索