CAP定理是由加州大学伯克利分校Eric Brewer教授提出来的,他指出WEB服务无法同时满足以下三个属性:

    • 一致性(Consistency):客户端知道一系列的操作都会同时发生
    • 可用性(Availability):每个操作都必须以可预期的响应结束
    • 分区容错性(Partition tolerance):即使出现单个组件不可用,操作依然可以完成

    具体地讲在分布式系统中,在任何数据库设计中,一个web应用至多只能同时支持上面的两个属性。显然,任何横向扩展策略都要依赖于数据分区。因此,设计人员必须在一致性和可用性之间做出选择。