2016-11-29 18 views
0

node-jsとmongoDBでドッカーを使用してゲームを作成し、自分のゲームセクション(戦闘、チャット、リソースなど)をすべて別のサーバーに設定しました。たとえば、自分のリソースサーバーは毎秒各ユーザーのリソースのすべての計算を行い、他のサーバーからの要求を処理します。たとえば、ユーザーが建物を構築するのに十分なリソースを所有しているか、攻撃された場合にプレイヤーが負う多くのリソースmongoDB複数のインスタンスまたは複数のデータベース

私のアルファ版とベータ版では、私のゲームのすべてのセクションを実行する1つのサーバーを実行する予定ですが、セクションには独自のmongodbインスタンスがあるので、resourcesDB、mainDB(ユーザー情報、ログイン情報、およびすべてのインスタンスには多くのコレクションがありません。たとえば、resourcesDBには2つのコレクションのみがあり、リソースコレクションにはリソースに関連するものが1つあり、ログコレクションにはすべてのユーザーの使用が格納されます(ビルドアップグレード、紛失など)

私は同じサーバー上で複数のインスタンスについて読んだことがあります。それらはすべて、自分のパフォーマンスに影響を与えるように、それを行う最良の方法ではない、と私は計画しています別々のすべてのセクションを別のサーバーに分けて、必要に応じて各セクションに独自のサーバーとDBサーバーを持たせることができます。

  1. 1つのインスタンスを作成し、それをデータベースレベルで分離する必要がありますか?これは、複数のサーバーから同じインスタンスに接続する必要があることを意味します。リソースサーバーはすべてのユーザーのリソースを1秒ごとに更新し、DB内の軍隊の状態を更新するバトルサーバーと組み合わせます。私はプライベートメッセージやチャットメッセージで更新するチャットデータベースも持っていますが、問題が起きますか?または、単一のデータベースに接続してコレクションレベルで分離する場合にのみ問題が発生します。

  2. 複数のインスタンスを作成し続けるべき理由はありますか?私は、同じサーバー上で複数のインスタンスを使用している場合、設定ファイルに問題があるかもしれないと読んでいますが、ドッカーがその部分を処理すると仮定します。

UPDATE - 私はここで素晴らしい答えを発見した:アプリのmicroserviceアーキテクチャを使用https://dba.stackexchange.com/questions/156811/mongodb-in-micro-services-structure/156984#156984

答えて

2

は良いアイデアですが、私は、データベースを分離するために十分な理由が表示されません。 MongoDBはあなたのためにそれを扱うことができます(Sharding)。また、MongoDBはコレクションBへの書き込み時にコレクションAへの書き込みをブロックしません。アプリケーションを複数のデータベースに分けると、バックアップやアプリケーションの維持が難しくなります。

MongoDBの並行処理オプションについてはこちらから、MongoDBがコレクションレベルのロックを処理する方法を参照してください。 https://docs.mongodb.com/manual/faq/concurrency/

関連する問題