CAP为什么不能同时满足, BASE理论

在分布式系统中, 我们经常会提到CAP理论和BASE理论.

其中CAP代表什么呢?

  • C(Consistency): 一致性, 就是说我们部署一套系统, 肯定都是部署在多台机器上, 形成一个集群, 而集群中的各个结点上面的数据要保持一致.
  • A(Availability): 可用性, 可用性就是指各个结点都必须保持可用.
  • P(Partition tolerance): 分区容错性, 这点是分布式系统最基本的要求.

通常我们会说CAP中的C和A不能同时满足, 为什么呢?

首先我们应有个基本的理解, 系统部署在多个结点, 各个结点是需要进行通信, 数据共享的. 假如我们有3个结点.

  • 如果满足C(一致性), 也就是说当Server1收到一条最新的数据, 需要把这条数据广播到Server2和Server3, 在广播期间, 为了保证一致性, Server是不对外保证服务的. 所以在有限时间内, 不能保证所有结点的可用性, 也就是CAP中的A.
  • 如果满足A(可用性), 很显然, Server1收到一条新的数据更新, 在数据更新到Server2和Server3期间, 如果有新的请求到Server2和Server3, 那么Server1和Server2或者Server1和Server3之间的数据是不一致的, 也就是满足不了CAP中的C.

由此可见, CAP有个重要的点是A(可用性), 因为客户端请求有时间限制的, 所以可用性必须是在有限时间内必须保证可用.

那么BASE理论又是什么呢?

  • Base Available(基本可用),系统在出现不可预知的故障的时候,允许丧失部分可用性
  • Soft state, 允许数据存在的中间状态, 灰度状态, 过渡状态
  • Eventually consistent,最终一致性
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章