Node.js 哪个MongoDB扩展策略(分片、复制)适合并发连接?

Node.js 哪个MongoDB扩展策略(分片、复制)适合并发连接?,node.js,mongodb,devops,Node.js,Mongodb,Devops,考虑这样一个场景: 我有多个devclouds(开发人员的远程工作区),它们都是在同一个裸机服务器上运行的虚拟机 过去,他们使用自己的MongoDB容器在Docker上运行。因此,MongoDB容器的数量可以在整个devclouds中添加多达50多个实例 问题很明显,虽然50个实例同时运行,但实际上只有5个人对自己的实例执行读/写操作。因此,其他45个正在运行的实例浪费了服务器的资源 我是否应该通过为每个人组合一组MongoDB实例来只使用一个MongoDB集群,这样他们就可以只连接到一

考虑这样一个场景:

  • 我有多个devclouds(开发人员的远程工作区),它们都是在同一个裸机服务器上运行的虚拟机

  • 过去,他们使用自己的MongoDB容器在Docker上运行。因此,MongoDB容器的数量可以在整个devclouds中添加多达50多个实例

问题很明显,虽然50个实例同时运行,但实际上只有5个人对自己的实例执行读/写操作。因此,其他45个正在运行的实例浪费了服务器的资源

我是否应该通过为每个人组合一组MongoDB实例来只使用一个MongoDB集群,这样他们就可以只连接到一个端点(通过内部网络),以避免浪费资源

我正在考虑分片策略,但问题是如果一个节点关闭(一个VM关闭),可用性(冗余)是否可以


我对切分和复制非常陌生,希望了解您的解决方案。谢谢

如果每个开发人员都希望完全控制他们的数据库部署,则不能合并部署。否则,一个开发人员可以删除部署中的所有数据,等等


如果每个开发人员都希望访问一个数据库,则可以部署一个副本集为所有开发人员服务,并为每个开发人员分配一个数据库(通过身份验证)


MongoDB意义上的分片(分片集群)在这种情况下并没有真正的帮助,因为应用程序通常使用所有的分片。当然,您可以通过设置多个副本集来“手动分片”。

您将始终需要复制,否则单节点故障将使服务不可用。副本集为您提供冗余和故障转移。只有当您想要处理庞大的数据集时,才需要切分。在您的场景中(50个不相关的客户端不共享数据),您可以使用多个独立(非分片)集群(每个集群都是一个副本集),所有这些都会带来一些操作开销。例如,您可能需要也可能不需要设置适当的访问控制,以避免客户端相互踩踏。这也使得独立扩展它们变得更加困难。你确定那些空闲的Mongo实例是资源密集型的吗?您可能还为这些服务中的每一个提供了其他空闲容器。