- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从⼊门到精通!java ⾯向对象程序设计第三版课后题答案
什么是 CAP
CAP 定理最初是由加州⼤学伯克利分校的计算机科学家埃⾥克·布鲁尔(Eric Brewer)在 2000 年的 ACM
PODC 上提出的⼀个猜想,也因此被叫做布鲁尔定理。后来在 2002 年,⿇省理⼯学院的赛斯·吉尔伯特
(Seth Gilbert)和南希·林奇(Nancy Lynch )发表了CAP 定理的证明,让它成为分布式系统领域公认的
⼀个定理。
CAP 定理指出了,在⼀个跨区域⽹络连接,共享数据的分布式系统中,⼀致性(Consistency),可⽤性
(Availability )和分区容错性(Partition Tolerance) 这三个约束属性最终只能同时满⾜⼆个。
下⾯是关于这三个属性的简单描述:
⼀致性:客户端进⾏读操作得到的数据永远是最近⼀次写⼊的数据,要求了对数据读写的强⼀致性。
可⽤性:客户端的请求在限定时间内总能从⾮故障的系统节点得到正常的响应,其中不能有超时,不能
出错如 502之类。
分区容错性:就是出现⽹络分区现象,即节点间⽆法正常通信,数据同步出现延时等情况时,系统仍能
继续提供服务。
需要注意的是,CAP 描述了⼀个常规的分布式系统场景:有⽹络连接,且数据跨节点进⾏共享。如果在
整个系统中,数据只有⼀份,并且其他节点没有对应的副本,也不需要进⾏跨节点的数据共享,这样分
布式系统就不是 CAP 关⼼的对象了,也谈不上结合 CAP 定理去设计和实施。
深⼊认识 CAP
了解 CAP 基本概念之后,我们再来分别对 C ,A ,P 三个属性进⼀步学习下,加深对 CAP 的理解。
C :⼀致性
这⾥的⼀致性从不同⾓度有着各⾃的描述⽅式,在分布式系统中表现是每个节点的数据是相同;⽽对于
客户端,表现是读操作所得到的结果永远是最新写⼊的。其中需要明确的是,对于分布式系统节点来
说,是可能出现某个时刻拥有不同的数据的情况:如果在某个节点执⾏原⼦性操作时,对于执⾏过程中
的节点数据跟其他节点就并不完全⼀致,只有原⼦性操作执⾏完成后,节点的数据才会继续保持同步。
⽐如常见的事务操作,只有事务提交后,客户端才能读取到事务写⼊的数据,失败则回滚为旧的数据,
不会出现读取事务中间写⼊数据的情况。
⼀致性要求了在分布式环境下的操作要就像在单机上完成的⼀样,当客户端发起写请求时,收到写请求
的节点会及时响应,并将更新的数据同步到另⼀个节点,保证数据⼀致性。具体的⼯作流程,如下所
⽰:
1. 客户端向节点 1 发送写操作,将数据 X 更新为 1 ,
2. 更新操作成功,系统将更新的数据从节点 1 同步到节点 2 ,将节点 2 的旧数据 X 也更新为 1。
3. 客户端再向节点 2 发送读操作获取数据 X 时,就会得到 X 最新的值:1。
⼀致性强调了数据的强⼀致,这⼀点要求对于⼀些系统可以说是⼗分重要的。⽐如电商系统的库存扣
减,⾦融系统的转账扣款等场景,任何出现⼀致性的问题,都可能会造成很严重的后果。
A :可⽤性
介绍完⼀致性,再来看下可⽤性,虽然可⽤性概念相对简单,但重要程度跟⼀致性⼀样。要让系统满⾜
可⽤性,就是要保证⽆论除了所有节点出现故障的情况外,系统都能返回有效的响应,允许响应给客户
端是旧的数据,但不能出现响应失败,超时的情况。
可⽤性强调的是服务可⽤,但不保证数据的正确性。⽤⼀个简单的例⼦来描述分布式系统的可⽤性如
下:允许客户端向节点 1 或者节点 2发起读操作,当其中某⼀个节点故障了,不管节点间数据是否⼀
致,只要有节点服务能收到请求,就响应 X 的值,这样就说明这两个节点服务是满⾜可⽤性。
在可⽤性的描述,还值得⼀提的是关于什么算有效的响应。要返回有效的响应,不能超时,也不能出
错,结果不⼀定是正确的,⽐如返回了旧数据,但是客户端接收到后是能进⾏正常业务处理的。
P :分区容错性
讲完 C 和 A 之后,最后再讲⼀下 P : 分区容错性。由于分布式系统多个节点往往部署在多个⽹络环境下
进⾏相互通信,就难免出现⼀些⽹络故障,如⽹络丢包,⽹络消息延迟,⽹络中断等情况,会导致节点
间的通信出现问题,数据同步操作⽆法完成,分区容错性就要求了系统即使在⽹络分区出现的情况下,
能仍继续对客户端提供服务。
因为分布式系统与单机不同,它涉及到了多节点间的通信和数据交互,避免不了⽹络问题,如果没有分
区容错性,就意味着系统不允许出现节点间的通信出现任何错误,错误就意味着系统不可⽤,这在绝⼤
数系统中⽆法接受的。因此对节点间的分区故障容错是必须要考虑的,也是 CAP 定理中分区容错性通常
⾸先要保证的原因。
如何应⽤ CAP 定理
文档评论(0)