CAP原则

作者: quanCN | 来源:发表于2020-10-18 10:17 被阅读0次

    简介

    CAP定理,有计算机科学家Eric Brewer提出也称Brewer定理是在分布式系统中的一个基本定理,指出任何分布式系统最多可以有两个以下三个属性。

    • Consistency(一致性)
    • Availability(可用性)
    • Partition tolerance(分区容错性)

    它们的第一个字母分别是 C、A、P。
    原文

    Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。


    Consistency

    一致性(C),是指在分布式系统中所有数据备份在同一时刻是否拥有同样的值
    如下图,是一个不一致的例子



    客户端从G1写入,但是从G2读到的却是一个旧的数据,不满足一致性
    下图则是一个一致的例子



    如图,G1在向客户端发送确认信息前,跟G2进行了一次同步操作,因此客户端从G1,G2获取的数据都将满足一致性

    Availability

    可用性(A),是指系统中非故障节点收到的每个请求都必须导致响应

    :在可用的系统中,如果我们的客户端向服务器发送请求并且服务器没有崩溃,则服务器最终必须响应客户端。不允许服务器忽略客户端的请求。也就是说用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

    Partition tolerance

    分区容错性(P),分区容错性的分区相当于对通信的时限要求,系统如果不能在一定时限内达成数据一致性,就意味这发生了分区的情况,也就是说整个分布式系统不再互联。



    如果G1和G2不能保持一致性,那么就会出现分区,即分布式环境中的节点分成了两组,彼此之间无法通信

    结论

    • 一个系统不能同时拥有这三个性质

    组合维度

    组合维度 组合描述
    CA 放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
    AP 放弃一致性(这里说的是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多NoSQL系统就是如此
    CP 放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可以

    相关文章

      网友评论

          本文标题:CAP原则

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