mongoDB多个实例或多个数据库

我select了使用node-js和mongoDB的docker制作游戏,并将所有游戏部分(战斗,聊天,资源等)设置到不同的服务器上,因此每个部分都有自己的进程,例如我的资源服务器将会运行很多,因为它会每秒钟完成每个用户的资源计算,并处理来自其他服务器的请求,例如用户有足够的资源build造一个build筑,或者如果受到攻击等,玩家将失去多less资源。 。

对于我的alpha和beta版本,我计划运行一个服务器,这将运行我的游戏的所有部分,但我现在这样做,每个部分都有自己的mongodb实例,所以我有resourcesDB,mainDB (用户信息,login信息和东西),所有的实例将不会有很多集合,例如resourcesDB只有2个集合,资源集合,每个用户将有1个与资源相关的东西的文档,以及将存储所有用户的使用(build筑升级,战斗失败等)

我已经在同一台服务器上了解了多个实例,他们都说这不是最好的方法,因为它会影响我的性能,将来我会把所有的部分分成不同的服务器所以如果需要的话每个部分都会有自己的服务器和数据库服务器

  1. 我应该可以构build1个实例并将其在数据库级别分开吗? 这意味着我将不得不从多个服务器连接到相同的实例,资源服务器将每秒更新所有用户的资源数量,并将其与战争服务器结合起来,以更新DB中的部队状态以及更多的战争上,我也将有聊天数据库,将与每个私人消息或聊天消息更新,会导致任何问题? 或者只有当我连接到单个数据库并在集合级别上分离它时,才会导致问题?

  2. 是否有一个原因,我不应该继续创build多个实例? 我读过,如果在同一台服务器上使用多个实例,configuration文件可能有问题,但我认为docker处理该部分。

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

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

您可以在这里阅读关于MongoDB的并发选项,并了解MongoDB如何处理集合级别locking。 https://docs.mongodb.com/manual/faq/concurrency/