CAP定理(theorem)

一致性(Consistency): 每次读取都会收到最新的写入或错误
可用性(Availability): 每个请求都会收到 (非错误) 响应, 但不保证它包含最新的写入
分区容差(Partition tolerance): 尽管节点之间的网络删除 (或延迟) 了任意数量的消息, 但系统仍继续运行
特别是, cap 定理意味着, 在存在网络分区的情况下, 必须在一致性和可用性之间做出选择。请注意, cap 定理中定义的一致性与 acid 数据库 transactions[4] 中保证的一致性有很大不同。

说明

没有分布式系统可以避免网络故障,因此通常必须容忍网络分区。在存在分区的情况下,可以选择一个分区:一致性或可用性。在选择一致性而非可用性时,如果由于网络分区而无法保证特定信息是最新的,则系统将返回错误或超时。在选择可用性而非一致性时,系统将始终处理查询并尝试返回最新的可用信息版本,即使由于网络分区而无法保证其是最新的。

在没有网络故障的情况下 - 也就是说,当分布式系统正常运行时 - 可以满足可用性和一致性。

CAP经常被误解,好像必须始终选择放弃三种保证中的一种。实际上,只有在发生网络分区或故障时,才能在一致性和可用性之间进行选择;在所有其他时间,不需要进行任何权衡。

设计了传统ACID的数据库系统,例如RDBMS选择一致性而非可用性,而围绕BASE理念设计的系统,例如NoSQL运动中常见的,选择可用性而不是一致性。

PACELC定理以CAP为基础,即使在没有分区的情况下,也会在延迟和一致性之间进行另一次权衡。

https://en.wikipedia.org/wiki/CAP_theorem

猜你喜欢

转载自www.cnblogs.com/kevin1988/p/10488843.html