node.js - 哪种MongoDB扩展策略(Sharding、Replication)适合并发连接?
问题描述
考虑场景
我有多个 devcloud(开发人员的远程工作场所),它们都是运行在同一裸机服务器上的虚拟机。
过去,他们使用自己在 Docker 上运行的 MongoDB 容器。因此,该数量的 MongoDB 容器可以在 devclouds 中添加多达 50 多个实例。
问题变得很明显,虽然有 50 个实例同时运行,但实际上只有 5 个人对自己的实例执行读/写操作。所以其他 45 个正在运行的实例浪费了服务器的资源。
我是否应该通过组合一组 MongoDB 实例来仅使用一个 MongoDB 集群,以便每个人都可以仅连接到 1 个端点(通过内部网络)以避免浪费资源。
我正在考虑分片策略,但问题是如果一个节点被关闭(一个虚拟机关闭),那么可用性(冗余)是否可以?
我对分片和复制很陌生,期待了解您的解决方案。谢谢
解决方案
如果每个开发人员都希望完全控制他们的数据库部署,那么您就不能合并这些部署。否则,一名开发人员可以删除部署中的所有数据,等等。
如果每个开发人员都希望能够访问一个数据库,您可以部署一个服务于所有开发人员的副本集,并为每个开发人员分配一个数据库(通过身份验证)。
Sharding in MongoDB sense (a sharded cluster) is not really going to help in this scenario since an application generally uses all of the shards. You can of course "shard manually" by setting up multiple replica sets.
推荐阅读
- javascript - 从 url 源打印 docx 文件
- c# - 如何在 CollectionView 中使用 FindByName
- angular - 为什么输入没有从 FormArray 显示
- python - 改变 JSON 序列化对象的形状 Django REST 框架
- flutter - 未读消息总数
- tensorflow - 删除 TensorFlow 扩展中的停用词
- python - NumPy 渐变在图像上的工作方式不同吗?
- c# - 如何为 EF Core 中的单个查询设置命令超时?
- javascript - 如何避免 Reactjs 中的输入值重置?
- laravel - 调用未定义的函数 factory()