MongoDB - 如何让Replica set真正无缝下台

时间:2014-10-07 13:48:27

标签: node.js mongodb connection failover replicaset

问题是 - 当您的应用程序运行时强制您的副本集停止时,所有主流Mongo客户端将为每个连接抛出至少一个例外。发生这种情况是因为他们的数据库连接硬连线到以前是主服务器的物理服务器,并且不再接受查询。因此,虽然MongoDB架构师可能认为StepDown进程不会产生任何停机时间,但实际上如果您根据文档处理连接,每次降低都会导致至少一个用户完全崩溃,甚至可能创建数据完整性问题。我希望,这可以通过一个简单的包装器来避免,该包装器捕获一些特定的Mongo异常并通过自动重新连接到副本集来处理它们,并重新运行失败的查询。如果您已经有解决方案,请分享!我对与Node.JS的任何主要Mongo驱动程序一起使用的解决方案特别感兴趣。

1 个答案:

答案 0 :(得分:0)

你是对的 - 这是我对主流ODM以及Node.js的官方本机MongoDB驱动程序所经历的确切行为。

副本集步骤将导致我的未完成查询失败,“无法在初始种子列表中找到任何有效的服务器”,“套接字已关闭”和“ECONNRESET”,否则即使{{1正确配置。

因此,我开发Monkster为使用流行的Monk ODM的Node.js开发人员提供MongoDB集群的无缝副本集降级和整体高可用性。

  

Monkster是一个Node.js包,为明智的MongoDB API提供高可用性。它实现了智能错误处理和重试逻辑,以无缝地处理临时网络连接问题和副本集降序。

https://www.npmjs.com/package/monkster