1 CAP 理论
1 定义
- Consistency(一致性): 所有节点上的数据在同一时间具有相同的值。
- Availability(可用性): 在任何节点发出读写请求时,系统都能够在有限的时间内返回合理的响应(不用最新)
- Partition Tolerance(分区容忍性):数据在同一时间无法实现一致,网络出现故障,系统仍然可以继续运行。 系统能够容忍任意数量的网络分区,即使出现网络分区,系统仍能够继续运行。网络分区将整个网络或系统划分成多个独立的区域,每个区域内的节点可以相互通信,但在不同区域的节点之间无法直接通信。
分区容忍性不等于容错性 !
2 CAP理论的3中选2
CAP 理论指出,在分布式系统中,不可能同时满足一致性、可用性和分区容忍性这三个要求,最多只能同时满足其中两个。
C-一致性 数据最新正确且一致
A-可用性 无论是不是正确的都快速返回结果
P-分区容错性 网络分区故障时,系统不崩溃
对于一个分布式系统而言,P必须保证,因为只要有网络交互就一定会有延迟和数据丢失,这种状况我们必须接受,必须保证系统不能挂掉。P实现就是出现网络分区的情况!
所以只剩下C、A可以选择。要么保证数据一致性(保证数据绝对正确),要么保证可用性(保证系统不出错)。
若是不同网络,即网络分区,必然要么快速而不正确,想要正确一致的数据就得等待时间延迟!
3 CP
当选择了C(一致性)时,如果由于网络分区而无法保证特定信息是最新的,则系统将返回错误或超时。(等待数据一致)
4 AP
当选择了A(可用性)时,系统将始终处理客户端的查询并尝试返回最新的可用的信息版本,即使由于网络分区而无法保证其是最新的。(如果快速响应,那么可能数据是错误的,不一致的)
5 AC
强调一致性和可用性,将数据移到一台机器上,既可实现快速响应,响应的数据还都一致(正确)
放弃了分区容忍性,所以无法实现网络扩展。