Web服务的CAP(一致性,可用性和分区宽容度)

来源:百度文库 编辑:神马文学网 时间:2024/07/03 11:55:01
Web服务的CAP(一致性(Consistency),可用性(Availability)和分区宽容度(Partition-Tolerant))——摘要翻译
CAP原则的要义在于在分配计算量的过程中,当面对数据的一致性,可用性和分区宽容度时你只能选择三者中的两者。
Inktomi公司的创始人之一兼首席科学家,来自加州大学伯克利分校的教授Eric Brewer在2000 Principles of Distributed Computing (PODC)讨论会上称在部署一个互联网服务时同时做到数据的一致性,可用性和分区宽容度是不可能的。
一致性:可以参考数据库的一致性。每次信息的读取都需要反映最新更新后的数据。
可用性:高可用性意味着每一次请求都可以成功完成并受到响应数据
分区宽容度:这个是容错机制的要求。一个服务需要在局部出错的情况下,没有出错的那部分被复制的数据分区仍然可以支持部分服务的操作(可以简单的理解为可以很容易的在线增减机器以达到更高的扩展性,译者注)。
举一个例子,亚马逊公司的S3服务(以后简称S3,亚马逊公司的云计算服务平台,简单的理解为一个大的存储服务器,译者注)在这个服务中,人们可以像一个简单的FTP服务器一样向亚马逊上传数据,这种上传有着很高的可用性和可扩展性。S3在获得了可用性和分区宽容度的同时却没有获得足够的一致性保证。数据被复制到很多的数据中心,即便这些数据中心的连接出现故障也不会影响请求的操作成功完成。当然,很可能出现这样一种情况,用户将数据上传到了其中的一个数据中心A,但是这个数据中心和下一次请求访问的数据中心B之间的连接出现故障,新上传的数据没有被复制到B中。这个时候当用户从B访问数据时,他会发现数据的一致性出现了问题。但是数据总会在故障修复后完成同步,数据一致性也就得到了恢复。说S3将这种情况定义为最终一致性模型(eventually consistent model)
另一方面,当你选择使用分布式事务,一致性和可用性得到了保证,但是分区宽容度也就无法保证了。
原文请见:
http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf
转载自:http://newkadbbz.spaces.live.com/blog/cns!B9B9D1C8892F9662!524.entry?ppud=4&wa=wsignin1.0&sa=458279658