浅谈分布式系统的基本问题:可用性和一致性.docxVIP

浅谈分布式系统的基本问题:可用性和一致性.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈分布式系统的基本问题:可用性与一致性 本文章来自于阿里云云栖社区 摘要:?该文章来自于阿里巴巴技术协会(ATA)精选文章。 背景 ? ? ? ? 可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有开源产品ZooKeeper实现的ZAB协议号称超越Paxos,它们之间究竟有什么联系?在网络上没有文章将其清楚地阐述过,于是想到把自己对CAP理论、Paxos协议以及ZAB协议的理解整理成短文,但我唯一不保证的是正确性,各位看官看着办。 该文章来自于阿里巴巴技术协会(ATA)精选文章。 背景 ? ? ? ? 可用性(Availability)和一致性(Consistency)是分布式系统的基本问题,先有著名的CAP理论定义过分布式环境下二者不可兼得的关系,又有神秘的Paxos协议号称是史上最简单的分布式系统一致性算法并获得图灵奖,再有开源产品ZooKeeper实现的ZAB协议号称超越Paxos,它们之间究竟有什么联系?在网络上没有文章将其清楚地阐述过,于是想到把自己对CAP理论、Paxos协议以及ZAB协议的理解整理成短文,但我唯一不保证的是正确性,各位看官看着办。 分布式系统的挑战 ???????? 一致性可理解为所有节点都能访问到最新版本的数据,这在单机场景下非常容易实现,使用共享内存和锁即可解决,但数据存储在单机会有两个限制:1)单机不可用系统整体将不可用;2)系统吞吐量受限于单机的计算能力。消除这两个限制的方法是用多机来存储数据的多个副本,负责更新的客户端会同时更新数据的多个副本,于是问题就来了,多机之间的网络可能无法连接,当负责更新的客户端无法同时到连接多个机器时,如何能保证所有客户端都能读到最新版本的数据? ? ? ? ? ?如下图1中所示,Client A负责更新数据,为了保证Server 1和Server 2上的数据是一致的,Client A会将X=1的写操作同时发给Server 1和Server 2,但是当Client A和Server 2之间发生网络分区(网络无法连接)时,此时如果让write X=1的写操作在Server 1上成功,那Client B和Client C将从Server 1和Server 2上读取到不一致的X值;此时如果要保持X值的一致性,那么write X=1的写操作在Server 1和Server 2上都必须失败,这就是著名的CAP理论:在容忍网络分区的前提下,要么牺牲数据的一致性,要么牺牲写操作的可用性。 图1:CAP理论示意图 ? ? ? ? ? 解决这个问题你可能会想到让Client C同时读取Server 1和Server 2上的X值和版本信息,然后取Server 1和Server 2最新版本的X值, 如下图2所示。但Client C和Server 1之间也可能发生网络分区,这本质上是牺牲读可用性换取写可用性,并没有突破CAP理论。 图2:对图1中可用性的优化 CAP理论 ???????? CAP理论由加州大学伯克利分校的计算机教授Eric Brewer在2000年提出,其核心思想是任何基于网络的数据共享系统最多只能满足数据一致性(Consistency)、可用性(Availability)和网络分区容忍(Partition Tolerance)三个特性中的两个,三个特性的定义如下: 数据一致性:等同于所有节点拥有数据的最新版本 可用性:数据具备高可用性 分区容忍:容忍网络出现分区,分区之间网络不可达 ? ? ? ? 在大规模的分布式环境下,网络分区是必须容忍的现实,于是只能在可用性和一致性两者间做出选择,CAP理论似乎给分布式系统定义了一个悲观的结局,一时间大家都按照CAP理论在对热门的分布式系统进行判定,譬如认为HBase是一个CP系统,Cassandra是AP系统,我个人认为这是不严谨的,理由是CAP理论是对分布式系统中一个数据无法同时达到可用性和一致性的断言,而一个系统中往往存在很多类型的数据,部分数据(譬如银行账户中的余额)是需要强一致性的,而另外一部分数据(譬如银行的总客户数)并不要求强一致性,所以拿CAP理论来划分整个系统是不严谨的, CAP理论带来的价值是指引我们在设计分布式系统时需要区分各种数据的特点,并仔细考虑在小概率的网络分区发生时究竟为该数据选择可用性还是一致性。 ? ? ? ? 对CAP理论的另外一种误读是系统设计时选择其一而完全不去优化另外一项,可用性和一致性的取值范围并不是只有0和1,可用性的值域可以定义成0到100%的连续区间,而一致性也可分为强一致性、弱一致性、读写一致

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档