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

      

  • 相关阅读:
    BZOJ3503: [Cqoi2014]和谐矩阵
    不常用的黑科技——「三元环」
    解题:八省联考2018 劈配
    解题:EXNR #1 金拱门
    解题:八省联考2018 林克卡特树
    解题:AT2064 Many Easy Problems&EXNR #1 T3 两开花
    解题:SPOJ 422 Transposing is Even More Fun
    解题:SDOI 2017 硬币游戏
    解题:CTSC 2006 歌唱王国
    解题:BZOJ 3622 已经没有什么好害怕的了·
  • 原文地址:https://www.cnblogs.com/gc65/p/12773450.html
Copyright © 2011-2022 走看看