【问题标题】:mongoDB multiple instances or multiple databasesmongoDB多实例或多数据库
【发布时间】:2017-04-13 05:59:54
【问题描述】:

我选择使用带有 node-js 和 mongoDB 的 docker 来制作游戏,并将我的所有游戏部分(战斗、聊天、资源等)设置到不同的服务器中,这样每个部分都会有自己的进程,例如我的资源服务器将运行很多,因为它将每秒计算每个用户的资源,并将处理来自其他服务器的请求,例如用户是否有足够的资源来建造建筑物或玩家将失去多少资源如果被攻击等。

对于我的 alpha 和 beta 版本,我计划运行一个服务器,它将运行我游戏的所有部分,但我现在这样做的方式是,每个部分都有自己的 mongodb 实例,所以我有resourcesDB, mainDB (users info, login info and stuff), 所有实例都不会有很多集合,例如resourcesDB只有2个集合,资源集合,每个用户将有1个与资源相关的文档和日志集合这将存储所有用户的使用情况(建筑升级、战斗失败等)

我读过关于同一服务器上的多个实例,他们都说这不是最好的方法,因为它会影响我的性能,将来我计划将我的所有部分分开到不同的服务器,所以如果需要,每个部分都有自己的服务器和数据库服务器。

  1. 我是否应该构建 1 个实例并在数据库级别将其分开?这意味着我将不得不从多个服务器连接到同一个实例,资源服务器将每秒更新所有用户的资源计数,将其与将更新数据库中部队状态的战斗服务器结合起来,为每场战争进行更多开,我还会有聊天数据库,它会随着每条私人消息或聊天消息而更新,这会导致任何问题吗?还是只有当我连接到单个数据库并在集合级别将其分开时才会导致问题?

  2. 我是否有理由不继续创建多个实例?我读到如果在同一台服务器上使用多个实例,配置文件可能会出现问题,但我假设 docker 会处理该部分。

更新 - 我在这里找到了一个很好的答案:https://dba.stackexchange.com/questions/156811/mongodb-in-micro-services-structure/156984#156984

【问题讨论】:

    标签: node.js mongodb docker docker-compose


    【解决方案1】:

    为您的应用使用微服务架构是个好主意,但我认为没有充分的理由分离数据库。 MongoDB 可以为您处理(分片)。此外,当您写入集合 B 时,MongoDB 不会阻止写入集合 A。如果您将应用程序分离到多个数据库,则很难进行备份和维护应用程序。

    您可以在此处阅读有关 MongoDB 的并发选项并了解 MongoDB 如何处理集合级别锁定。 https://docs.mongodb.com/manual/faq/concurrency/

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多