我读过很多关于 CAP 定理的文章。我了解 A、C、P 的含义,以及当我们遇到网络通信问题时该怎么办。
总之,我们有这样的案例:
如果集群中两个节点有通信问题:
此时,当出现问题时,我们可以让节点不同步(放弃一致性),或者
此时,当出现问题时,暂时禁用节点(放弃可用性 - 禁用从检测到通信问题的节点的读/写)。
使用它我们有这样的情况:
1) CA - 如果发生通信问题,数据不同步,因为我们有“可用性”并且我们不会禁用有问题的节点。但同步将开始通信将得到解决。
2) CP - 如果发生通信问题,节点将被禁用(无法对该节点进行写/读)
3) AP - 如果发生通信问题,数据也会不同步。但是因为我们没有C,所以我们不能保证同步后数据是一样的。
AP对我来说不清楚,为什么我们不能保证同步后数据是一样的?我知道因为 CAP 定理告诉我们这一点,因为我们没有 C 但是......这还不够,这并没有告诉我们从技术上真正从里到外发生了什么......