CAP原理

作者: 迦若莹 | 来源:发表于2018-05-05 17:05 被阅读12次

    我们在学习分布式事务的时候,经常会看到各种博客、博文介绍CAP原理。但是感觉讲述的并不是那么清晰,于是自己查询了各种资料自己综合写了一篇博客,以抒发自己的观点。

    • 一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
    • 可用性(Availability):每一个操作总是能够在确定的时间内返回,而不是一直等待响应。也就是系统随时都是可用的。
    • 分区容忍性(Tolerance of network Partition):在出现网络分区(比如断网)的情况下,分离的系统也能正常运行。

    CAP原理的意思是,一个分布式系统不能同时满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。

    我们对一致性都有很好的理解,所有节点数据都一致吗!但是对于可用性和分区容忍型这两个完全就是众说纷纭,甚至二者的概念很多人分不清。如果说我们的服务器做了集群,拥有了多个节点,然后其中几个节点宕机了,剩下还有机器可以维持正常的服务,那么这个到底是可用性,还是分区容忍型呢?

    其实我觉得可以理解为这几个节点与其它正常的节点失去联系了,也就是出现了网络分区,按照定义,这属于分区容忍性的范畴。而可用性,则是整个系统访问能够快速返回,并不是一直在阻塞中,一直在类似转菊花的等待。

    • CA组合:传统的单节点应用。当我们访问这个应用的的时候,如果应用没有崩溃,网络没有异常,我们的系统也没有过多的性能问题,数据库事务隔离级别防止脏读。那么数据怎么查询都是一致的,而且基本上都是秒响应。但是因为是单节点,如果宕机了就没了,可以说是没有容忍型。
    • CP组合:我们对系统和数据库做出集群。假设是一主多从,而且是必须要主从彻底一致时才能响应。那么当集群的节点越多,容忍型就越高,但是数据同步的时间会越来越长,同时响应的时间就会越来越长。这样就直接导致了可用性越来越差。
    • AP组合:我们访问系统的任意一个节点,都会秒响应,但是不同的系统响应的数据可能会出现不一致。

    综上所述,我们如果想要一套分布式系统,那么肯定是追求AP而去牺牲C,达到最终一致性。而如何达到最终一致性,那么就是分布式事务要做的事了。

    相关文章

      网友评论

          本文标题:CAP原理

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