zoukankan      html  css  js  c++  java
  • CAP

    1.什么是CAP

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

      CAP原则指的是,这三个要素最多只能同意实现两点,不可能三者兼顾。

          

     2. Consistency 一致性

      对某个特定的客户端来说,读操作保证能返回最新的写操作的结果。

      下图中G1,G2属于一个集群,下面图解过程主要描述的是客户端向G1写入数据,之后向G2读取数据,达到一致性的过程。

      

       

      

      

      

       

      

      

     3. Availability 可用性

      非故障的节点在合理的时间内返回合理的响应。

    4.Partition tolerance 分区容错性

      当出现网络分区后,系统能够继续提供服务。

      如下图,如果G1和G2网络不通,则出现了网络分区,此时,系统需要能够继续提供服务。

      

    5.CAP为什么不能共存

      举例:发生网络分区的时候,可用性的要求是继续提供读写服务,一致性的要求是数据要一致,已经有网络分区了(网不通),新增数据必然无法同步。

    6.CAP必选之P-分区容错性

      分区容错性是必要选择

      1.所有的软件产品都是运行在互联网上的,互联网是以物理网络为载体的,那么网络分区是不可避免的(强行举例:曾经因为施工网线挖断,导致阿里服务暂停)

      2.假设分区容错性不是必选,那么发生分区的时候不继续提供服务,A可用性肯定无法满足

    7.CA二选一之CP、AP

      CP:

        描述:一致性和分区容错性,如果发生了网络分区,那么数据无法达成一致,需要停止服务,故牺牲了A可用性

        优点:正常工作的集群,各服务节点的数据是一致的,那么客户端读取任何一个服务节点都不用担心数据不一致问题

        缺点:要求数据一致,那么更新数据的时候,需要阻塞等待所有人同步完数据,服务延时较大

      AP:

        描述:可用性和分区容错性,如果发生了网络分区,依然可以对外提供读写服务,那么不同网络分区服务中的数据肯定会出现不一致,故牺牲了C一致性

        优点:系统高可用,能容忍一定程度的外部错误(网络分区,少数服务器宕机)

        缺点:客户端向集群中写入的数据,通过不同的服务读取,可能得到不同的结果

    8.实战

      zookeeper使用的是CP,对于C的话,使用的是最终一致性

      eureka使用的是AP,因为注册中心这种业务对可用性要求较高,而且数据不一致的影响不大,可以通过重试获取连接其它服务器解决问题。
      
      

      

  • 相关阅读:
    eclipse生成jar包 注意事项!
    java结合testng,利用XML做数据源的数据驱动示例
    2018 计蒜之道 初赛 第二场
    2018 计蒜之道 初赛 第一场
    Tarjan&&缩点简析
    POJ1159
    POJ1080
    POJ1260
    POJ2533&&1836&&3176
    Luogu P1484 种树
  • 原文地址:https://www.cnblogs.com/gc65/p/12773450.html
Copyright © 2011-2022 走看看