11. 10
■ MUNによる10万人大規模サービスの構成
MUNサーバで「同時接続者数10万」を実現するには
・MUNは原則として、以下の用途におけるネットワークゲームに適しています。
a) オンライン対戦型のターン制カードゲーム、パズルゲームなど
b) MO(中小規模の、参加人数限定型マルチプレイヤーオンラインゲーム)
c) MOBA(参加人数限定型の戦略対戦型オンラインゲーム)
・1つの MUN サーバセットあたりで、同時接続、およびルーム内各種メッセージを捌けるのは
おおよそ3万人程度です(弊社調べ:1ルームあたり、秒間平均200メッセージの送受信を想定)。
・10万人規模の同時接続者数を捌くためには、MUNサーバの横展開(スケール)が必要になりますが、MUN の
サーバセットは密結合のサーバプロセスで構成されているため、スケールする場合、このサーバセットを1組として
複数のサーバセットを並列配置することになります。
・サーバセットをスケールすることにより、実質的に無限数のMUN クライアントに対し、同時接続処理を捌けます。
・次ページで、具体的なサーバ構成例を示します。
MUN
Room
MUN
Proxy
mun_proxy ・・・mun_resolver
MUN
Master
mun_master
MUN
Resolver
mun_proxy mun_room ・・・mun_room
「MUN サーバセット」のこの1組を単位として、
複数サーバセットを並列配置する
12. 11
■ MUNによる10万人大規模サービスの構成
複数の MUN サーバセットによる 10万人同時接続の実現(概略)
・複数の MUN サーバセットによる、 10万人同時接続を実現するためのサーバ構成例として、以下に示します。
・1つの MUN サーバセットに対して同時に捌くことのできるクライアント数は3万クライアントまでですが、若干
余裕を持たせて、サーバセットを5セット程度用意します。
・どの MUN サーバセットに接続するかを管理し、クライアントを誘引するための、Webサーバを複数台用意します。
Global Section
MUN Server
Machine
MUN Server
Process
Internet
MUN
Client
MUN
Client
・・・
MUN Client
Machine
MUN Client
Process
Web Server
mrs_pusherdatabase
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Client
MUN
Resolver
mun_resolver
MUN
Master
mun_master
MUN
Proxy
・・・
mun_proxy mun_room
MUN
Room
・・・
・・・
mun_proxy mun_room ・・・
MUN
Resolver
mun_resolver
MUN
Master
mun_master
MUN
Proxy
・・・
mun_proxy mun_room
mun_proxy mun_room ・・・
MUN
Room
Private Section
MUN Server Set 1 MUN Server Set 2
・・・
13. 12
■ MUNによる10万人大規模サービスの構成
複数の MUN サーバセットによる 10万人同時接続の実現(詳細)
・Webサーバでは、複数の MUN サーバセット内に含まれる mun_resolver のクライアント接続アドレス情報を
事前にデータベース情報として、複数台で同一の内容を保持します。
かつ、MUNクライアントは mun_resolver に接続する前にこの Web サーバに接続し、MUN サーバセットのうち
「最も既存クライアントの接続数の少ない」 mun_resolver のアドレス情報を mrs_pusher で返します。
※ MUN では MRS が内包されていますので、MRSでの情報のやり取りも可能です。
・MUN サーバセットでは、MO/MOBAをはじめとする、中小規模の人数が参加するゲームルームを設置し、そこで
ルーム内プレイヤー同士で、RPCによるデータの送受信、キャラクタなどのオブジェクト位置情報の同期などを
行います。
MUN Resolver に接続するためのアドレス情報を退避したデータベースを持つWebサーバ。
MUNクライアントとのやり取りのためにmrs_pusherを利用し、かつ最もクライアント接続数が
少ない、MUNサーバセットへの誘導を行なう
Web Server
mrs_pusherdatabase
MUN サーバセット自体は通常の MUN サーバとして運用する
サーバのスケールアウトは、原則このサーバセットを1単位として、全体をスケールする形をとる
接続するクライアントは、適宜必要に応じたルームに入室させ、
その中に所属するプレイヤー同士で、メッセージのやり取り、キャラクタの位置情報の同期、
各種パラメータの共有などを行なう。
比較的セキュリティ性を求められない通信対戦/MOであればクライアントベースで開発し、
セキュリティ性の高い通信対戦/MOや、複雑なロジックを必要とするMOBAなどであれば
サーバサイドでのプログラムを実装し、なるべく保守性・安定性に優れたシステムを構築する