分布式 CAP

CAP,Consistency、Availability and Partition tolerance,一致性、可用性和分区容错性。

一、什么是 CAP 定理?

CAP 定理是指,在一个分布式系统中,一致性、可用性、分区容错性这三个要素最多只能同时实现两点,不可能三者兼得。

二、三大要素

1. 一致性

在分布式系统中,同一时刻时,数据的多个副本保持一致。

2. 可用性

系统的任意节点一直处于可用的状态,每次请求都能正确响应。

3. 分区容错性

即使出现网络分区,依然能够保证一致性、可用性。

网络分区:在分布式系统中,由于网络不通,整个分布式系统被划分为若干个分区,分区内的节点可以相互通信,分区与分区之间无法相互通信。

三、三大要素不可兼得

在分布式系统中,各个节点分开部署,而网络本身又是不可靠的,一定存在延迟和丢失,因此必然会出现网络分区。那么就必须 保证分区容错性

假设保证了 分区容错性 + 一致性,那么一旦发生网络分区,就应该等待其恢复且数据同步完成,才可以继续提供服务。那么在这种策略下,可用性便无法保证。

假设保证了 分区容错性 + 可用性,那么即使发生网络分区,也必须向外提供服务,此时一致性将会被破坏。

四、三大要素的权衡

  • 分区容错性 + 一致性
    • 要求所有节点保持一致性,一旦网络分区发生,系统将无法对外提供服务
    • 许多传统的数据库分布式事务都采用此种模式
  • 分区容错性 + 可用性
    • 为了高可用放弃一致性,一旦网络分区发生,节点将只能使用本地数据对外提供服务

参考