2

私はゲームサーバーの開発者です。私は自分のゲーム サーバー (SmartfoxServer 2x) に hazelcast を使用して、リクエスト データベースを直接回避しています。しかし、hazelcast を使用して最高のパフォーマンスを得るにはどうすればよいのでしょうか。

  1. キャッシュにアクセスしてからシャットダウンするときは、常に新しい hazelcast クライアント インスタンスを作成します。または
  2. hazelcast クライアント インスタンス プールを作成し、再利用します。アプリケーションが終了するまでシャットダウンしないでください。または
  3. hazelcast クライアント インスタンスを 1 つだけ作成し、アプリケーションが終了するまでシャットダウンしません。または
  4. リアルタイム サーバーを hazelcast メンバーとして作成します。

正しい方法は何ですか?私のシステムは約 5000 CCU で機能します。

私のゲームはカードゲームの一種で、ターンベースです。各ゲームは約 2 分間で発生し、最大 4 人のプレイヤーが参加します。終了したら、すべてのトランザクション (お金の変更) とユーザーの新しいお金の価値を記録する必要があります。5000 ccu の場合、最悪の場合、同時に (5000/4) * (4 + 4) = 10000 エントリをログに記録する必要があります。mysql クエリを直接 (遅い) では実行できませんが、hazelcast を使用すると可能ですよね? しかし、私は Hazelcast テクニックの初心者なので、問題を解決する正しい方法がわかりません。

少し早いですがお礼を、

4

1 に答える 1

5

最良の答えは 3 か 4 です。ゲーム業界で働いていたとき、Hazelcast をキャッシュとしてではなく、ゲームサーバー自体の分散/クラスター化に使用していました。したがって、私のゲームサーバー自体はクラスターの一部でした。専用の db-cache クラスターでクライアントを 1 つだけ使用する場合は、それをゲームサーバーと一緒に起動し、ゲームサーバー自体が稼働している間は稼働させます。これは内部でプールされ、クライアントはほとんどすべての場合に要求を正しいクラスター ノードにルーティングするのに十分なほどスマートです。キャッシュ以外にも使用したい場合は、ゲームサーバーをクラスター自体のノードにすることをお勧めします。すべてのノードがデータの一部を保持していることに注意してください。これは、ゲームサーバーが db キャッシュとして機能することを望んでいない場合があります。

于 2014-07-24T08:32:27.680 に答える