0

我读过很多关于 CAP 定理的文章。我了解 A、C、P 的含义,以及当我们遇到网络通信问题时该怎么办。

总之,我们有这样的案例:

如果集群中两个节点有通信问题:

  1. 此时,当出现问题时,我们可以让节点不同步(放弃一致性),或者

  2. 此时,当出现问题时,暂时禁用节点(放弃可用性 - 禁用从检测到通信问题的节点的读/写)。

使用它我们有这样的情况:

1) CA - 如果发生通信问题,数据不同步,因为我们有“可用性”并且我们不会禁用有问题的节点。但同步将开始通信将得到解决。

2) CP - 如果发生通信问题,节点将被禁用(无法对该节点进行写/读)

3) AP - 如果发生通信问题,数据也会不同步。但是因为我们没有C,所以我们不能保证同步后数据是一样的。

AP对我来说不清楚,为什么我们不能保证同步后数据是一样的?我知道因为 CAP 定理告诉我们这一点,因为我们没有 C 但是......这还不够,这并没有告诉我们从技术上真正从里到外发生了什么......

4

1 回答 1

0

AP基本上意味着系统将继续进行更新。假设更新被发送到从服务器 S2 分区的服务器 S1。S1 将能够提供新值,但 S2 仍将显示陈旧值。尽管 CAP 定理没有谈论一旦分区消失后的收敛,有很多方法可以在网络分区后构建系统。我们可以使用 CRDT(无冲突复制数据类型),也可以使用补偿事务。Eric Brewer 在以下论文中对此进行了描述 - CAP 12 Years

于 2017-12-26T18:22:39.653 回答