クラスタ分割
Photonクラスタの定義
Photonクラスタはマスターサーバーと、そのマスターサーバーに登録されたゲームサーバーの組み合わせです。
単一のクラスタで、同時に50,000CCUまで対応可能です。
これ以上のCCU数の場合には、分割と新たなクラスタが必要になります。
Photon ネームサーバーは、クラスタ間でプレイヤーを自動的にロードバランシングします。
クラスタでの作業
ネームサーバーで呼ばれた「GetRegion」オペレーションへのレスポンスは、リージョン間で利用可能なすべてのクラスタのリストを返します。
返される結果は、特別な形式の文字列の配列です:「{region}/{cluster}」
各円鳥にはリージョン部分とクラスタ部分があり、これらは「/」で区切られています。
例:
リージョン「EU」で稼動する、2つのマスターサーバーは以下のように返されます:
- "EU/Default"
- "EU/Cluster2"
「Authenticate」オペレーションを呼ぶ際、クラスタの選択にはリクエストパラメータ「Region」(バイトコード 210)を使用しますが、クラスタには3つのオプションがあります。
デフォルトのクラスタ
リージョンのみを指定すると、常にデフォルトの「最初」のクラスタがルーティングされます。
これは、最新のクライアントSDKでのデフォルトの挙動です。
デフォルトの状態では、他の2つのオプションはサポートされていません。
誤った形式の文字列や、存在しないリージョン/クラスタの組み合わせを指定すると認証は失敗し、エラーコード「InvalidRegion」(バイトコード 32756)が返されます。
例:
- 「EU」 -> 常に「EU/Default」にルーティングされます。
特定のクラスタ
リージョンおよびクラスタを明示的に渡して、上記の形式に従うことも可能です:
「{region}/{cluster}」
この場合、任意の特定のリージョンの特定のクラスタに接続されます。
誤った形式の文字列や、存在しないリージョン/クラスタの組み合わせを指定すると認証は失敗し、エラーコード「InvalidRegion」(バイトコード 32756)が返されます。
例:
- "EU/Default" -> 「EU/Default」にルーティングされます。
- "EU/Cluster2" -> 「EU/Cluster2」にルーティングされます。
ランダムなクラスタ
これは2番目のオプションに類似していますが、明示的にクラスタを選択する代わりに、サーバーがランダムにクラスタを選択します。
これを実行するにはワイルドカードを設定するか、またはアスタリスク('*')をクラスタとして設定します。
誤った形式の文字列や、存在しないリージョン/クラスタの組み合わせを指定すると認証は失敗し、エラーコード「InvalidRegion」(バイトコード 32756)が返されます。
「Authenticate」オペレーションのレスポンスには、「クラスタ」と呼ばれるパラメータの値(バイトコードは196)が含まれます。
この値は、どのクラスタにルーティングされたかを示します。
たとえば、この情報を他のクライアント(例:フレンド)に伝えれば、他のクライアントはマッチングの際にあなたを見つけて参加できるようになります。
例:
- "EU/*" -> ランダムに「EU/Default」または「EU/Cluster2」にルーティングされます。
考慮すべき事項
クラスタは物理的または論理的にエンティティを区別するため、以下の点を考慮する必要があります:
- アプリケーションとロビーの統計は、クラスタごとにマスターサーバーによって計算されます。
- デフォルトでは、Photonリージョンには単一のクラスタがあります。
ただし、非常に多くのCCUが発生している場合には、クラスタ分割は必須となります。
複数のクラスタを持つ単一リージョンについての概要を把握するには、そのリージョンのすべてのクラスタでのリージョン統計を集計する必要があります。 - 同じクラスタに接続したプレイヤー間でのみ、やりとりができます。
同じリージョンのプレイヤー同士がプレイできるようにするには、クラスタ情報を送信する必要があります。また、別のクライアントに切り替える必要が生じる場合もあります。