什么是CAP?
CAP 理论主要是针对分布式系统的,CAP 定理认为分布式系统中这三个特性最多只能同时满足两个特性
- 一致性(Consistency): 指在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单来说就是大家的数据要一样
- 可用性(Availability): 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。就是任何时候都得能提供服务,数据可以不是最新的但是一定要相应
- 分区容忍性(Partition tolerance): 即当节点之间无法正常通信时,就产生了分区,而分区产生后,依然能够保证服务可用,那么我们就说系统是分区容忍的。显然如果节点越多,且备份越多,分区容忍度就越高。就是承认网络会出问题
为什么最多只能满足两个?
既然是分布式系统那么一定会通讯,使用网络,网络就可能出问题,那P就已经满足了。假如我们要保证可用性,必然要做多个副本节点,而这必然会带来一致性的问题,即保证多个节点的数据是相同的,但是,要让多个节点数据相同,就必须要花时间去复制数据,这还是能够正常通信的情况下,那么在数据复制的过程中为了保持一致性,就不能对外提供服务,所以这段时间就无法满足可用性的问题。
实际工程通常会采取一些折中措施,比如并不保证强一致性,只保证最终一致性