

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CAP 定理
<a name="cap-theorem"></a>

 可用性的另一个方面与 CAP 定理有关。该定理指出，一个由存储数据的多个节点组成的分布式系统最多只能同时实现以下三点中的两点：
+  **一致性 (C)**：如果保证不了一致性，每个读取请求都会收到最新的写入内容或错误。
+  **可用性 (A)**：即使节点已关闭或不可用，每个请求也都会收到非错误响应。
+  **分区容错性 (P)**：尽管节点之间丢失了任意数量的消息，但系统仍能继续运行。

（有关更多详细信息，请参阅 Seth Gilbert 和 Nancy Lynch 的文章：[http://dl.acm.org/citation.cfm?id=564601&CFID=609557487&CFTOKEN=15997970](http://dl.acm.org/citation.cfm?id=564601&CFID=609557487&CFTOKEN=15997970)，*ACM SIGACT News*，第 33 卷第 2 期（2002 年），第 51—59 页。） 

 大多数分布式系统都必须容许网络故障，因此就必须允许网络分区。这意味着在出现网络分区时，工作负载就必须在一致性和可用性之间做出选择。如果选择可用性，那么工作负载就会始终返回响应，但数据可能不一致。如果选择一致性，那么在网络分区期间，工作负载会返回错误，因为其无法确定数据的一致性。

 对于以提供更高级别的可用性为目标的工作负载来说，他们可能会选择可用性和分区容错性（A 和 P），以防止在网络分区期间返回错误（不可用）。这就要求使用更宽松[的一致性模型](https://en.wikipedia.org/wiki/Consistency_model)，例如最终一致性或单调一致性。