CAP理论解释
C: consistency(一致性)。指数据在多个副本之间能够保持一致的特性(强一致性)
A: availability(可用性)。一个系统提供的服务必须一直处于可用的状态,每次请求都能够获取到非错误的响应(不保证获取的数据为最新的数据)
P: partition tolerance(分区容错性)。分布式系统在遇到部分网络分区故障的时候,仍能对外提供满足一致性和可用性的服务(整个网络瘫痪除外)。
我们用到的springcloud主要满足A和P法则,dubbo和zookeeper主要满足C和P法则。
CAP理论提到:当发生网络分区之后,那么强一致性和可用性只能选择一种对外提供服务。有了网络分区的分区容错性之后§的前提条件下,我们选择强一致性或可用性对外提供服务,如果一致性和可用性都要满足的情况下,就只能返回错误的提示信息给到用户。
分布式系统还有其他的一些特性需要我们在系统设计的时候需要考虑,不单纯的是CAP的满足。
CAP的简单证明
我们假设一个分布式系统中有A和B两个节点,分别对应着AA和BB数据库。
满足一致性的要求:AA数据库的数据和BB数据库的数据保持一致。
可用性的要求:用户不管访问到A节点的服务还是B节点的服务都可用获取到正确的结果
分区容错性的要求:无论在A和B宕机获取是A和B网络通信中断的情况下,都不影响系统的运行。
我们试想一下:假如A和B节点的网络通信中断了,在满足分区容错性的前提下,如果要保持AA和BB库的数据一致,那么就需要等待A和B节点的通信恢复,如果满足可用性,那么在A和B通信不可用的情况下,就会返回不一致的数据。可见我们的一致性和可用性是不能同时满足的。CAP只能满足其中两个
base理论
base理论是basically available(基本可用)、soft state(软状态)、eventually consistent(最终一致性)三个短语的缩写。base理论是基于大规模互联网分布式实践的结果,降低了我们对系统的要求。是由ebay架构师d