ImageVerifierCode 换一换
你正在下载:

CAP理论.doc

[预览]
格式:DOC , 页数:4 ,大小:109KB ,
资源ID:3519735      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3519735.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CAP理论.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

CAP理论.doc

1、CAP 理论1.CAP 概述CAP 理论是由 EricBrewer 教授提出的,在设计和部署分布式应用的时候,存在三个核心的系统需求,这个三个需求之间存在一定的特殊关系。三个需求如下:C: Consistency 一致性A: Availability 可用性P:Partition Tolerance 分区容错性CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。2.CAP 定义(1)C: Consistency 一致性一致性又称为原子性或者事务性。表示一个事务的操作是不可分割的,要不然这个事务完成,要不然这个事务不完成,不会

2、出现这个事务完成了一半这样的情况。这种事务的原子性使得数据具有一致性。我们通常情况下在数据库中存在的脏数据就属于数据没有具有一致性的表现。而在分布式系统中,经常出现的一个数据不具有一致性的情况是读写数据时缺乏一致性。比如两个节点数据冗余,第一个节点有一个写操作,数据更新以后没有有效的使得第二个节点更新数据,在读取第二个节点的时候就会出现不一致的问题出现。传统的 ACID 数据库是很少存在一致性问题的,因为数据的单点原因,数据的存取又具有良好的事务性,不会出现读写的不一致。(2)A: Availability 可用性好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户

3、体验不好的情况。可用性通常情况下可用性和分布式数据冗余,负载均衡等有着很大的关联。(3)P:Partition Tolerance 分区容错性分区容错性和扩展性紧密相关。在分布式应用中,可能因为一些分布式的原因导致系统无法正常运转。好的分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,这样就具有好的分区容错性。3.CAP 理论的意义随着互联网应用的飞速发展,数据量与日俱增,传统的 ACID 数据库已经不能满足如此大的海量数据存储了。这个时候需要设计出好的分布式数据存

4、储方式。而这些分布式数据存储方式受到 CAP 理论的约束,不可能达到高一致性,高可用性,高分区容错性的完美设计。所以我们在设计的时候要懂得取舍,重点关注对应用需求来说比较重要的,而放弃不重要的,在 CAP 这三者之间进行取舍,设计出贴合应用的存储方案。目前众多的分布式数据系统通过降低一致性来换取可用性。下面是一个简单的例子:两个节点数据冗余,第一个节点先有一个写操作,第二个节点后有一个读操作。下面的图中 a 是整个过程,要具有一致性的话需要等待 a1进行 write,然后同步到 a2,然后 a2再进行 write,只有整个事务完成以后,a2才能够进行 read。但是这样的话使得整个系统的可用性

5、下降,a2一直阻塞在那里等待 a1同步到 a2。这个时候如果对一致性要求不高的话,a2可以不等待 a1数据对于 a2的写同步,直接读取,这样虽然此时的读写不具有一致性,但是在后面可以通过异步的方式使得 a1和 a2的数据最终一致,达到最终一致性。4.BASE 理论BASE 理论是 CAP 理论结合实际的产物。 BASE(Basically Available, Soft-state,Eventuallyconsistent)英文中有碱的意思,这个正好和 ACID 的酸的意义相对,很有意思。BASE 恰好和 ACID 是相对的,BASE 要求牺牲高一致性,获得可用性或可靠性。5.CAP 之间的取

6、舍满足一致性,可用性的系统,通常在可扩展性上不太强大: Traditional RDBMSs like Postgres,MySQL, etc (relational) Vertica (column-oriented) Aster Data (relational) Greenplum (relational)满足一致性,分区容忍必的系统,通常性能不是特别高: BigTable (column-oriented/tabular) Hypertable (column-oriented/tabular) HBase (column-oriented/tabular) MongoDB (docu

7、ment-oriented) Terrastore (document-oriented) Redis (key-value) Scalaris (key-value) MemcacheDB (key-value) Berkeley DB (key-value)满足可用性,分区容忍性的系统,通常可能对一致性要求低一些: Dynamo (key-value) Voldemort (key-value) Tokyo Cabinet (key-value) KAI (key-value) Cassandra (column-oriented/tabular) CouchDB (document-or

8、iented) SimpleDB (document-oriented) Riak (document-oriented)6.CAP 的反对声音Guy Pardon 写了一篇文章“A CAP Solution (Proving Brewer Wrong)”来反对 CAP 理论。他提出了一个同时满足 CAP 的解决方案来反对 Brewer 的三者只能取其二的说法。他设计的系统如下:(1)程序如果能够读取数据库的话读取数据库,如果不能的话可以使用缓存代替。(2)所有的读取操作使用版本号或者其他可以使用乐观锁的机制。(3)客户端的所有更新操作全部放在队列中顺序处理。更新操作中要包括该更新的读取操作时

9、的版本信息。(4)当分区数量足够少的时候,可以处理队列中的更新操作。比较简单的方式是建立一个跨越所有分布式副本的事务,对每个副本进行更新操作(其他方式比如 quorum 等等也可以)。如果该更新的读取操作时的版本信息不是当前数据库中数据的版本信息,则将失败返回给客户端,否则返回成功。(5)数据库操作结果(确认或者取消)通过异步的方式发送到客户端,可以通过邮件,消息队列或者其他异步方式。该系统符合 CAP 如下:符合 C(高一致性):读取的数据都是基于快照的,而且错误的更新操作不会执行。符合 A(高可用性):读取和更新都会返回数据。符合 P(高分区容错性):允许网络或者节点出错。该设计是符合 BASE 理论的。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。