ive )中找到了一个对分区容忍Р性更为恰当好理解的解释:РOperations will complete, even if individual components are unavailable.Р(即使部分的组件不可用,施加的操作也可以完成)РРCAP说明:在设计一个分布式存储系统时,你不得不在三个特性中选择放弃 一个。Р如果选择Partition Tolerance和Consistency,那么即使坏了节点,操作必须 又一致,又能顺利完成。所以就必须100%保证所有节点之间有很好的连通 性。这是很难做到的。最好的办法就是将所有数据放到同一个节点中。但是 显然这种设计是不满足Availability的。Р如果要满足Availability和Consistency,那么,为了保证可用,数据必须要Р有Replica。这样,系统显然无法容忍Partitiono当同一数据的两个副本Р(Replica)分配到了两个无法通信的Partition上时,显然会返回错误的数据。Р最后看一下满足Availability和Partition Tolerance的情况。满足可用,就说 明数据必须要在不同节点中有replicao然而还必须保证在产生Partition的时 候仍然操作可以完成。那么,必然操作无法保证一致性。Р基于ACID的关系型数据库选择的是C和P。因此能够提供很高的一致性, 但是却在系统繁忙的时候不可用(Service Unavailable)。但是对于大多数互 联网应用来讲,强一致性对他们来说并不一定非要满足,可用性往往是更加 重要的。比如,某博客网站在北京和上海的存储服务器突然不联通,北京用 户和上海用户无法看到对方的评论显然要比北京用户和上海用户访问网站都 返回HTTP 500错误要好的多。 当然,对于银行这种业务来讲,一致性是不能放弃的。这不在我们的讨论范 围之内。