2016-07-15 20 views
0

現在、2つのデータベース(MONGODB)を使用するマルチプレイヤーゲームに取り組んでいます。 1つは認証(ログイン)用で、もう1つはすべてのゲーム固有のデータを格納するためのものです。 私がやったことは、ユーザーとゲーム固有のデータを分離することです。このようにして、私は将来、ユーザーの周りにマイクロサービスを構築することができます。複数のデータベース管理

私は、ゲーム固有のデータベース操作を処理/検証する方法について少し不確実です。 私のゲームにログインすると、残りのAPIにPOSTリクエストが実行され、ユーザーを検証してデータを返します。

しかし、ゲーム自体は、リアルタイムのゲームプレイを処理するためにTCPソケット接続を使用しており、権限のあるサーバー上のデータベースにゲーム固有のデータを保存します(すべてのゲームロジックはサーバー上で実行されます)。ゲーム固有のデータベースのデータを、認証データベースにある特定のユーザーにリンクさせるにはどうしたらよいですか?

+0

ユーザーはIDを持っていますか?そのため、ユーザーIDを保管してください。 –

+0

私は、クライアントがIDを改ざんすることができるか、間違っているのではないことを意味するクライアント経由で送信しない限り、ゲーム固有のデータベースから認証DBにあるIDにアクセスできません。 – JSjuniorlad

+0

改ざんのない形式で保存します。ブラウザーの暗号化されたCookieと同じです。認証サーバーは認証データを生成し、それをゲームサーバーの公開キーで暗号化してクライアントに返します。クライアントは、各要求とともにこの不透明な値を送信します。ゲームサーバーは秘密鍵でそれを解読し、ユーザーIDを取得します。あるいは、速度に関しては、ここで対称暗号を使用することもできます。 –

答えて

0

理論的には、データを共有しないで、一意の識別子(主キー)のみを共有することをお勧めします。

実際には、この方法でデータを分割しないでください。ユーザーの一部がゲームに属し、他の部分が異なるゲームで共有される可能性があります。私はそれがあなたが2つを分けた理由だと仮定しています。

Bounded ContextsのDDD原則と、このように別々のサービスを作成する方法と作成する方法を見てみましょう。つまり、有界コンテキストを適切な方法で定義することは、SOAやマイクロサービスで最も難しいことです。

+0

さて、はい、いいえ。私は、モバイルアプリケーションでユーザプロファイル、オーセンティケータ(2ステップ検証)などを実装できるようにユーザ/ゲームを分割しています。ユーザープロファイルは、複数のゲームやマイクロサービスで共有する必要があります。 お返事ありがとうございます。 – JSjuniorlad

関連する問題