CAP不可能三角原则

CAP原则,又称CAP定理,是在分布式系统设计中必须考虑的理论。它涉及三个基本性质:

  1. 一致性(Consistency)

    • 对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败。
    • 一致性承诺是站在分布式系统的角度,对访问本系统的客户端的一种保证:要么返回错误,要么返回绝对一致的最新数据。
  2. 可用性(Availability)

    • 任何客户端的请求都能得到响应数据,不会出现响应错误。
    • 可用性承诺是站在分布式系统的角度,对访问本系统的客户的另一种保证:一定会返回数据,不会返回错误,但不保证数据最新。
  3. 分区容忍性(Partition tolerance)

    • 由于分布式系统通过网络进行通信,网络是不可靠的。
    • 即使任意数量的消息丢失或延迟到达,系统仍会继续提供服务,不会挂掉。

权衡

  • CAP理论指出,一个分布式系统不可能同时满足这三个特性。
  • 在不存在网络失败的情况下,C和A能够同时保证。只有当网络发生分区或失败时,才会在C和A之间做出选择。
  • 对于一个分布式系统而言,P是前提,必须保证,因为只要有网络交互就一定会有延迟和数据丢失,这种状况我们必须接受,必须保证系统不能挂掉。
  • 所以只剩下C、A可以选择。要么保证数据一致性(保证数据绝对正确),要么保证可用性(保证系统不出错)。
  • 当选择了C(一致性)时,如果由于网络分区而无法保证特定信息是最新的,则系统将返回错误或超时。
  • 当选择了A(可用性)时,系统将始终处理客户端的查询并尝试返回最新的可用的信息版本,即使由于网络分区而无法保证其是最新的。

C、A、P三者之间的冲突

  • 在分布式系统中,最大的问题是网络。
  • 假设两台服务器之间的网络断开,仍要支持这种网络异常,即满足分区容错性。
  • 这时,要么牺牲数据一致性,响应旧的数据给用户;要么牺牲可用性,阻塞等待,直到网络连接恢复,数据更新操作完成后再响应最新的数据。

总之,CAP原则在分布式系统设计中帮助我们权衡一致性、可用性和分区容忍性,根据业务需求做出合适的选择¹²³⁴.

Source: Conversation with Bing, 3/31/2024 (1) 轻松理解CAP理论 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/50990721. (2) 分布式必备理论基础:CAP和BASE - 三分恶 - 博客园. https://bing.com/search?q=CAP%e4%b8%89%e5%8e%9f%e5%88%99. (3) CAP原则 - 百度百科. https://baike.baidu.com/item/CAP%E5%8E%9F%E5%88%99/5712863. (4) 分布式必备理论基础:CAP和BASE - 三分恶 - 博客园. https://www.cnblogs.com/three-fighter/p/15293310.html. (5) 分布式系统架构中CAP原理及案例-腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1554867.