mongodb - 分片的 Mongo 数据库可以在 Windows 和 Linux 之间拆分(mongos 和 mongod)吗?

标签 mongodb

作为概念验证类项目,我设置了一个分片 MongoDB,只有两个分片和三个运行 mongos 实例的服务器。所有这些都在它们自己的 Windows 服务器上,但我想尝试在 Linux 系统上运行集群,因为我看到一些奇怪的行为,我认为可能与以下事实有关系统都在企业 ESX 服务器上的 VM 上运行。另外,我只是好奇。

在阅读尽可能多的文档后,我发现将查询分派(dispatch)到适当分片的“mongos”实例是轻量级的,通常可以在应用程序服务器或具有 mongod 实例的系统上运行(documentation ).

我的问题是,是否可以配置 MongoDB,使 mongos 实例在 Windows 服务器上运行,而 mongod 实例(分片) 在 Linux 系统上运行? mongos 实例是否仍然能够向分片发送查询?

这对我的情况有利的一个原因是我的应用程序是一个 .Net Web API,我想在 IIS 中托管它,因此它必须在 Windows 上运行。在 Linux 上运行分片的好处(这可能是一个错误的假设)是 Linux 系统比 Windows 服务器需要更少的开销,这意味着如果它在云提供商的 VM 上运行它会更便宜。

最佳答案

没有理由认为这不起作用。

MongoDB 集群通过网络进行通信。他们甚至不知道集群或副本集的其他成员运行的操作系统。但请记住,异构架构存在相当多的维护问题:

  • 数据库的所有成员必须具有相同的版本才能正常协同工作。这意味着您需要同时更新所有内容。不同的操作系统为此增加了不必要的复杂性。
  • MongoDB 进程在不同平台上运行时可能具有不同的性能特征。这使得负载平衡变得更加困难(但也开辟了新的可能性)
  • 关于 serverfault.com 的其他许多原因可以比我们解释得更好。

顺便说一句,虚拟化重型数据库服务器通常不是一个好主意。磁盘 IO 成为瓶颈的任何应用程序在裸机上运行得更好(根据系统管理员的说法,您会在 serverfault 上找到它,而不是在 stackoverflow 上找到)。

关于mongodb - 分片的 Mongo 数据库可以在 Windows 和 Linux 之间拆分(mongos 和 mongod)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637051/

相关文章:

javascript - 使用 mongodb 和 mongoose 更改 Node js 应用程序中搜索查询的输出/投影格式

mongodb - 如何将 $arrayToObject 应用于 mongodb 聚合中 $push 输出的数组

node.js - Express:保持所有 DRY 创建 mongoose 连接模块(使用新的 createConnection 方法)

javascript - 使用 Javascript 扫描 Mongo 数据库并在字符串不相同时触发事件

javascript - 如果使用特殊字符存储值,则使用 $regex 的 Mongoose 查找不会返回预期结果

php - 如何将 Amazon MWS 响应中的 UTF-8 转义字符串转换为正确的 UTF-8?

node.js - Mongoose方法返回id

mongodb - Twitter 数据 - 在 MongoDB 中查找提及次数最多的用户

node.js - 查询 MongoDb 以从引用 id 数组的集合中获取计数

mongodb - 给定 ID,查找 dueAt 小于 ID.dueAt 的条目