3

大家都说mongoDB是CAP定理中的CP!但是使用主从复制,它也具有高可用性(如果主节点失败,其余成员将自动尝试选择新的主节点)。我的问题是,在哪些情况下(以及如何)它可以具有 AP(具有最终一致性)?

4

2 回答 2

8

实际上,有一个两部分的答案:

  1. 分片级别:每个数据段只有一个权威分片 (C),分片独立工作 (P),如果分片不可用,则其数据也不可用 (A)

  2. 副本集级别:只有一个权威主节点(C),如果需要,将选择一个新的主节点(P),如果没有主节点(在投票阶段应该只持续几秒钟,但这已经足够了)你无法访问该节点上的数据。如果启用从辅助读取(最终一致性),您可以在投票阶段从辅助读取数据,但仍然不能写入新数据。因此,它是一个CP系统。

一般来说,您不会完全失去第三个特征,而是用它换取额外的延迟/开销或在短时间内没有它。

于 2013-04-28T22:30:11.150 回答
1

C,A,P 不太可能全部放在一起,这就是定理,你不能把它们全部放在一起,你只能取两个。

看 :

mongodb 在 CAP 定理中处于什么位置?

于 2013-04-27T05:22:44.380 回答