マルチプレーゲームサーバーのオートスケーリング
マルチプレイゲームサーバーのスケーリングの困難さ
数万人規模のプレイヤーにサービスを提供するときには、大量のゲームサーバーが必要になります。
マルチプレイヤーゲームの場合、ゲームサーバーに直接つなぐためのクライアントを要求します。
この時マルチプレイヤーゲームは予期したプレイヤーと遊ぶために、正しいサーバーにクライアントをルーティングしてあげる必要があります。
これは、全てのマルチプレイヤーゲームサーバーを制御下におき、全てのサーバーの大量のプレイヤーが入らないように管理する必要があります。
多くのマルチプレイヤーゲームは、プレイヤーを正しいサーバーにルーティングし、”正しい”プレイヤーと遊ばせるために、マッチメイキングシステムを使用しています。
ただ、マッチメイキングシステムを使用しても、問題は残ります。
その問題とは、マッチメイキングシステムは使用可能な全てのサーバーと、そのパブリックエンドポイントシステムを必要とするために、全てのマルチプレイヤーゲームサーバーは管理し続けなければいけないということです。
マルチプレイヤーゲームサーバーの管理システムは障害点であってはなりません。この時何を使用すればいいのでしょうか?
RDBMSを使用しますか?そのときには、RDBに障害が起きた時、マッチメイキングシステムはダウンします。ではどのように、マルチプレイヤーゲームサーバーを単一障害点とせずに、独立したものとして構築できるのでしょうか?
KubernetesとDiarkis
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
Kubernetesはコンテナ化された様々なサーバーにオートスケーリングを可能とします。これは、Kubernetes内で実行されているサーバー数を自由に変更できることを意味しています。
Diarkisはオートスケール対応のマルチプレイヤーゲームエンジンです。DiarkisはKubernetes nativeで動作し、クラスターのオートスケーリングに対応するように設計されています。
Diarkisは自動的に、ゲームクライアントを適切なサーバーにルーティングするので、使用する際には、プレイヤーのルーティングを気にしないでよくなります。
Diarkisを使用した際には、中央集権型のマネジメントシステムも不必要になります。
Diakirsはゲームサーバーのクラスタであり、完全に分散された設計になっています。しかし、Diarkisのゲームサーバーは相互に通信を行い、協調して動作します。
なので、Diarkisには単一障害点は存在しません。
DiarkisをKubernetesクラスタにデプロイすれば、マルチプレイヤーゲームは、自動的にマネジメントされ、オートスケールし、分散され、単一障害点がなくなるという恩恵が受けられます。
そしてゲームのプレイヤーはDiarkisサーバーに接続し、マルチプレイヤーゲームを楽しむことができます。
関連記事