MongoDB:replicaSet:零停机时间

时间:2014-05-12 20:17:52

标签: mongodb pymongo

我有3个节点的复制品。代码通过pymongo连接到当前主服务器。如果当前主站发生故障,则需要大约两秒钟才能获得新主站。 我该怎么做才能将停机时间减少到零?

提前致谢

2 个答案:

答案 0 :(得分:1)

你需要做两件事。

  1. 允许从属读取。在我们的Java应用程序中,我们通过PRIMARY_PREFERRED将其作为ReadPreference。这样您的申请就可以在选举期间继续阅读。

  2. 您的持久层需要某种事务队列,以便在replset选择新的PRIMARY时的过渡期间写回。我已经看到了围绕Akka框架的建议,其中实际持久化的Actor在请求的内存队列中保持自己的。在过渡期间,队列在Actor等待replset返回读/写时建立。

  3. 请求的内存队列中的""这对我来说已经足够了,我还没有触发并实际实现了这一点。

答案 1 :(得分:0)

只要没有人击败CAP,就无法完全可用,因为分区容差是分布式系统的前提条件,而且MongoDB是一致的。通过允许来自辅助节点的读取,您可以稍微削弱一致性并将其换成(读取)可用性。

如果你的主要目标是可用性,那么MongoDB是错误的选择。