“可用性”如何在CAP定理中起作用。 AP里面外出

时间:2014-10-08 10:56:29

标签: consistency cap-theorem nosql

我读过很多关于CAP定理的文章。我理解A,C,P的含义,以及当我们遇到网络通信问题时我们能做些什么。

总之,我们有这样的情况:

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

  1. 此时,当问题发生时,我们可以允许节点不同步(放弃一致性),或

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

  3. 使用这个我们有这样的情况:

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

    2)CP - 如果发生通信问题,节点将被禁用(写入/读取不能对此节点进行)

    3)AP - 如果发生通信问题,数据也不同步。 但由于我们没有C,我们无法保证同步后数据会相同。

    AP对我来说不清楚,为什么我们不保证同步后数据会相同?我知道因为CAP定理告诉我们这个并且因为我们没有C但是......这还不够,这并不能告诉我们内部发生了什么,技术上......

1 个答案:

答案 0 :(得分:0)

AP基本上意味着系统将继续进行更新。 假设更新被发送到服务器S1,服务器S1从服务器S2分区。 S1将能够提供新值,但S2仍将显示过时值。 虽然CAP定理一旦分区消失就不谈融合,但有很多方法可以在网络分区后构建系统。我们可以使用CRDT(无冲突复制数据类型),也可以使用补偿交易。 Eric Brewer在下面的论文中写过这篇文章 - CAP 12 Years