image.png

CAP理论

  • Consistency(一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
  • Avaliability(可用性):即服务一直可用,而且是正常响应时间。系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
  • Partition Tolerance(分区容错性):即分布式系统在遇到某节点或网络故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容错性要求应用虽然是一个分布式系统,但看上去切好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统要求,对于用户而言并没有什么体验上的影响。
  • CP和AP:分布式中,分区容错(P)是必须保证的,当发生网络分区的时候,如果要继续服务,那么强一致性(C)可用性(A)只能2选1

CAP理论关注粒度是数据,而不是整体系统设计的策略

AP架构

当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。
结论:违背了一致性C的要求,只满足可用性和分区容错,即AP
image.png

CP架构

当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性
结论:违背了可用性A的要求,只满足一致性和分区容错,即CP
image.png

  1. 最多只能同时较好的满足两个
    CAP理论的核心:一个分布式系统不可能同时很好的满足三个需求。因此根据CAP原理将 NOSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类。
  • CA:单点集群,满足一致性,可用性的系统,通常扩展性不强大。
  • CP:满足一致性,分区容错性的系统,对数据一致性要求高,所以性能负担大。 Zookeeper/Consul 要求数据必须一致性。
  • AP:满足可用性,分许容错性的系统,通常可能对一致性要求低一些。 Eureka 场景:商场,暂时不一致错一点没关系,只要能正常访问下单即可。 Eureka通过设置一些属性,也可以通过牺牲高可用性实现一致性的要求。
  1. 分布式必须满足:P: Partition tolerance 分区容错性
  • Eureka主要保证高可用:AP
  • Zookeeper/Consul主要保证数据的一致:CP

    web界面

  • Eureka/Consul都有一个web界面。

  • Zookeeper只有一个linux客户端。