大家都说mongoDB是CAP定理中的CP!但是使用主从复制,它也具有高可用性(如果一个主节点发生故障,其余成员将自动尝试选举一个新的主节点)。我的问题是,在什么情况下(以及如何)它可以有 AP(具有最终一致性)?
最佳答案
实际上,答案分为两部分:
分片级别:每个数据段只有一个权威分片 (C),分片独立工作 (P),如果分片不可用,则其数据也不可用 (A)
副本集级别:只有一个权威主节点 (C),如果需要,将选择一个新的主节点 (P),如果没有主节点(在投票阶段应该只持续几秒钟,但是够了)您无法访问该节点上的数据。如果启用从辅助节点读取(最终一致性),则可以在投票阶段从辅助节点读取数据,但仍然不会写入新数据。因此这是一个 CP 系统。
一般来说,您不会完全失去第三个特征,但可以用它来换取额外的延迟/开销或短时间内没有它。
关于mongodb - MongoDB 中的高可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16248656/