首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式系统基础理论之CAP理论

分布式系统基础理论之CAP理论

作者头像
lyb-geek
发布2018-07-26 10:12:22
6170
发布2018-07-26 10:12:22
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

概述

  • 2000年7月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想。
  • 2年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 CAP。之后,CAP 理论正式成为分布式计算领域的公认定理。

CAP理论定义

1.CAP定理

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

2.Consistency(一致性)

分布式系统中,不论有多少个节点,所有节点在同一时间的数据完全一致。

3.Availability(可用性)

对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应,不论该应答是成功还是失败。

4.Partition Tolerance(分区容错性)

分布式系统中,在出现网络终端,消息丢失,节点故障等“分区”情况时,系统还能够对外提供满足一致性和可用性的服务。

证明

如上图,是我们证明CAP的基本场景,网络中有两个节点N1和N2,可以简单的理解N1和N2分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库V,N2也有一个应用程序B2和一个数据库V。现在,A和B是分布式系统的两个部分,V是分布式系统的数据存储的两个子数据库。

在满足一致性的时候,N1和N2中的数据是一样的,V0=V0。在满足可用性的时候,用户不管是请求N1或者N2,都会得到立即响应。在满足分区容错性的情况下,N1和N2有任何一方宕机,或者网络不通的时候,都不会影响N1和N2彼此之间的正常运作。

如上图,是分布式系统正常运转的流程,用户向N1机器请求数据更新,程序A更新数据库Vo为V1,分布式系统将数据进行同步操作M,将V1同步的N2中V0,使得N2中的数据V0也更新为V1,N2中的数据再响应N2的请求。

这里,可以定义N1和N2的数据库V之间的数据是否一样为一致性;外部对N1和N2的请求响应为可用行;N1和N2之间的网络环境为分区容错性。这是正常运作的场景,也是理想的场景,然而现实是残酷的,当错误发生的时候,一致性和可用性还有分区容错性,是否能同时满足,还是说要进行取舍呢?

作为一个分布式系统,它和单机系统的最大区别,就在于网络,现在假设一种极端情况,N1和N2之间的网络断开了,我们要支持这种网络异常,相当于要满足分区容错性,能不能同时满足一致性和响应性呢?还是说要对他们进行取舍。

假设在N1和N2之间网络断开的时候,有用户向N1发送数据更新请求,那N1中的数据V0将被更新为V1,由于网络是断开的,所以分布式系统同步操作M,所以N2中的数据依旧是V0;这个时候,有用户向N2发送数据读取请求,由于数据还没有进行同步,应用程序没办法立即给用户返回最新的数据V1,怎么办呢?有二种选择,第一,牺牲数据一致性,响应旧的数据V0给用户;第二,牺牲可用性,阻塞等待,直到网络连接恢复,数据更新操作M完成之后,再给用户响应最新的数据V1。

这个过程,证明了要满足分区容错性的分布式系统,只能在一致性和可用性两者中,选择其中一个。

CAP权衡与折衷

传统的单机系统满足CA,而没有P。在分布式系统中,首先必须要满足P(分布式系统一定要考虑part failure),所以C,A需要根据具体场景进行折衷。

C的折衷

  • 强一致性 任何时刻,任何用户能读取到最近一次成功更新的数据。
  • 单调一致性 也叫因果一致性,任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值
  • 会话一致性 任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中不会再读到比这值更旧的值。
  • 最终一致性 用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障。
  • 弱一致性 用户无法在确定时间内读到最新更新的值

A的折衷

  • 部分数据可用
  • 部分时间所有数据不可用

参考资料

  • 分布式系统的CAP理论 http://www.hollischuang.com/archives/666
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • CAP理论定义
    • 1.CAP定理
      • 2.Consistency(一致性)
        • 3.Availability(可用性)
          • 4.Partition Tolerance(分区容错性)
          • 证明
          • CAP权衡与折衷
          • 参考资料
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档