美文网首页
分布式CAP理论

分布式CAP理论

作者: 飞翃荷兰人 | 来源:发表于2020-04-07 22:57 被阅读0次

    本文主要来源于:https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/

    分布式的CAP理论中的C - A - P,分别指的是

    • Consistency:一致性。用英文描述:

    any read operation that begins after a write operation completes must return that value, or the result of a later write operation

    意思是:如果客户端对一个分布式系统进行了写操作,在系统返回后,如果立马进行读操作,读到的必须是自己刚刚写入的最新结果。


    image.png

    上图的意思为:客户端对服务集群进行写操作,只有当分布式系统完成信息同步后,才会返回成功,这时无论客户端访问的是哪台服务器,都是最新的结果。

    • Availability:可用性。

    every request received by a non-failing node in the system must result in a response

    如果服务节点没有崩溃,那么每个请求必须得到回应。服务节点不许忽略客户端的请求。

    • Partition tolerance:分区容错性。

    the network will be allowed to lose arbitrarily many messages sent from one node to another

    image.png

    对于分布式服务器G1, G2,允许G1和G2之间失去相互通信的能力。

    总结:分布式系统只能满足三项中的两项而不可能满足全部三项。理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。 --wiki百科

    最后我们用redis举个例子:

    大家都知道redis是有主从的,我们假设,现在有一个一主一从的redis,现在要写入redis,写完之后再读取结果。

      1. 假如说要满足CA,也就是一致性和可用性,那么我们在写redis主机之后,主从同步之后再返回结果才能保证一致性,这样就丧失了分区容错性。
      1. 假如说要保证CP, 也就是一致性和分区容错性,那么在写入主节点后,主节点需要与从节点发生同步之后才会返回,如果这个时候允许分区容错,那么主节点就一直不会返回,丧失了可用性。
      1. 如果保证AP,也就是可用性和分区容错性,那么在写主节点时,主从之间失去同步,这时你读了从节点,那么就是之前的值,也就是丧失了一致性。

    相关文章

      网友评论

          本文标题:分布式CAP理论

          本文链接:https://www.haomeiwen.com/subject/rucaphtx.html