分区容错性 (Partition Tolerance) 是指分布式系统在遇到网络分区(Network Partition)时,仍然能够继续提供服务的能力。

在分布式系统中,网络分区是指由于网络故障导致节点之间无法通信,但节点自身仍然在运行。

为什么 P 是必须的?

在分布式环境下,网络故障是不可避免的(网络抖动、交换机故障、光缆被挖断等)。如果一个系统不支持分区容错性:

  • 一旦发生网络分区,系统就必须完全停止服务。
  • 这违背了分布式系统“通过多机协作提高可靠性”的初衷。

因此,在 CAP 定理中,P(分区容错性)通常是必须保证的,架构师的挑战主要在于当 P 发生时,如何在 C(一致性)A(可用性) 之间做出权衡。

应对网络分区的策略

当网络分区发生时,系统通常有两种选择:

  1. 牺牲可用性 (CP):为了保证所有分区的数据一致,系统可能会拒绝部分或全部请求,直到网络恢复。
  2. 牺牲一致性 (AP):允许各个分区独立处理请求,保证服务可用,但不同分区之间的数据会出现不一致,待网络恢复后再进行数据同步(最终一致性)。