分布式 CAP
CAP,Consistency、Availability and Partition tolerance,一致性、可用性和分区容错性。
一、什么是 CAP 定理?
CAP 定理是指,在一个分布式系统中,一致性、可用性、分区容错性这三个要素最多只能同时实现两点,不可能三者兼得。
二、三大要素
1. 一致性
在分布式系统中,同一时刻时,数据的多个副本保持一致。
2. 可用性
系统的任意节点一直处于可用的状态,每次请求都能正确响应。
3. 分区容错性
即使出现网络分区,依然能够保证一致性、可用性。
网络分区:在分布式系统中,由于网络不通,整个分布式系统被划分为若干个分区,分区内的节点可以相互通信,分区与分区之间无法相互通信。
三、三大要素不可兼得
在分布式系统中,各个节点分开部署,而网络本身又是不可靠的,一定存在延迟和丢失,因此必然会出现网络分区。那么就必须 保证分区容错性。
假设保证了 分区容错性 + 一致性
,那么一旦发生网络分区,就应该等待其恢复且数据同步完成,才可以继续提供服务。那么在这种策略下,可用性便无法保证。
假设保证了 分区容错性 + 可用性
,那么即使发生网络分区,也必须向外提供服务,此时一致性将会被破坏。
四、三大要素的权衡
分区容错性 + 一致性
:- 要求所有节点保持一致性,一旦网络分区发生,系统将无法对外提供服务
- 许多传统的数据库分布式事务都采用此种模式
分区容错性 + 可用性
:- 为了高可用放弃一致性,一旦网络分区发生,节点将只能使用本地数据对外提供服务