赞
踩
2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
一致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。
可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。
分区容错性指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)都放在一台机器上。虽然无法100%保证系统不会出错,但不会碰到由分区带来的负面效果。当然这个选择会严重的影响系统的扩展性。
作为一个分布式系统,放弃P,即相当于放弃了分布式,一旦并发性很高,单机服务根本不能承受压力。
像很多银行服务,确确实实就是舍弃了P,只用单台小型机+ORACLE保证服务可用性。
相对于放弃“分区容错性“来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待一定的时间,因此在等待期间系统无法对外提供服务。
作为分布式系统,有分区服务发生问题很有可能,如果因为某些服务不能用,导致整个服务都不能用,这个根本不是好的分布式系统。
这里所说的放弃一致性,并不是完全放弃数据一致性,而是放弃数据的强一致性。即放弃了同一时刻的数据一致性,而保留数据的最终一致性。
以网络购物为例,对只剩下一件库存的商品,如果同时接受到了两份订单,那么较晚的订单将被告知商品告罄。
通常情况下,很多分布式服务系统都是采用该方案,保证可用性性,分布式服务,因为某些分区服务发生问题,先容忍,最终通过一些折中的方法达到最终数据一致性。
CAP理论是分布式数据库中很重要的理论基础。CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性 的缩写。在分布式系统中,三者不可兼得,只能得到其中之二。所以就有了三个分类:CA数据库,CP数据库,AP数据库。
CA数据库不考虑分区容忍性,对应现实中是数据库就是普通的关系型数据库RDBMS。
CP数据库考虑的是一致性和分区容忍性,这种数据库对分布式系统内的通信要求比较高,因为要保持数据的一致性,需要做大量的交互。
AP数据库考虑的是实用性和分区容忍性,即外部访问数据,可以更快的得到回应。这时候,数据的一致性就可能得不到满足。比如一个数据,可能外部一个进程在改写这个数据,同时另一个进程在读这个数据,此时,数据显现是不一致的。但是有一点,就是数据库会满足一个最终一致性的概念,即过程可能是不一致的,但是到某一个终点,数据就会一致起来。
分布式的优点是大大的,最明显的就是可以同时处理很多事情,可以同时响应很多请求。
分布式的缺点也是大大的。
机器之间需要花费不少时间精力来沟通,这就是分布式的缺点。
沟通到机器认识在一个水平,数据状态一致,这叫同步。
沟通的时候有部分消息没有正确传给对方,这叫信号丢失。
沟通的时候,发现机器A和机器B思路完全不一样,出现网络中断分离,这就等同于俩数据中心。
- 因果一致性 。如果进程A通知进程B它已更新了一个数据项,那么进程B的后续访问将返回更新后的值,且一次写入 将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。
- “读己之所写(read-your-writes)”一致性 。当进程A自己更新一个数据项之后,它总是访问到 更新过的值,绝不会看到旧值。这是因果一致性模型的一个特例。
- 会话(Session)一致性 。这是上一个模型的实用版本,它把访问存储系统的进程放到会话的上下文中。只要 会话还存在,系统就保证“读己之所写”一致性。如果由于某些失败情形令会话终止,就要建立新的会话,而且系统的保证不会延续到新的会话。
- 单调(Monotonic)读一致性 。如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那 个值之前的值。
- 单调写一致性 。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性,就非常难以编程 了。
About Me
.............................................................................................................................................
● 本文整理自网络
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文博客园地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群:230161599 微信群:私聊
● 联系我请加QQ好友(646634621),注明添加缘由
● 于 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成
● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
.............................................................................................................................................
● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。
小麦苗的微信公众号 小麦苗的QQ群 小麦苗的微店
.............................................................................................................................................
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2142893/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26736162/viewspace-2142893/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。