分布式系统中的cap原则

分布式系统中的cap原则

CAP原则:

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)

CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。(就是要么AP,要么CP,要么AC,但是不存在CAP)

 

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

eureka和zookeeper的服务治理使用了cap原则

eureka宁可接受故障实例,也不愿意丢掉健康的实例,zookeeper则比较严格,对于故障实例会直接剔除。

对于eureka来说,它还有一个自我保护机制,在网络不好的时候,我们的服务可能不能及时去和eureka续约。我们的eureka会判断最近15分钟心跳失败的 比例是不是超过85%,如果超过,eureka会认为可能出现了特殊情况(例如网络波动),那么他会把这些失效的实例保护起来,而不会去剔除。

Eureka的服务治理强调了CAP原则中的AP,即可用性和可靠性。它与Zookeeper这一类强调CP(一致性,可靠性)的服务治理框架最大的区别在于:Eureka为了实现更高的服务可用性,牺牲了一定的一致性,极端情况下它宁愿接收故障实例也不愿丢掉健康实例,正如我们上面所说的自我保护机制。