CAP理论是指,在分布式系统中不可能同时知足C(一致性)、A(可用性)、P(分区容错性)这三个需求,最多只能知足两项数据库
分布式系统对分区容错性是确定要能够支持的,若是不支持的话那其实就是单机数据库网络
因此分布式系统通常会选择CP或者AP分布式
在分布式环境下,一致性是指数据在多个副本之间可否保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操做后,应该保证系统的数据仍然处于一直的状态。设计
对于一个将数据副本分布在不一样分布式节点上的系统来讲,若是对第一个节点的数据进 行了更新操做而且更新成功后,却没有使得第二个节点上的数据获得相应的更新,因而在对第二个节点的数据进行读取操做时,获取的依然是老数据(或称为脏数 据),这就是典型的分布式数据不一致的状况。在分布式系统中,若是可以作到针对一个数据项的更新操做执行成功后,全部的用户均可以读取到其最新的值,那么 这样的系统就被认为具备强一致性集群
可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每个操做请求老是可以在有限的时间内返回结果。这里的重点是"有限时间内"和"返回结果"。zookeeper
"有限时间内"是指,对于用户的一个操做请求,系统必须可以在指定的时间内返回对 应的处理结果,若是超过了这个时间范围,那么系统就被认为是不可用的。另外,"有限的时间内"是指系统设计之初就设计好的运行指标,一般不一样系统之间有很 大的不一样,不管如何,对于用户请求,系统必须存在一个合理的响应时间,不然用户便会对系统感到失望。请求
"返回结果"是可用性的另外一个很是重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果一般可以明确地反映出队请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。数据
分区容错性约束了一个分布式系统具备以下特性:分布式系统在遇到任何网络分区故障的时候,仍然须要可以保证对外提供知足一致性和可用性的服务,除非是整个网络环境都发生了故障。系统设计
网络分区是指在分布式系统中,不一样的节点分布在不一样的子网络(机房或异地网络) 中,因为一些特殊的缘由致使这些子网络出现网络不连通的情况,但各个子网络的内部网络是正常的,从而致使整个系统的网络环境被切分红了若干个孤立的区域。 须要注意的是,组成一个分布式系统的每一个节点的加入与退出均可以看做是一个特殊的网络分区。分布式系统
而BASE理论就是对于CAP的一个权衡的结果
BASE理论的核心思想是:即便没法作到强一致性,但每一个应用均可以根据自身业务特色,采用适当的方式来使系统达到最终一致性。
zookeeper做为分布式协调系统,因此对一致性的要求就很高,zookeeper就是典型的CP
eureka做为服务的注册中心对可用性要求更高因此eureka是AP,因此eureka若是集群状态下有可能会发生数据不一致的状况