CAP定理中的一致性是指分布式系统中所有节点都能为任何读取请求返回相同且最新的数据版本,无论哪个节点处理该请求。当系统优先保证一致性时,它会确保在写入操作完成后,所有后续读取都能立即反映该变化,即使某些节点由于网络分区暂时无法访问。这意味着在分区期间,系统会阻塞读/写操作或返回错误,直到所有节点同步完毕,而不是提供潜在的过时数据。例如,如果您在一个服务器上更新了用户的个人资料,那么在向客户端确认写入之前,所有其他服务器都必须认可这个新值。
侧重一致性的经典系统示例是在分布式设置中的传统关系型数据库,如 PostgreSQL。如果两个数据库节点之间发生网络分区,系统可能会拒绝写入,直到分区恢复,以防止数据冲突。另一个例子是 Google 的 Spanner 数据库,它使用同步时钟和严格的共识协议来维护地理上分散的节点之间的全局一致性。这些系统将数据准确性置于即时可用性之上,确保用户永远不会看到过时或冲突的信息,即使这意味着在网络问题期间响应较慢或暂时不可用。
在实践中,CAP定理中的一致性通常需要权衡。大多数实际系统在网络分区不可避免的环境中运行,这迫使设计者在一致性和可用性之间做出选择。例如,银行系统通常优先保证一致性以防止双重支付——在分区期间拒绝交易,而不是冒着余额不一致的风险。然而,像社交媒体动态这样的系统可能优先保证可用性,即使在分区期间也接受写入,并在之后解决冲突。现代数据库通常提供可调的一致性级别(例如,Cassandra 可配置的读/写一致性设置),以便开发人员可以根据特定的用例平衡这些权衡。