JP2017113375A - 情報処理システム、及び情報処理プログラム - Google Patents

情報処理システム、及び情報処理プログラム Download PDF

Info

Publication number
JP2017113375A
JP2017113375A JP2015253621A JP2015253621A JP2017113375A JP 2017113375 A JP2017113375 A JP 2017113375A JP 2015253621 A JP2015253621 A JP 2015253621A JP 2015253621 A JP2015253621 A JP 2015253621A JP 2017113375 A JP2017113375 A JP 2017113375A
Authority
JP
Japan
Prior art keywords
cluster
game
node
access request
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015253621A
Other languages
English (en)
Other versions
JP6713280B2 (ja
Inventor
大樹 谷口
Daiki Taniguchi
大樹 谷口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Akatsuki Inc
Original Assignee
Akatsuki Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Akatsuki Inc filed Critical Akatsuki Inc
Priority to JP2015253621A priority Critical patent/JP6713280B2/ja
Publication of JP2017113375A publication Critical patent/JP2017113375A/ja
Application granted granted Critical
Publication of JP6713280B2 publication Critical patent/JP6713280B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】柔軟なオートスケーリングを行う情報処理システムを提供する。【解決手段】複数のユーザ端末15a〜15cからのアクセスが可能であり、前記アクセスのあった複数のユーザ端末によるリアルタイムマルチプレイゲームを制御する情報処理システム11であって、Lobbyクラスタ21a〜21c及びGameクラスタ22a〜22dを含むリアルタイムクラスタ111と、Lobbyロードバランサ及びGameロードバランサを含むロードバランサ/オートスケーリングクラスタ112と、APIサーバ23と、Cacheクラスタ26とを有し、前記APIサーバ及び前記Cacheクラスタを介したLobbyノード及びgameノード割当が実現される。【選択図】図2

Description

本発明は、広くネットワークを介してリアルタイムマルチプレイゲームを進行する情報処理システム及び情報処理プログラムに関し、より具体的には、オートスケーリング機能を有する情報処理システム及び情報処理プログラムに関する。
従来、ネットワークを介していわゆるリアルタイムマルチプレイが可能なゲームが数多く開発されてきた。その際、ネットワークを介して多くのユーザ端末からゲームサーバ(サーバ群)へのアクセスが発生するため、サーバへの負荷の監視及び負荷状況に応じたサーバ(サーバ群)のチューニングに関しても工夫がなされてきた。
また、近年、クラウドコンピューティングにおいては、仮想マシンやネットワークなどのインフラをサービスとして提供するIaaS(Infrastructure as a Service)等のサービスを介し、システムのリソース消費率が一定以上になったときに、自動でスケールアウトを行うサービスも提供されている。ここで、クラウドコンピューティングにおいて、自動でシステムの拡張/縮小を行う技術は、一般にオートスケーリングと呼ばれている。
クラウド環境におけるオートスケーリングの一例として、需要変化に応答してサーバ規模を増減させるオートスケーリング機構を実現する情報処理システム等が提案されている(特許文献1)。
すわなち、特許文献1には、複数の処理サーバを含む処理サーバ群と、前記処理サーバ群に代替して応答するための代替サーバと、前記処理サーバ群の各処理サーバにトラフィックを分散するとともに、前記処理サーバ群が過負荷状態となった際に前記代替サーバにトラフィックを転送するロードバランサと、前記ロードバランサにより前記処理サーバ群へ転送される転送量と前記代替サーバへ転送される転送量とに応じて、前記処理サーバ群の目標規模を演算する目標規模演算部と、前記処理サーバ群の現在の規模から目標規模へ増強するため前記処理サーバ群の処理サーバを準備するサーバ準備部とを含む情報処理システムが開示されている。
特開2012−208781号公報
しかしながら、現時点で広く提供されているIaaS等のサービスを利用しながらロードバランシングやオートスケーリングを効率よく行おうとすると、既存のパッケージやサービスとの相性が悪かったり、機能的な制限や限界等があったりして、システムとしての機能を十分に発揮できない場合があった。例えば、ロードバランサとプロキシとを2重運用するなどの冗長性を排除できずに運用コストが増大したり、どうしても手動による設定に頼らなければならない状況が発生したりするなどの課題があった。
また、情報処理システム及び情報処理プログラムの構成上の観点からは、一般的に、ロードバランサの監視下にプロキシサーバを配し、サーバとクライアントとの間のコネクションを確立した上で、ゲームやチャット等のアプリケーション処理を行うサーバ群(クラスタ)のバランシングが行われることが多い。かかる構成においても、プロキシサーバの下位に配されるサーバ群を自動的に増減させる制御の仕組みが求められるが、運用コストの高さや自動化技術のハードルの高さから、運用が見送られたり、手動管理を余儀なくされたりしており、更なる改善が期待されている。
そこで、本発明の一実施形態にかかる情報処理システムは、複数のユーザ端末からのアクセスが可能であり、前記アクセスのあった複数のユーザ端末によるリアルタイムマルチプレイゲームを制御する情報処理システムであって、
Lobbyクラスタ及びGameクラスタを含むリアルタイムクラスタと、
Lobbyロードバランサ及びGameロードバランサを含むロードバランサ/オートスケーリングクラスタと、
APIサーバと、
Cacheクラスタと
を有し、
(A)前記リアルタイムマルチゲームの進行時には、
前記ロードバランサ/オートスケーリングクラスタから前記リアルタイムクラスタへの負荷監視が行われるとともに、前記負荷監視結果は前記Cacheクラスタに保管及び更新され、
前記Cacheクラスタと前記APIとの間で前記負荷監視結果に基づいたデータ授受が行われ、
前記ロードバランサ/オートスケーリングクラスタから前記リアルタイムクラスタに対しては、前記負荷監視結果に基づくオートスケーリング処理が行われると共に、
(B)前記複数のユーザ端末からのアクセス要求時には、
前記アクセス要求を前記APIサーバで受け付けると共に、前記APIサーバは前記Cacheクラスタとの間でLobbyノード割当調整を実施し、
前記APIサーバは、前記Lobbyノード割当調整の結果、決定されたLobbyノードを、前記アクセス要求を行ったユーザ端末に返送し、
前記アクセス要求を行ったユーザ端末は、前記決定されたLobbyノードに基づいて前記Lobbyクラスタにおける所定のサーバにアクセスし、
前記所定のサーバは、マルチプレイのためのマッチング処理を行ってroom_idを決定すると共に当該room_idを、前記アクセス要求を行ったユーザ端末に返送し、
前記APIサーバは、前記アクセス要求を行ったユーザ端末からの要求に応じて、前記Cacheクラスタと前記アクセス要求を行ったユーザ端末が利用するためのgameノードの割当調整を実施し、
前記APIサーバは、前記gameノード割当調整の結果、決定されたgameノードを、前記アクセス要求を行ったユーザ端末に返送し、
前記アクセス要求を行ったユーザ端末は、前記決定されたLobbyノード及びgameノードに基づいて、前記リアルタイムマルチゲームを進行させる
ことにより、前記APIサーバ及び前記Cacheクラスタを介したLobbyノード及びgameノード割当が実現されることを特徴とする。
また、前記負荷監視は、socket.ioプロセスにおけるコネクション数を監視するよう制御されることを特徴とする。
また、前記オートスケーリング処理は、スケールインを行う時間間隔とスケールアウトを行う時間間隔とが異なるように制御されることを特徴とする。
本発明の一実施形態にかかる情報処理システム等によれば、ロードバランサがユーザ端末等からの直接的なコネクションを受けることによる障害等のリスクを低減し、既存の仕組みを利用しながら最小の構成で高度のロードバランシング及びオートスケーリングを実現できるという特段の効果を奏する。
本発明の一実施形態にかかる情報処理システムの全体構成例を説明する説明図である。 本発明の一実施形態にかかる情報処理システムをより詳細に説明する説明図である。 本発明の一実施形態にかかる情報処理システムにおける情報処理装置の外観構成を説明する説明図である。 本発明の一実施形態にかかる情報処理システムにおける情報処理装置の機能ブロックを説明する説明図である。 本発明の一実施形態にかかる情報処理システム等の動作例を説明する説明図である。 本発明の一実施形態にかかる情報処理システム等の動作を説明するフローチャートである。 本発明の一実施形態にかかる情報処理システム等の他の動作を説明するフローチャートである。
本発明の一実施形態にかかる情報処理システム及び情報処理プログラムについて、図面を参照しながら詳細に説明する。
図1に、本発明の一実施形態にかかる情報処理システムの全体構成例を示す。本発明の特徴的な処理動作は、主に情報処理サーバ群において実施されるが、本発明はこれに限定されるものではなく、他の情報処理サーバや情報処理装置等においても実行可能な処理ルーチンのうちの少なくとも一部が実施されることがある。以下、図1を参照して、情報処理システム全体として本発明の一実施形態を実施する場合の態様を説明する。
図1に示されるように、情報処理システム10は、その最小限の構成として、情報処理サーバ群11と、プレーヤが使用する各種情報処理装置(図において、例示的に、PC12及び13、携帯電話14、携帯情報端末ないしタブレット端末15が示されている。以下、総称して「端末」とも言うこともある)とで構成され、サーバ群及び各種端末間は、図1に示されるように専用回線やインターネット等の公衆回線(有線の回線として、16〜18)により相互に通信可能に接続されている。また、回線は有線であっても無線であってもよく、無線の場合、携帯電話14及び携帯情報端末ないしタブレット端末15は、無線で図示しない基地局や無線ルータ等を介してインターネット19に乗り入れ、更に回線18を介して情報処理サーバ群11と相互に通信可能に接続される。
なお、本願の出願時点での携帯電話や携帯情報端末ないしタブレットは、パーソナルコンピュータ(PC)に比肩する処理能力(通信処理速度や画像処理能力等)を備えているものも多く、小型のコンピュータとも言うべきものである。
また、本発明の実施に必要なプログラムないしソフトウェアは、通常、情報処理サーバ群における記憶部、さらには必要に応じてPCや携帯情報端末の記憶部におけるHDDないしSSD等にインストールないし記憶され、プログラムないしソフトウェアの実行時には、必要に応じて記憶部内のメモリにその全部又は一部のソフトウェアモジュールとして読み出され、CPUにおいて演算実行される。
なお、演算実行は必ずCPU等の中央処理部で行われる必要はなく、図示しないディジタルシグナルプロセッサ(DSP)等の補助演算装置を用いることもできる。
さらに、情報処理サーバ群11のハードウェア構成も、基本的にはPCを採用することができる。なお、本発明はこれに限定されるものではないが、情報処理サーバ群11は、必要に応じてそのハードウェアスペックを上げるにあたり、複数のPC(一例として、数十台〜数万台)を並列的に作動させることによって大規模データの処理に適した構成をとることもできる。
図2に、本発明の一実施形態にかかる情報処理サーバ群11のより詳細なシステム構成を示す。情報処理サーバ群11の動作は、以下に説明するハードウェアの個々の動作、及びソフトウェアとこれらハードウェアとの連携動作によって実現されている。
図2において、ユーザ端末15a〜15cからアクセスされる情報処理サーバ群11は、大別すると、リアルタイムクラスタ111と、ロードバランサ/オートスケーリングクラスタ112と、APIサーバ23と、Cacheクラスタ26とを有する。更に詳細には、リアルタイムクラスタ111は、Lobbyクラスタ21a〜21cとGameクラスタ22a〜22とを含み、ロードバランサ/オートスケーリングクラスタ112は、Lobbyロードバランサ24a〜24cと、Gameロードバランサ25a〜25cとを含む。
なお、「ユーザ端末15a〜15c」や「Lobbyクラスタ21a〜21c」などとアルファベットを添えて複数の構成としたのは、多数の端末やサーバ群(クラスタ)で構成されていることを意図するものであって、その数(a〜cまでの3台とか、a〜dまでの4台など)を制限するものではない。
ここで、Lobbyクラスタは、リアルタイムマルチプレイゲームを成立させるためのロビーでのユーザマッチング処理を担当するサーバ群であり、Gameクラスタは、リアルタイムゲームを進行させる上での主としてアクション部分におけるリアルタイム通信処理等を担当するサーバ群である。
また、ロードバランサ/オートスケーリングクラスタ112においては、Lobbyクラスタのロードバランシング及びオートスケーリングを担当するLobbyロードバランサ24とGameクラスタのロードバランシング及びオートスケーリングを担当するGameロードバランサとが併存し、互いに調整(プロセス監視など)を行いながら作動している。
詳細は図5等を参照して後述するが、図2におけるサーバ群11とユーザ端末15とのデータのやり取りや、クラスタ間のデータのやり取りについて、双方向又は単方向の矢印a〜e、並びに、矢印A〜Dを示しているが、それぞれの概要は下表のとおりである。
図3に、本発明の一実施形態にかかる情報処理システムにおける情報処理装置としてのタブレット端末の外観構成を示す。図3において、情報処理装置(タブレット端末)15は、筐体部151とディスプレイ152と筐体151の下部中央部に設けられたハードウェアボタン153とからなる。ディスプレイ152は典型的には液晶ディスプレイ(LCD)等で構成され、文字や静止画像や動画など様々な情報を表示することができる。また、ディスプレイ152にメニューボタンやソフトウェアキーボードを表示させ、これを指ないしタッチペン(不図示)等で触れることによりタブレット端末15への指示(コマンド)とすることができる。この点で上記ハードウェアボタン153は必須の構成要素ではないが、本発明の説明の便宜上、一定の機能を担うボタンとして実装されている。もちろん、これらハードウェアボタン153を、ディスプレイ152の一部に表示させたメニューボタンで代替させることも可能である。
また、ディスプレイ152には、マルチタッチ入力パネルが含まれており、タッチ入力パネル上でのタッチ入力位置座標が入力デバイスインタフェース(不図示)を介してタブレット端末15の処理系(CPU)へ送信され処理される。そして、このマルチタッチ入力パネルは、パネルに対する複数の接触点を同時に感知することができるよう構成されている。この検出(センサ)については様々な方法で実現することができ、必ずしも接触センサに限られず、例えば、光学式のセンサを利用してパネルに対する指示点を抽出することも可能である。さらに、センサには、接触式のセンサや光学式のセンサのほか、人の肌の接触を感知する静電容量方式のセンサを用いることも可能である。
また、図3には現れていないが、タブレット端末15は、マイクやスピーカを備えることもできる。この場合にはマイクより拾ったユーザの声などを判別して入力コマンドとすることも可能である。さらに、図3には現れていないが、タブレット端末15の背面等には、CMOS等のカメラデバイスが実装されている。
図4に、本発明の一実施形態にかかるタブレット端末15を構成するハードウェアの機能ブロック図を例示する。タブレット端末15の動作は、以下に説明するハードウェアの個々の動作、及びソフトウェアとこれらハードウェアとの連携動作によって実現されている。
図4において、ハードウェアブロック全体としてのタブレット端末400は、大別すると、図3におけるハードウェアボタン153、ディスプレイ152に設けられたマルチタッチ入力パネル、マイク等で構成される入力部401と、プログラムやデータ等を記憶するためのハードディスク、RAM及び/又はROM等で構成される記憶部402と、プログラムによって様々な数値計算や論理演算を行うCPUによって構成される中央処理部403と、ディスプレイ152等で構成される表示部404と、チップや電気系統等の制御を行うための制御部405と、インターネットにアクセスするためのスロットや光通信を行うためのポート、及び通信インタフェースから構成される通信インタフェース部406と、スピーカやバイブレーション等の出力部407と、時刻等を計時するための計時部408と、CMOS等のイメージセンサからなるセンサ部409と、装置内の各モジュールに電源を供給するための電源部410とからなり、これらのモジュールは必要に応じて適宜通信バスや給電線(図4においては、便宜上各線が適宜区分された結線411としてひとまとめに表す)によって接続されている。
なお、センサ部409には、タブレット端末400(15)の位置を特定するためのGPSセンサモジュールを含めることとしても良い。また、センサ部409を構成するCMOS等のイメージセンサによって検知された信号は、入力部401において入力情報として処理することができる。
また、本発明の実施に必要なプログラムないしソフトウェアは、通常、記憶部402を構成するハードディスクディスク等にインストールないし記憶され、プログラムないしソフトウェアの実行時には、必要に応じて記憶部402内のメモリにその全部又は一部のソフトウェアモジュールとして読み出され、CPU403において演算実行される。
なお、演算実行は必ずしもCPU等の中央処理部403で行われる必要はなく、図示しないディジタルシグナルプロセッサ(DSP)等の補助演算装置を用いることもできる。
次に、図5〜図6の動作フローないしフローチャートを用いて、本発明にかかる一実施形態における情報処理システムないし情報処理プログラムの動作を説明する。
既に述べたように、本発明の特徴的な動作は、主として情報処理サーバ群において実施可能であるとともに、少なくともその一部を情報処理装置等に実施させることもできる。
図5に、本発明の一実施形態における情報処理システムの全体動作フローの概略を示す。図5において、「ユーザ端末」は情報処理装置であり、図1におけるタブレット端末15のほか、同図のPC12、13、携帯電話14などがこれに対応し、図5における「Lobbyクラスタ」、「Gameクラスタ」、「APIサーバ」、「Cacheクラスタ」は、図1における情報処理サーバ群11がこれらに対応する。より詳細には、図5における「Lobbyクラスタ」、「Gameクラスタ」、「APIサーバ」、「Cacheクラスタ」は、図2におけるLobbyクラスタ21a〜21c、Gameクラスタ22a〜22d、APIサーバ23、Cacheクラスタ26にそれぞれ対応する(ロードバランサ24a〜24cやオートスケールサーバ25a〜25cの動作例については、図6〜図7を参照して後述する)。
また、図5中、t1〜t8は時系列の流れを示し、経時的に後述する動作や処理が行われるものである。
(時刻t1までの処理)
まず、時刻t1までの処理(図5において、不図示)を簡単に説明しておく。時刻t1までに、ユーザ(プレーヤ)は、ユーザ端末を介して情報処理サーバ群のうちのいずれかのサーバから自身のユーザ端末を本発明にかかる情報処理システムにおける情報処理装置として動作させるためのアプリケーションソフトウェアをダウンロードする。このアプリケーションソフトウェアは、本発明にかかるプログラムの少なくとも一部を処理するためのクライアントソフトウェアないしアプリケーションソフトウェアである。そして、ダウンロードしたアプリケーションソフトウェアをユーザ端末にインストールする。
なお、アプリケーションソフトウェアは、情報処理装置に予めインストールされているウェブブラウザの機能で代替することも可能であり、この場合は、アプリケーションソフトウェアのインストールが省略される場合もある。
また、ユーザ端末からは、必要に応じてユーザ登録としてユーザ自身のメールアドレスのほか、一例として、次表のようなプロフィール情報をサーバへアップロードして登録管理させることもできる。
以上のデータ項目は、ユーザデータとして情報処理サーバ群のうちのいずれかのサーバ上で保存される。そして、ユーザ(プレーヤ)が情報処理装置を操作することによりゲームを開始することができる。
ゲーム開始時には、一例として、ユーザ(プレーヤ)は、ログイン動作と、コマンド送信という2つの典型的なユーザ端末操作を行い、情報処理サーバから必要なデータ送信を受け、あるいは、サービス提供を受けることとなる。
より具体的には、ユーザが自身の情報処理装置を介してサーバへのログイン処理を行うと、情報処理サーバでは必要な認証処理が適宜行われ、ユーザがサービス提供を受けられるためのデータを送信する。例えば、端末からのコマンドを受信可能に構成されたトップメニュー画面や、アプリケーションの起動画面等である。
そして、ユーザは情報処理装置を介して何らかのコマンドを送信する。このコマンドは、メニュー画面に表示されたメニューの選択かもしれないし、アプリケーション起動画面であれば、アプリケーションを開始するための開始コマンドの場合もある。サーバ側では、このコマンドを受けて、サービス処理を開始する。そして、サーバから端末の要求に応じたサービスが提供される。
なお、端末からは随時コマンドを送信することができ(例えば、ゲームアプリケーション実行中の操作コマンドなど)、都度、サーバでは端末からのコマンド受信を受けてサービスを提供することができる(例えば、ゲームアプリケーション実行中の操作コマンドを受けて対象となるオブジェクトを移動させたり、その他の演算処理をしたりするなど)。
その他付加的に、ユーザ(プレーヤ)は、一例としてユーザ端末から特定の相手もしくは特定多数の相手に向けてメッセージを送信することもできる。このメッセージは、情報処理サーバにて中継され、特定の相手もしくは特定多数の相手に転送され相手方において受信される。また、送信したメッセージは自身の端末でも確認できる。このようなコミュニケーションツールはいわばオプションであり、必要に応じて実装することができる。
以上が、時刻t1までの動作例である。
(時刻t1以降の処理)
図5の時刻t1において、ユーザ端末からAPIサーバ及びCacheサーバを介して、Lobbyノードの取得処理が行われる(ステップS501〜ステップS503)。つまり、ユーザ端末からのLobbyノード取得要求(ステップS501)をトリガとして、当該ユーザ端末が使用するLobbyサーバの割り当て処理が行われる。このとき、APIサーバは、適宜、Cacheクラスタとのデータのやり取りを行っており(一例として、ステップS502)、APIサーバとCacheサーバとの調整の結果、時刻t2において、APIサーバを介して取得されたLobbyノードがユーザ端末へ返される(ステップS503)。
なお、Lobbyノード取得(ないし割当)についてのAPIサーバ/Cacheクラスタ間のやり取りは、時刻t1〜t2間に限られるものではなく、適宜行うことができる(図5中、破線の矢印で記した)。
また、本実施例では、ステップS501におけるLobbyノード取得要求を「ゲーム開始要求のためのトリガ」、ないしゲームに対する「アクセス要求」と位置付ける。
次に、時刻t3において、ユーザ端末からLobbyクラスタへLobbyノード接続が行われる(ステップS504)。接続先は、ステップS503において返送されたLobbyノードである。
時刻t3〜t4において、Lobbyクラスタにてユーザ同士の対戦マッチングたのめのroom_idが決定され(ステップS505)、時刻t4において、Lobbyクラスタからユーザ端末へ決定さされたroom_idが返送される(ステップS506)。
次に、図5の時刻t5において、ユーザ端末からAPIサーバ及びCacheサーバを介して、Gameノードの取得処理が行われる(ステップS507〜ステップS509)。つまり、ユーザ端末からのGameノード取得要求(ステップS507)をトリガとして、当該ユーザ端末が使用するGameサーバの割り当て処理が行われる。このとき、APIサーバは、適宜、Cacheクラスタとのデータのやり取りを行っており(一例として、ステップS508)、APIサーバとCacheサーバとの調整の結果、時刻t6において、APIサーバを介して取得されたGameノードがユーザ端末へ返される(ステップS509)。
なお、Gameノード取得(ないし割当)についてのAPIサーバ/Cacheクラスタ間のやり取りは、時刻t5〜t6間に限られるものではなく、適宜行うことができる(図5中、破線の矢印で記した)。
つまり、Lobbyノード取得及びGameノード取得のためのAPIサーバ/Cacheクラスタ間のデータやり取りは、時刻t1〜t2間あるいは時刻t5〜t6間に限られず、適宜実施することができる。
次に、時刻t7において、ユーザ端末からGameクラスタへGameノード接続が行われる(ステップS510)。接続先は、ステップS509において返送されたGameノードである。
Gameノード接続が成功すると、ユーザはユーザ端末を使って、ゲームを開始することができる(ゲーム開始の様子は、図5において不図示)。典型的には、リアルタイムマルチプレイゲームなどである。
ユーザがゲームを終了するなどして、いったんAPIサーバからのサービス提供を終了させる場合には、ユーザ端末からAPIサーバへ終了要求が送信される(時刻t8におけるステップS511)。
図6に、本発明の一実施形態にかかる情報処理システムのうち、ロードバランサ/オートスケーリングクラスタ112の処理動作を含むシステムの動作フローチャートを示す。
図6には、独立した2つのフローチャート(A)及び(B)が示されているが、このように分けたのは、それぞれ割込み元が異なるためである。
しかしながら、本発明の一実施形態にかかる情報処理システムとしては、図6に示された2つのフローチャートによってロードバランシング処理が完結するとも言えるため、同図にまとめて示し、それぞれのフローチャートについて説明する。
図6(A)には、ロードバランサ/オートスケーリングクラスタ112及びCacheクラスタ26側のロードバランシング処理フローが示されている。
すなわち、ステップS601において、本処理が開始されると、ステップS602では情報更新のための割り込みが定期的に実施される。本発明は、これに限定されるものではないが、割り込みの頻度は、数十m秒〜1秒程度(あるいはそれ以上の間隔でも良い)である。
ステップS602において、Noであれば、ステップS605に進み、システム終了かどうかの判定がなされ、Yesであれば処理を終了する(ステップS606)が、Noの場合は、ステップS602に復帰する。
ステップS602において、Yesの場合は、ステップS603に進み、一例としてEC2(アマゾン・ドット・コムが提供する仮想クラウドサーバ)などで振り分け可能なタグ情報等を基に、各クラスタ(LobbyクラスタやGameクラスタ)におけるノードごとのコネクション数を取得する。この場合の取得間隔は、一例として1秒ごとなどである(上述したステップS602の割り込み間隔によって適宜調整される)。
このとき、監視されるコネクション数は、CPU使用率やLoadAverageといった指標で見るのではなく、socket.ioプロセス(アプリケーションレイヤ)でのコネクション数を監視するように制御すると好適である。つまり、このような監視を行うと、サーバ自体は稼働しているがプロセスそのものは動作していなかったような状況における監視上の誤認を回避することができる。
次に、ステップS604に進み、前ステップで取得された各クラスタにおけるノードごとのコネクション数をCacheクラスタのSortedSetクラス(ソート済みセット型)のメンバに保管及び更新する。
そして、ステップS605に進み、その後の処理は上述のとおりである。
一方、図6(B)には、ユーザ端末15、APIサーバ23及びCacheクラスタ26側のロードバランシング処理フローが示されている。
すなわち、ステップS631において、本処理が開始されると、ステップS632では、ユーザ端末からのエンドポイント要求があるかどうかが判断される。ステップS632において、Noであれば、ステップS634に進み、システム終了かどうかの判定がなされ、Yesであれば処理を終了する(ステップS635)が、Noの場合は、ステップS632に復帰する。
ステップS632において、Yesの場合は、ステップS633に進み、APIサーバから実質的にリアルタイムにて(例えば、数ミリ秒以内で)、最も接続数の少ないノードを読み出し、クライアント(ユーザ端末)へそのエンドポイントを返送する。
そして、ステップS635に進み、その後の処理は上述のとおりである。
つまり、図6(B)に示した詳細フローは、図5を参照して既に説明したフローとなり得る。
このように、本発明の一実施形態にかかる情報処理システムにおけるロードバランシング処理は、図6(A)及び(B)に示される独立した処理フローによって完結するものである。また、APIサーバ23及びCacheクラスタ26間で適宜データのやり取り(調整)が行われていることは、図5を参照して説明した通りである。
そして、上述した本発明の一実施形態にかかるロードバランシング処理においては、ロードバランサは、ユーザ端末からの直接のコネクションを受けることがないため、システム上の障害リスクを低減させることができるという大きな利点がある。
図7に、本発明の一実施形態にかかる情報処理システム等の他の動作を示す。具体的には、ロードバランサ/オートスケーリングクラスタ112の処理動作のうち、オートスケーリング処理動作を中心に説明している。
(オートスケーリング処理の基本概念)
本発明の一実施形態にかかる情報処理システム等のオートスケーリング処理動作の特徴は、設定した閾値に応じて、クラスタを構成するサーバを自動的に追加/削減させることであるが、追加(スケールアウト)及び削減(スケールイン)の条件を異ならせることである。例えば、追加(スケールアウト)は最短で3分に一度の頻度で実施し、削減(スケールイン)は1時間に一度の頻度で実施するなどである。もちろん、時間頻度は任意に設定可能であるが、追加(スケールアウト)の頻度よりも削減(スケールイン)の頻度のほうをより長く取ると好適である。これは、追加よりも削減のほうがシステム全体の運営上リスクを伴うことが多いためである。
あるいは、システム全体の運営上のリスク低減の観点から、システム稼働が活発なとる日中の時間帯の削減は避け、深夜(例えば、深夜1時〜4時など)の時間帯のみトリガを有効とするなどの設定も有効である。
以下、図7に沿って処理動作を詳述する。
ステップS701において、処理を開始すると、ステップS702において、スケールアウトフラグ及びスケールインフラグをそれぞれオフにし、スケールアウトタイマ及びスケールインタイマをそれぞれリセットする。
スケールアウトフラグは、所定時間内にスケールアウトを既に実施したかどうかを確認するためのフラグで、通常オン/オフの2値をとる。同様に、スケールインフラグは、所定時間内にスケールインを既に実施したかどうかを確認するためのフラグで、通常オン/オフの2値をとる。
スケールアウトタイマは、システム運営上、一定時間間隔内で1回のスケールアウトを許容するような場合に、その時間間隔を管理するための変数である。また、スケールインタイマは、システム運営上、一定時間間隔内で1回のスケールインを許容するような場合に、その時間間隔を管理するための変数である。
それぞれのタイマは、任意に設定可能であり(同値とすることも異なった値とすることもできる)、タイマカウント開始後は、決められた時間を計時し、タイムアウトするとまたリセットされるというように利用される。
次に、ステップS703へ進み、スケールアウトタイマ及びスケールインタイマをスタートさせる。つまり、それぞれの設定時間(一例として、スケールアウトに対しては3分、スケールインに対しては1時間など)に対する計時を開始する。
次に、ステップS704では、管理者による明示的な指示等によりシステムが終了したかどうかが判断され、Yesの場合は、システムを終了させる(ステップS799)が、Noの場合はステップS705へ進む。
ステップS705では、システム内の各クラスタ等の監視が行われる。例えば、各クラスタのノードごとの負荷の監視などである(これによって、各クラスタ単位での負荷も把握することができる)。どのクラスタにどの程度までの負荷が許容範囲なのか、どのクラスタにどの程度の稼働を常時課すように定めるか等については、システムの運営上適宜設定することができる。
ステップS706では、あるクラスタの負荷が所定の範囲内かどうかが判断される。本ステップでは、便宜上判断ステップはこのステップS706のみであるが、クラスタごとに本ステップに基づく判断は行われる。また、ステップS704でNoとなる場合の処理ループも一定時間(一例として、数十ミリ秒〜1秒。それ以上の間隔でも良い)ごとに繰り返される。
以下、説明の便宜上、特定のクラスタにフォーカスしてその処理ループの1回分の説明を詳述する。
(スケールアウト/スケールインが全く発生しない場合の運用)
ステップS706において、Yesの場合、ステップS714に進み、スケールアウトタイマが所定値A以内であり、かつ、スケールインタイマが所定値B以内であるかどうかが判断される(所定値A及び所定Bは同じであっても良い)。
ステップS714において、Yesの場合はステップS704へ復帰する。一方で、Noの場合は、スケールアウトタイマ、スケールインタイマの少なくともいずれか一方がタイムアウトした場合なので、ステップS715へ進み、タイムアウトしたスケールアウトタイマ及び/又はスケールインタイマをリセットし、併せて、対応するフラグをリセット(オフ)して、前ステップでリセットされたタイマをスタートさせる(ステップS716)。
そして、ステップS704に復帰する。
(スケールアウト/スケールインが発生する場合の運用)
ステップS706において、Noの場合、ステップS707へ進み、クラスタの負荷は閾値(上限)を越えたかどうかが判断される。ステップS707において、Yesの場合は、ステップS708へ進み、スケールアウトフラグはオンかどうかが判断される。同ステップにおいて、スケールアウトフラグはオン(Yes)の場合はステップS714へ進むが、Noの場合は、ステップS709へ進み、スケールアウトフラグをオンにして(ステップS709)、スケールアウトが行われる(ステップS710)。そして、ステップS714へ進む。なお、ステップS709とステップS710の順序はこれに限定されない。
一方で、ステップS707において、クラスタの負荷は閾値(上限)を越えていない(No)と判断された場合は、負荷は所定の範囲内ではなく(ステップS706において、No)、かつ、閾値(上限)を越えていない場合であるので、スケールイン(サーバの削除)をしても良いケースであり、さらなる判断のためステップS711へ進む。
ステップS711では、スケールインフラグはオンかどうかが判断される。同ステップにおいて、スケールインフラグはオン(Yes)の場合はステップS714へ進むが、Noの場合は、ステップS712へ進み、スケールインフラグをオンにして(ステップS712)、スケールインが行われる(ステップS713)。そして、ステップS714へ進む。なお、ステップS712とステップS713の順序はこれに限定されない。
(オートスケーリング処理の応用例)
オートスケーリング処理の基本概念として、スケールインを深夜の時間帯に実施することを述べたが、かかる判断は、一例として図7のステップS711の後に、現在時刻に基づき予め設定された深夜帯(例えば、午前1時〜午前4時間までなど)であるかどうかを判断させることができるが、その他の応用例として次のような処理を実施させることも可能である。いずれもゼロダウンタイム(ダウンタイムを限りなく短くすること)を実現するための処理である。
(1)システムにおいて、サーバプロセスが立ち上がり、さらに接続が確認できるまで、ロードバランサ側で有効なノードとして認識させないように制御する。
(2)システムにおいて、スケールインの際は、ノードへの接続な状態でのみトリガを有効とするように制御する。
以上、具体例に基づき、情報処理システム及び情報処理プログラム等の実施形態を説明したが、本発明の実施形態としては、システム又は装置を実施するための方法又はプログラムの他、プログラムが記録された記憶媒体(一例として、光ディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、磁気テープ、ハードディスク、メモリカード)等としての実施態様をとることも可能である。
また、プログラムの実装形態としては、コンパイラによってコンパイルされるオブジェクトコード、インタプリタにより実行されるプログラムコード等のアプリケーションプログラムに限定されることはなく、オペレーティングシステムに組み込まれるプログラムモジュール等の形態であっても良い。
さらに、プログラムは、必ずしも制御基板上のCPUにおいてのみ、全ての処理が実施される必要はなく、必要に応じて基板に付加された拡張ボードや拡張ユニットに実装された別の処理ユニット(DSP等)によってその一部又は全部が実施される構成とすることもできる。
本明細書(特許請求の範囲、要約、及び図面を含む)に記載された構成要件の全て及び/又は開示された全ての方法又は処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。
また、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一又は均等となる特徴の一例にすぎない。
さらに、本発明は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本発明は、本明細書(特許請求の範囲、要約、及び図面を含む)に記載された全ての新規な特徴又はそれらの組合せ、あるいは記載された全ての新規な方法又は処理のステップ、又はそれらの組合せに拡張することができる。
10 情報処理システム
11 情報処理サーバ群
111 リアルタイムクラスタ
112 ロードバランサ/オートスケーリングクラスタ
15 タブレット端末(情報処理装置の一形態)
12、13 PC(情報処理装置の一形態)
14 携帯電話(情報処理装置の一形態)
19 公衆回線(専用線、インターネット等)
21 Lobbyクラスタ
22 Gameクラスタ
23 APIサーバ
24 Lobbyロードバランサ
25 Gameロードバランサ
26 Cacheクラスタ

Claims (6)

  1. 複数のユーザ端末からのアクセスが可能であり、前記アクセスのあった複数のユーザ端末によるリアルタイムマルチプレイゲームを制御する情報処理システムであって、
    Lobbyクラスタ及びGameクラスタを含むリアルタイムクラスタと、
    Lobbyロードバランサ及びGameロードバランサを含むロードバランサ/オートスケーリングクラスタと、
    APIサーバと、
    Cacheクラスタと
    を有し、
    (A)前記リアルタイムマルチゲームの進行時には、
    前記ロードバランサ/オートスケーリングクラスタから前記リアルタイムクラスタへの負荷監視が行われるとともに、前記負荷監視結果は前記Cacheクラスタに保管及び更新され、
    前記Cacheクラスタと前記APIとの間で前記負荷監視結果に基づいたデータ授受が行われ、
    前記ロードバランサ/オートスケーリングクラスタから前記リアルタイムクラスタに対しては、前記負荷監視結果に基づくオートスケーリング処理が行われると共に、
    (B)前記複数のユーザ端末からのアクセス要求時には、
    前記アクセス要求を前記APIサーバで受け付けると共に、前記APIサーバは前記Cacheクラスタとの間でLobbyノード割当調整を実施し、
    前記APIサーバは、前記Lobbyノード割当調整の結果、決定されたLobbyノードを、前記アクセス要求を行ったユーザ端末に返送し、
    前記アクセス要求を行ったユーザ端末は、前記決定されたLobbyノードに基づいて前記Lobbyクラスタにおける所定のサーバにアクセスし、
    前記所定のサーバは、マルチプレイのためのマッチング処理を行ってroom_idを決定すると共に、当該room_idを、前記アクセス要求を行ったユーザ端末に返送し、
    前記APIサーバは、前記アクセス要求を行ったユーザ端末からの要求に応じて、前記Cacheクラスタと前記アクセス要求を行ったユーザ端末が利用するためのgameノードの割当調整を実施し、
    前記APIサーバは、前記gameノード割当調整の結果、決定されたgameノードを、前記アクセス要求を行ったユーザ端末に返送し、
    前記アクセス要求を行ったユーザ端末は、前記決定されたLobbyノード及びgameノードに基づいて、前記リアルタイムマルチゲームを進行させる
    ことにより、前記APIサーバ及び前記Cacheクラスタを介したLobbyノード及びgameノード割当が実現される
    ことを特徴とする情報処理システム。
  2. 前記負荷監視は、socket.ioプロセスにおけるコネクション数を監視するよう制御されることを特徴とする請求項1に記載のシステム。
  3. 前記オートスケーリング処理は、スケールインを行う時間間隔とスケールアウトを行う時間間隔とが異なるように制御される請求項1または2に記載のシステム。
  4. 複数のユーザ端末からのアクセスが可能であり、Lobbyクラスタ及びGameクラスタを含むリアルタイムクラスタと、Lobbyロードバランサ及びGameロードバランサを含むロードバランサ/オートスケーリングクラスタと、APIサーバと、Cacheクラスタとを有し、前記アクセスのあった複数のユーザ端末によるリアルタイムマルチプレイゲームを制御する情報処理システムで実行されるコンピュータプログラムあって、前記情報処理システム上で実行されたとき、
    (A)前記リアルタイムマルチゲームの進行時には、
    前記ロードバランサ/オートスケーリングクラスタに、前記リアルタイムクラスタへの負荷監視を行わせるとともに、前記負荷監視結果を前記Cacheクラスタに保管及び更新させるステップと、
    前記Cacheクラスタと前記APIとの間で前記負荷監視結果に基づいたデータ授受を行わせるステップと、
    前記ロードバランサ/オートスケーリングクラスタに、前記リアルタイムクラスタに対する、前記負荷監視結果に基づくオートスケーリング処理を行わせるステップと、
    (B)前記複数のユーザ端末からのアクセス要求時には、
    前記APIサーバに、前記アクセス要求を受け付けさせると共に、前記APIサーバと前記Cacheクラスタとに、Lobbyノード割当調整を実施させるステップと、
    前記APIサーバに、前記Lobbyノード割当調整の結果、決定されたLobbyノードを、前記アクセス要求を行ったユーザ端末に返送させるステップと、
    前記アクセス要求を行ったユーザ端末に、前記決定されたLobbyノードに基づいて前記Lobbyクラスタにおける所定のサーバにアクセスさせるステップと、
    前記所定のサーバに、マルチプレイのためのマッチング処理を行わせてroom_idを決定させると共に、当該room_idを、前記アクセス要求を行ったユーザ端末に返送させるステップと、
    前記APIサーバと前記Cacheクラスタとに、前記アクセス要求を行ったユーザ端末からの要求に応じて、前記アクセス要求を行ったユーザ端末が利用するためのgameノードの割当調整を実施させるステップと、
    前記APIサーバに、前記gameノード割当調整の結果、決定されたgameノードを、前記アクセス要求を行ったユーザ端末に返送させるステップと、
    前記アクセス要求を行ったユーザ端末に、前記決定されたLobbyノード及びgameノードに基づいて、前記リアルタイムマルチゲームを進行させるステップと
    を実行させることにより、前記APIサーバ及び前記Cacheクラスタを介したLobbyノード及びgameノード割当が実現される
    ことを特徴とするプログラム。
  5. 前記負荷監視は、socket.ioプロセスにおけるコネクション数を監視するよう制御されることを特徴とする請求項4に記載のプログラム。
  6. 前記オートスケーリング処理は、スケールインを行う時間間隔とスケールアウトを行う時間間隔とが異なるように制御される請求項4または5に記載のプログラム。
JP2015253621A 2015-12-25 2015-12-25 情報処理システム、及び情報処理プログラム Active JP6713280B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015253621A JP6713280B2 (ja) 2015-12-25 2015-12-25 情報処理システム、及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015253621A JP6713280B2 (ja) 2015-12-25 2015-12-25 情報処理システム、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2017113375A true JP2017113375A (ja) 2017-06-29
JP6713280B2 JP6713280B2 (ja) 2020-06-24

Family

ID=59231094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015253621A Active JP6713280B2 (ja) 2015-12-25 2015-12-25 情報処理システム、及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP6713280B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113368504A (zh) * 2021-06-09 2021-09-10 咪咕互动娱乐有限公司 云游戏服务系统、交互方法、存储介质及程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10307783A (ja) * 1997-05-07 1998-11-17 N T T Data:Kk サイトアクセス制御システム及び記録媒体
JP2004514189A (ja) * 2000-02-17 2004-05-13 アクレイム エンターテインメント インコーポレイテッド マルチプレーヤーのコンピュータゲーム、システム及び方法
JP2013186820A (ja) * 2012-03-09 2013-09-19 Panasonic Corp 中継装置及び通信システム
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
JP2013544562A (ja) * 2010-10-20 2013-12-19 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オンラインゲーム環境におけるサーバホストのリソース管理

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10307783A (ja) * 1997-05-07 1998-11-17 N T T Data:Kk サイトアクセス制御システム及び記録媒体
JP2004514189A (ja) * 2000-02-17 2004-05-13 アクレイム エンターテインメント インコーポレイテッド マルチプレーヤーのコンピュータゲーム、システム及び方法
JP2013544562A (ja) * 2010-10-20 2013-12-19 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー オンラインゲーム環境におけるサーバホストのリソース管理
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
JP2013186820A (ja) * 2012-03-09 2013-09-19 Panasonic Corp 中継装置及び通信システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113368504A (zh) * 2021-06-09 2021-09-10 咪咕互动娱乐有限公司 云游戏服务系统、交互方法、存储介质及程序产品
CN113368504B (zh) * 2021-06-09 2023-10-17 咪咕互动娱乐有限公司 云游戏服务系统、交互方法、存储介质

Also Published As

Publication number Publication date
JP6713280B2 (ja) 2020-06-24

Similar Documents

Publication Publication Date Title
JP5738870B2 (ja) クライアントサーバシステム
US9146716B2 (en) Automatic resource balancing for multi-device applications
US9503310B1 (en) Methods and systems of dynamic management of resources in a virtualized environment
US10075387B1 (en) Mobile server connection
JP2015513730A (ja) データ収集方法および装置並びに移動端末
CN111090687A (zh) 数据处理方法及装置、系统、计算机可读存储介质
JP7231655B2 (ja) プログラム、情報処理方法、および電子機器
CN111338745B (zh) 一种虚拟机的部署方法、装置及智能设备
JP2023548405A (ja) クラスタコンピューティング環境を修正するための技術
US20200404047A1 (en) Configurable connection reset for customized load balancing
US11709696B2 (en) Preloading of virtual devices in anticipation of a connection request from a physical device
CN115617278B (zh) 路径设备的选择方法、装置、电子设备及可读存储介质
JP2018129718A (ja) 管理サーバ、通信システム、管理サーバの制御方法、及びプログラム
JP6713280B2 (ja) 情報処理システム、及び情報処理プログラム
US20220004414A1 (en) Predictive loading of a virtual device in anticipation of a connection request from a physical device
US9124591B2 (en) Automatic resource balancing for multi-device location-based applications
US20220004415A1 (en) Latency-based selection of a virtual device platform on which to load a virtual device
JP6376120B2 (ja) 端末プログラム及び端末装置
CN113438266A (zh) 可穿戴按摩仪数据的获取方法、装置、设备和存储介质
US20200351179A1 (en) Methods, Network Function Entities and Computer Readable Media for Providing IoT Services
CN104317606A (zh) 远程操作系统
JP2018147257A (ja) 仮想基盤にもとづくシステムにおけるリソース割当方法、接続管理サーバおよび接続管理プログラム
KR102658216B1 (ko) 고가용성 네트워크 연결 방법 및 이를 사용하는 전자 장치
WO2021146997A1 (en) Location-based application discovery
JP6724606B2 (ja) 接続先決定プログラム、接続先決定方法および情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200603

R150 Certificate of patent or registration of utility model

Ref document number: 6713280

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250