当前位置: 首页 > 知识库问答 >
问题:

MongoDB中的高可用性

皇甫文乐
2023-03-14

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

共有2个答案

谷梁襦宗
2023-03-14

不可能把C、A、P都放在一起,这是定理,你不可能全部都有,你只能拿两个。

见:

Mongodb在CAP定理中的位置是什么?

庾远航
2023-03-14

事实上,答案分为两部分:

>

  • 分片级别:每个数据段只有一个权威分片(C),分片独立工作(p),如果分片不可用,其数据也不可用(a)

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

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

  •  类似资料:
    • 这里的高可用分为两类,客户端集群和服务端集群。都是采用冷备模式,因为对于 binlog 数据消费来说,并行处理将会带来数据顺序错乱的问题,当然你可以通过一些复杂的机制去实现,这里不做说明。集群部署需要 Zookeeper。 服务端集群 在 conf/canal.properties 文件中修改 zookeeper 地址 canal.zkServers=127.0.0.1:2181 集群中每个实例

    • 主节点选举 主节点选举指的是在一个复制集中,当主节点发生异常或宕机后,集群中其他节点会选举出一个新的主节点,从而保障集群继续可用,这也是 MongoDB 复制集高可用主要保障机制。 通常选举的流程如下: 第一个发现主节点失败的从节点会发起选举,它会通知其他节点选举开始,并且选举它自己为主节点 第一个发现主节点失败的从节点如果顺利被选举为主节点,则选举结束 第一个发现主节点失败的从节点如果没有被选举

    • 主要内容:1.难题与方案,2.具体措施,3.九种技术架构1.难题与方案 1、亿级流量电商网站的商品详情页系统架构 面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最新模板生效的商品详情页系统的架构是如何设计的? 解决方案:异步多级缓存架构+nginx本地化缓存+动态模板渲染的架构 2、redis企业级集群架构 面临难题:如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据+企业级数

    • 主要内容:1.系统拆分,2.解耦,3.异步,4.重试,5.补偿,6.备份,7.多活策略,8.隔离,9.限流,10.熔断,11.降级1.系统拆分 微服务架构,将一个复杂的业务域按DDD的思想拆分成若干子系统,每个子系统负责专属的业务功能,做好垂直化建设,各个子系统之间做好边界隔离,降低风险蔓延。 2.解耦 高内聚、低耦合。小到接口抽象、MVC 分层,大到 SOLID 原则、23种设计模式。核心都是降低不同模块间的耦合度,避免一处错误改动影响到整个系统。 就以开闭原则为例,对扩展是开放的,对修改是关

    • 我在Java8和Tomcat8上实现了高可用性的CAS5,用haproxy作为负载均衡器,redis作为票证注册中心。对于票证注册表,请遵循此处给出的详细信息。关于部署,CAS部署在两个tomcats上,即T1和T2。 如果我没有关闭登录的实例,那么就没有问题,可以注销,票证被成功销毁。 我试过两种方法。 使用tomcat会话复制。已将添加到CAS中,并在中添加未注释的. 没有会话复制。

    • 问题内容: 我正在编写一种算法,它将通过Java中所有可用的Mongo数据库。 在Windows Shell上,我只是做 如何在Java中执行此操作并获取所有可用数据库的列表? 问题答案: 您将这样做: 这只会为您提供所有可用数据库名称的列表。 您可以在此处查看文档。 更新: 就像下面提到的@CydrickT一样,它已被弃用,因此我们需要切换到: