(58)【調査した分野】(Int.Cl.,DB名)
前記第1のキャッシュサーバおよび前記第2のキャッシュサーバはそれぞれ、前記第1のエリアに関する情報および前記第2のエリアに関する情報をデータベースサーバからキャッシュに入れる請求項1〜4いずれか一項に記載の方法。
前記プレイヤーキャラクターの前記状況は、前記プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている請求項2に記載の方法。
前記第2のエリアに関連付けられている前記データは、前記第2のエリアの環境情報および前記第2のエリアにおける前記プレイヤーキャラクターの情報のうちの少なくとも1つを含む請求項1〜6いずれか一項に記載の方法。
仮想空間の複数のエリアを複数のキャッシュサーバに関連付けるように構成されたキャッシュマネージャであって、各キャッシュサーバは割り振られているエリアに関する情報をデータベースサーバからキャッシュに入れる、キャッシュマネージャと、
ゲームのプレイヤーから前記複数のエリアのうち第1のエリアにいるプレイヤーキャラクターの要求を受信するように構成された受信ユニットであって、前記プレイヤーキャラクターの前記要求は、前記プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられている、受信ユニットと、
前記要求に応じて、前記第1のエリアと第2のエリアとの距離に基づいて、前記第2のエリアに対応する第2のキャッシュサーバから、前記第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を、前記距離が小さくなると前記コピーするキャッシュデータの量が増大するように計算するように構成されたコピー係数計算器と、
前記キャッシュマネージャに、キャッシュコピーの前記計算された量に少なくとも部分的に基づいて、前記第2のエリアに関連付けられているデータを前記第2のキャッシュサーバから前記第1のキャッシュサーバにコピーするよう指示するように構成された命令ユニットと
を備える、ロードバランサ。
前記第2のエリアに関連付けられている前記データは、前記第2のエリアの環境情報および前記第2のエリアにおける前記プレイヤーキャラクターの情報のうちの少なくとも1つを含む請求項8または9に記載のロードバランサ。
前記プレイヤーキャラクターの前記状況は、前記プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている請求項9に記載のロードバランサ。
ゲームデータを格納するデータベースサーバとゲームサーバとの間のロードバランシングを実施するためのプログラムを格納するコンピュータ可読ストレージ媒体であって、コンピュータを、
仮想空間のエリアとキャッシュサーバとの関連付けを管理するように構成されたキャッシュ管理モジュールであって、各キャッシュサーバは、対応するエリアに関連付けられている前記ゲームデータの一部を前記データベースサーバからキャッシュに入れる、キャッシュ管理モジュール、
第1のエリアと第2のエリアとの間の距離に少なくとも部分的に基づいて、前記第2のエリアに対応する第2のキャッシュサーバから前記第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されたコピー係数計算モジュール
として機能させるためのプログラムを記録し、
前記プログラムは、前記コンピュータを、前記距離が小さくなると前記コピーするキャッシュデータの量が増大するように機能させる、
コンピュータ可読ストレージ媒体。
前記コピー係数計算モジュールは、プレイヤー状況分析モジュールによって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいてキャッシュコピーの前記量を計算するようにさらに構成されている、請求項13に記載のコンピュータ可読ストレージ媒体。
ゲームデータを格納するデータベースサーバとゲームサーバとの間のロードバランシングを実施するためのプログラムを格納するコンピュータ可読ストレージ媒体であって、コンピュータを、
仮想空間を分割した複数のエリアそれぞれに対応する複数のキャッシュサーバを管理するキャッシュ管理モジュールと、
前記複数のキャッシュサーバそれぞれが管理するエリア間をプレイヤーキャラクターが移動する確率、及び、前記管理するエリア間の距離に基づいて、前記複数のキャッシュサーバ間のコピー係数を、前記移動の確率が高くなると、それに応じて増大し、前記距離が減少すると、それに応じて増大するように計算するコピー係数計算モジュールとして機能させるためのプログラムを記録する、コンピュータ可読ストレージ媒体。
【発明を実施するための形態】
【0010】
以下の詳細な説明において、本明細書の一部を形成する添付の図面が参照される。図面において、文脈に別段の指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的であることを意図されていない。本明細書において提示される主題の精神または範囲を逸脱することなく、その他の実施形態が使用されてもよく、その他の変更が行われてもよい。本明細書において概括的に説明され、図面に示される本開示の態様が、多岐にわたるさまざまな構成において配置され、代替され、組み合わされ、分離され、設計されてもよく、それらすべてが本明細書において明示的に検討されることは容易に理解されよう。
【0011】
本開示は、とりわけ、MMORPGなどのオンラインゲームを伴うモバイルサービスをホスティングするクラウドコンピューティング環境におけるロードバランシングに関連する方法、装置、システム、デバイス、およびコンピュータプログラム製品を対象とする。
【0012】
データベースサーバとゲームサーバとの間のゲームのロードバランシングを提供するように構成されたロードバランサに対する技術が概して説明される。一部の例において、クラウドコンピューティング環境におけるゲームは、ゲートウェイサーバ、ゲームサーバ、およびデータベースサーバを含む3つのサーバレイヤを使用して実施されてもよい。一部の例において、ロードバランサは、データベースサーバとゲームサーバとの間のロードバランシングを提供して、トラフィックの増大に起因する両者間の通信ボトルネックを解決することができる。一部の例において、オンラインゲームの場合、ロードバランサは、データベースサーバとゲームサーバとの間のロードバランシングを提供して、ゲームの仮想空間に関する大量のゲームデータの読み出しによって生じる通信ボトルネックを解決することができる。
【0013】
一部の例において、ロードバランサは、ゲームの仮想空間内のプレイヤーキャラクターの位置および状況のうちの少なくとも1つに少なくとも部分的に基づいてデータベースサーバのデータキャッシュを動的に構成し、動的構成に少なくとも部分的に基づいてユーザ(またはプレイヤー)によって要求されたゲームデータをキャッシュに入れ、それによりゲームサーバからデータベースサーバへのデータアクセスを迅速化することができる。
【0014】
一部の例において、メモリ内キャッシュサーバなどのデータベースサーバから取り出されたデータをキャッシュに入れる複数のキャッシュサーバが、ゲームサーバからデータベースサーバへのアクセス数を減らすために使用されてもよい。
【0015】
一部の例において、オンラインゲームサービスの応答速度およびサービス提供キャパシティ(すなわち、ゲームを同時にプレイすることができるプレイヤーの数)を改善するため、ロードバランサは、複数のキャッシュサーバ間でデータのコピーを管理することができる。
【0016】
一部の例において、ロードバランサは、仮想空間を複数のエリアに分割して、各々のキャッシュサーバがエリアの1つに関するゲームデータをデータベースサーバからキャッシュに入れるように、複数のキャッシュサーバを管理することができる。ロードバランサは、キャッシュサーバとエリアの間の関連付けを管理することができる。
【0017】
一部の例において、ロードバランサは、ユーザからゲームデータの要求を受信して、受信した要求を参照して分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいて、第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算することができる。
【0018】
一部の例において、ロードバランサは、仮想空間のマップ情報を使用することにより、前もって確率を静的に計算することができる。
【0019】
一部の例において、次いでロードバランサは、計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバへのコピー係数、すなわち第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0020】
一部の例において、すべてのエリアおよびプレイキャラクターのコピー係数を管理することにより、キャッシュサーバは、プレイヤーキャラクターが移動する可能性の高いエリアに関する情報を動的および/または自動的に格納するように構成されてもよく、それによりゲームサーバからデータベースサーバへのアクセス数を減らすことができる。
【0021】
一部の例において、ロードバランサは、ゲームサーバおよびデータベースサーバから独立したネットワーク装置として実施されてもよい。したがって、ロードバランサは、オンラインゲームサービスの応答速度およびサービス提供キャパシティを改善するため、既存のインフラストラクチャおよびアプリケーションを大幅に変更することなくクラウドコンピューティング環境に導入されてもよい。
【0022】
図1は、本明細書において説明される少なくとも一部の実施形態による、ロードバランサが、データベースサーバとゲームサーバとの間のロードバランシングを提供する環境の例示を概略的に示す図である。
図1に示されるように、ユーザクライアント110は、データベースサーバ130に格納されうるゲームデータの要求をゲームサーバ120に送信することができる。限定的ではなく、一例として、要求は、ゲームサーバ120によって提供されるオンラインゲームサービスのゲームのプレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。
【0023】
一部の実施形態において、データベースサーバ130は、1つまたは複数のプレイヤーキャラクターが存在しうるゲームの仮想空間に関するゲームデータを格納することができる。一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nは、データベースサーバ130に格納されたゲームデータの少なくとも一部をキャッシュに入れることができる。一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nは、それぞれ、仮想空間内の複数のエリアのうちの1つに関連付けられているゲームデータの少なくとも一部をデータベースサーバ130からキャッシュに入れることができる。限定的ではなく、一例として、キャッシュサーバ140−1、140−2、・・・、140−nは、メモリ内キャッシュサーバであってもよい。限定的ではなく、一例として、エリアのそれぞれのサイズは、クラウドコンピューティング環境に提供されるキャッシュサーバ140−1、140−2、・・・、140−nの合計数、および/またはキャッシュサーバ140−1、140−2、・・・、140−nのメモリ容量に応じて異なることもある。たとえば、クラウドコンピューティング環境に十分な数のキャッシュサーバ140−1、140−2、・・・、140−nが提供され、そのメモリ容量も十分である場合、エリアのサイズは比較的小さく設定されてもよいが、キャッシュサーバ140−1、140−2、・・・、140−nの数が十分ではない、および/またはそのメモリ容量が小さい場合は、エリアのサイズは比較的大きく設定されてもよい。
【0024】
一部の実施形態において、ロードバランサ150は、キャッシュサーバ140−1、140−2、・・・、140−nと仮想空間の関連付けを管理することができる。限定的ではなく、一例として、ロードバランサ150は、キャッシュサーバ140−1、140−2、・・・、140−nをそれぞれ、エリア160−1、160−2、・・・、160−nに割り振ることができ、キャッシュサーバ140−1、140−2、・・・、140−nにそれぞれ、エリア160−1、160−2、・・・、160−nに関連付けられているゲームデータをデータベースサーバ130からキャッシュに入れさせるかまたは取り出させることができる。
【0025】
一部の実施形態において、ロードバランサ150はまた、ユーザクライアント110からの要求をゲームサーバ120から受信することができる。次いで、ロードバランサ150は、受信した要求を分析することができ、それからユーザクライアント110に関連付けられているプレイヤーキャラクターの状況情報を取得することができる。限定的ではなく、一例として、状況情報は、プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つを含むことができる。
【0026】
一部の実施形態において、ロードバランサ150はまた、要求から取得された状況情報に少なくとも部分的に基づいて、エリア間の仮想空間内のプレイヤーキャラクターの移動の確率を計算することもできる。限定的ではなく、一例として、ロードバランサ150は、現在位置とその他のエリアとの間の距離を考慮に入れることによって、プレイヤーキャラクターの現在位置から仮想空間内のその他のエリアへの仮想空間内のプレイヤーキャラクターの移動の確率を計算することができる。
【0027】
一部の実施形態において、ロードバランサ150はまた、計算された確率に少なくとも部分的に基づいて、キャッシュサーバ140−1、140−2、・・・、140−n間のコピー係数、すなわちキャッシュサーバ140−1、140−2、・・・、140−n間でコピーするキャッシュデータの量を計算することができる。限定的ではなく、一例として、ロードバランサ150は、エリア160−1からエリア160−2へのユーザクライアント110に関連付けられているプレイヤーキャラクターの移動の計算された確率に少なくとも部分的に基づいて、エリア160−2に対応するキャッシュサーバ140−2からエリア160−1に対応するキャッシュサーバ140−1へのコピー係数、すなわちエリア160−2に対応するキャッシュサーバ140−2からエリア160−1に対応するキャッシュサーバ140−1にコピーするキャッシュデータの量を計算することができる。一部の実施形態において、キャッシュサーバ140−2からキャッシュサーバ140−1へのコピー係数は、エリア160−1からエリア160−2への移動の計算された確率が増大するのに応じて増大することがある。一部の実施形態において、キャッシュサーバ140−2からキャッシュサーバ140−1へのコピー係数は、エリア160−1とエリア160−2との間の距離が増大するのに応じて減少することがある。
【0028】
仮想空間内の点x
2y
2に対応するキャッシュサーバから、仮想空間内の点x
1y
1に対応するもう1つのキャッシュサーバに情報をコピーするためのコピー係数、すなわち、copy_factor(x
1y
1,x
2y
2)の例は、以下のような例示の式により計算されてもよい。
【数1】
【0029】
式1について、item_count(x
2y
2)は、点x
2y
2に対応するキャッシュサーバ内のキャッシュデータの量を示し、probability(x
1y
1,x
2y
2)は、点x
1y
1から点x
2y
2へのユーザクライアント110に関連付けられているプレイヤーキャラクターの移動の確率を示し、distance(x
1y
1,x
2y
2)は、仮想空間内の点x
1y
1から点x
2y
2までの距離を示す。
【0030】
一部の実施形態において、ロードバランサ150は、上記の式1により計算されたコピー係数に少なくとも部分的に基づいて、キャッシュサーバ140−1、140−2、・・・、140−n間でキャッシュデータの計算された量をコピーすることによって、キャッシュサーバ140−1、140−2、・・・、140−nを動的に管理または構成することができ、それによりデータベースサーバ130とゲームサーバ120との間のロードバランシングをもたらすことができる。
【0031】
図2(A)および(B)はそれぞれ、本明細書において説明される少なくとも一部の実施形態による、キャッシュサーバと仮想空間エリアとを関連付けるためのメッシュ構造の例示、およびキャッシュデータをキャッシュサーバ間でコピーすることの例示を示す図である。示されているように、仮想空間200は、複数のエリア210−1、210−2、・・・、210−25に分割されてもよい。
図2(A)および(B)は、空間200が25個の同じサイズのエリア210−1、210−2、・・・、210−25に分割されることを示すが、当業者であれば、空間20が任意のサイズおよび/または任意の数のエリアに分割されてもよいことが理解されよう。
【0032】
一部の実施形態において、エリア210−1、210−2、・・・、210−25に関するゲームデータは、データベースサーバ(たとえば、データベースサーバ130)に格納されてもよい。複数のキャッシュサーバ(たとえば、キャッシュサーバ140−1、140−2、・・・、140−n)は、データベースサーバへのアクセス数を減らすために、エリア210−1、210−2、・・・、210−25に関するゲームデータをデータベースサーバから取り出すことおよび/またはキャッシュに入れることができる。一部の実施形態において、複数のキャッシュサーバの各々は、エリア210−1、210−2、・・・、210−25の各々に関連付けられるかまたは割り振られてもよく、エリア210−1、210−2、・・・、210−25のうちの対応する1つに関するゲームデータをキャッシュに入れることができる。
【0033】
図2(A)に示されるように、プレイヤーキャラクターが現在エリア210−14に位置している場合、ロードバランサ(たとえば、ロードバランサ150)は、エリア210−14からその他のエリアへのプレイヤーキャラクターの移動の確率を計算することができ、他のエリアに対応する他のキャッシュサーバからエリア210−14に対応するキャッシュサーバへのコピー係数を計算することができる。限定的ではなく、一例として、ロードバランサが、エリア210−14から
図2(A)に示される他のエリアへのプレイヤーキャラクターの移動の確率を見出して計算し、
図2(B)に示されるエリアに対応するキャッシュサーバの各々のキャッシュデータの量を見出す場合、ロードバランサは、上記の式1に従って、他のエリアに対応するキャッシュサーバからエリア210−14に対応するキャッシュサーバへのそれぞれのコピー係数を計算することができる。ロードバランサは、上記の式1により計算されたコピー係数に少なくとも部分的に基づいて、キャッシュサーバ間でキャッシュデータをコピーすることによって、キャッシュサーバを動的に管理または構成することができ、それによりデータベースサーバとゲームサーバとの間のロードバランシングをもたらすことができる。
【0034】
図3は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成されたロードバランサの例示的な例を示す概略ブロック図である。示されるように、ロードバランサ150は、受信ユニット310、プレイヤー状況分析器320、キャッシュマネージャ330、移動確率計算器340、コピー係数計算器350、および命令ユニット360を含むことができる。別個のコンポーネントとして示されているが、さまざまなコンポーネントは、開示される主題の範囲内で検討される間に、追加のコンポーネントに分割されるか、より少ないコンポーネントに結合されるか、またはすべて除去されてもよい。
【0035】
受信ユニット310は、ゲームのユーザクライアントからプレイヤーキャラクターの要求を受信するように構成されてもよい。一部の実施形態において、プレイヤーキャラクターの要求は、プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。限定的ではなく、一例として、プレイヤーキャラクターのアクションは、ゲームの仮想空間における移動手段を使用したアクションに関連付けられてもよい。
【0036】
プレイヤーキャラクター分析器320は、仮想空間に位置するプレイヤーキャラクターの状況を分析するように構成されてもよい。一部の実施形態において、仮想空間は、複数のエリアを有するように構成されてもよく、プレイヤーキャラクターは、複数のエリアの中で第1のエリアに位置してもよい。限定的ではなく、一例として、プレイヤーキャラクターの状況は、プレイヤーキャラクターの位置情報、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターの機器の情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報に関連付けられてもよい。
【0037】
一部の実施形態において、プレイヤー状況分析器320は、プレイヤーキャラクターの要求に基づいてプレイヤーキャラクターの状況を分析することができる。限定的ではなく、一例として、要求はプレイヤーキャラクターの情報を含むことができ、プレイヤー状況分析器320は、要求からプレイヤーキャラクターの情報を取得して、取得した情報を使用してプレイヤーキャラクターの状況を分析することができる。
【0038】
キャッシュマネージャ330は、仮想空間の複数のエリア(たとえば、エリア160−1、160−2、・・・、160−n)を、複数のキャッシュサーバ(たとえば、キャッシュサーバ140−1、140−2、・・・、140−n)に関連付けるように構成されてもよい。一部の実施形態において、キャッシュサーバは各々、割り振られたエリアに関する情報をデータベースサーバ(たとえば、データベースサーバ130)からキャッシュに入れることができる。一部の実施形態において、キャッシュサーバは、メモリ内キャッシュサーバを含むことができる。
【0039】
移動確率計算器340は、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算するように構成されてもよい。一部の実施形態において、移動確率計算器340は、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報など、プレイヤー状況分析器320によって分析されたプレイヤーの状況に少なくとも部分的に基づいて確率を計算することができる。
【0040】
コピー係数計算器350は、移動確率計算器340によって計算された移動の確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバへのコピー係数、すなわち第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されてもよい。一部の実施形態において、コピー係数計算器350は、第1のエリアと第2のエリアとの間の距離を考慮して、第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0041】
命令ユニット360は、キャッシュマネージャ330に、コピー係数計算器350によって計算されたキャッシュコピーの量に少なくとも部分的に基づいて、第2のエリアに関連付けられているデータを第2のキャッシュサーバから第1のキャッシュサーバにコピーするよう指示し、それによりデータベースサーバとゲームサーバ間のロードバランシングをもたらすように構成されてもよい。一部の実施形態において、第2のエリアに関連付けられているデータは、第2のエリアの環境情報および第2のエリアにおけるプレイヤーキャラクターの情報のうちの少なくとも1つを含む。限定的ではなく、一例として、第1のエリアの環境情報および第2のエリアの環境情報は、それぞれ第1のエリアおよび第2のエリアの気象情報を含むことができる。
【0042】
図4は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成された例示のシステムを概略的に示す図である。示されているように、ユーザが、たとえば、大規模多人数同時参加型オンラインロールプレイングゲーム(MMORPG)プログラムなどのゲームプログラムをユーザクライアント110上で稼働または実行する場合、ユーザクライアント110は、データベースサーバ130に格納されうる、仮想空間内のプレイヤーキャラクターに関連するゲームデータの要求をゲームサーバ120に送信することができる。次いで、ゲームサーバ120は、受信した要求をロードバランサ150に送信することができる。
【0043】
一部の実施形態において、ロードバランサ150内の受信ユニット310は、ゲームサーバからゲームデータの要求を受信することができる。次いで、受信ユニット310は、受信した要求をプレイヤー状況分析器320に送信することができる。一部の実施形態において、プレイヤー状況分析器320は、プレイヤーキャラクターの要求に基づいて、プレイヤーキャラクターのアクションまたは移動に関連付けられているプレイヤーキャラクターの状況を分析することができる。
【0044】
一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nと仮想空間エリアとの関連付けを管理することができる、ロードバランサ150内のキャッシュマネージャ330は、プレイヤー状況分析器320によって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいてプレイヤーキャラクターの現在の位置に対応するキャッシュサーバを含む、関連するキャッシュサーバを見出すことができる。
【0045】
一部の実施形態において、ロードバランサ150内の移動確率計算器340は、プレイヤー状況分析器320によって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいて、プレイヤーキャラクターの現在の位置が属しうる第1の仮想空間エリアから第2の仮想空間エリアへのプレイヤーキャラクターの移動の確率を計算することができる。
【0046】
一部の実施形態において、ロードバランサ150内のコピー係数計算器350は、移動確率計算器340によって計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0047】
一部の実施形態において、命令ユニット360は、キャッシュマネージャ330に、キャッシュコピーの計算された量に少なくとも部分的に基づいて、第2のエリアに関連付けられているデータを第2のキャッシュサーバから第1のキャッシュサーバにコピーすることができる。
【0048】
一部の実施形態において、ロードバランサ150は、コピー係数計算器350によって計算された第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量に少なくとも部分的に基づいて、第2のキャッシュサーバから第1のキャッシュサーバにキャッシュデータの計算された量をコピーすることにより、キャッシュサーバ140−1、140−2、・・・、140−nを動的に管理または構成することができる。
【0049】
図5は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するためのプロセスを示す例示的な流れ図である。
図5に示される方法は、上記で説明されている受信ユニット310、プレイヤー状況分析器320、キャッシュマネージャ330、移動確率計算器340、コピー係数計算器350、および命令ユニット360を含むロードバランサ150などのロードバランサにおいて実施されてもよい。例示のプロセスは、1つまたは複数のブロック500、510、520、および/または530によって示される、1つまたは複数の操作、アクション、または機能を含むことができる。別個のブロックとして示されているが、さまざまなブロックは、望ましい実施態様に応じて、追加のブロックに分割されるか、より少ないブロックに結合されるか、または除去されてもよい。プロセスは、ブロック500から開始する。
【0050】
ブロック500において、ロードバランサは、プレイヤーキャラクターに関連付けられているゲームのプレイヤーから、仮想空間に位置するプレイヤーキャラクターに関連する要求を受信することができる。限定的ではなく、一例として、要求は、プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。一部の実施形態において、仮想空間は、複数のエリアを有するように構成されてもよく、プレイヤーキャラクターは、複数のエリアの中で第1のエリアに位置してもよい。プロセスは、ブロック500からブロック510へと進むことができる。
【0051】
ブロック510において、ロードバランサは、プレイヤーキャラクターに関連する要求に少なくとも部分的に基づいてプレイヤーキャラクターの状況を分析することができる。限定的ではなく、一例として、プレイヤーキャラクターの状況は、プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている。プロセスは、ブロック510からブロック520へと進むことができる。
【0052】
ブロック520において、ロードバランサは、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算することができる。一部の実施形態において、ロードバランサは、分析された状況に少なくとも部分的に基づいて確率を計算することができる。限定的ではなく、一例として、ロードバランサは、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報を考慮して確率を計算することができる。プロセスは、ブロック520からブロック530へと進むことができる。
【0053】
ブロック530において、ロードバランサ150は、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量、すなわち第2のキャッシュサーバから第1のキャッシュサーバへのコピー係数を計算することができる。
【0054】
一部の実施形態において、ロードバランサは、計算された確率に少なくとも部分的に基づいて、コピーするキャッシュデータの量を計算することができる。
【0055】
一部の実施形態において、ロードバランサは、第1のエリアと第2のエリアとの間の距離にさらに基づいて、コピーするキャッシュデータの量を計算することができる。
【0056】
一部の実施形態において、第1のキャッシュサーバおよび第2のキャッシュサーバはそれぞれ、第1のエリアに関する情報および第2のエリアに関する情報をデータベースサーバからキャッシュに入れることができる。
【0057】
一部の実施形態において、移動の確率が高くなると、それに応じてキャッシュコピーの量も増大する。
【0058】
一部の実施形態において、ロードバランサは、第2のキャッシュサーバから第1のキャッシュサーバにキャッシュデータの計算された量をコピーすることにより、キャッシュサーバを動的に管理または構成することができる。
【0059】
本明細書において開示されるこのプロセスおよびその他のプロセスおよび方法について、プロセスおよび方法で実行される機能が異なる順序で実施されてもよいことを、当業者であれば理解するであろう。さらに、概説されるステップおよび操作は例として示されているに過ぎず、ステップおよび操作の一部は、開示される実施形態の本質を損なうことなく、オプションの、より少ないステップおよび操作に結合されてもよいか、または追加のステップおよび操作に拡大されてもよい。
【0060】
図6は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうるコンピュータプログラム製品を示す図である。プログラム製品600は、信号搬送媒体602を含むことができる。信号搬送媒体602は、たとえばプロセッサによって実行されるとき、
図1〜
図5に関して上記で説明される機能を提供することができる1つまたは複数の命令604を含むことができる。一例として、命令604は、仮想空間のエリアとキャッシュサーバとの関連付けを管理するための1つまたは複数の命令であって、各キャッシュサーバは対応するエリアに関連付けられているゲームデータの一部をデータベースサーバからキャッシュに入れる命令と、第1のエリアから第2のエリアへのゲームキャラクターの移動の確率および第1のエリアと第2のエリアとの間の距離に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するための1つまたは複数の命令とを含むことができる。したがって、たとえば、
図3を参照すると、ロードバランサ150は、命令604に応答して、
図5に示されるブロックのうちの1つまたは複数を開始することができる。
【0061】
一部の実施形態において、信号搬送媒体602は、ハードディスクドライブ、CD、DVD,デジタルテープ、メモリなどのコンピュータ可読媒体606を含むことができるが、これらに限定されることはない。一部の実施形態において、信号搬送媒体602は、メモリ、読取り/書込み(R/W)CD、R/W DVDなどの記録可能媒体608を含むことができるが、これらに限定されることはない。一部の実施形態において、信号搬送媒体602は、デジタルおよび/またはアナログ通信媒体など(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)の通信媒体610を含むことができるが、これらに限定されることはない。したがって、たとえば、プログラム製品600は、RF信号搬送媒体602によってロードバランサ150の1つまたは複数のモジュールに搬送されてもよく、信号搬送媒体602は無線通信媒体610(たとえば、IEEE802.11規格に適合する無線通信媒体)により搬送される。
【0062】
図7は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうる例示のコンピューティングデバイスを示すブロック図である。これらの例において、コンピューティングデバイス700の要素は、MMORPGなどのオンラインゲームを伴うモバイルサービスをホスティングするクラウドコンピューティングシステムのために配置または構成されてもよい。極めて基本的な構成702において、コンピューティングデバイス700は通常、1つまたは複数のプロセッサ704およびシステムメモリ706を含む。メモリバス708は、プロセッサ704とシステムメモリ706との間で通信するために使用されてもよい。
【0063】
望ましい構成に応じて、プロセッサ704は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそれらの任意の組合せを含む任意のタイプであってもよいが、これらに限定されることはない。プロセッサ704は、レベル1キャッシュ710およびレベル2キャッシュ712など、1つまたは複数のレベルのキャッシング、プロセッサコア714、およびレジスタ716を含むことができる。例示のプロセッサコア714は、演算論理装置(ALU:arithmetic logic unit)、浮動小数点演算ユニット(FPU:floating point unit)、デジタル信号処理コア(DSP Core)、またはそれらの任意の組合せを含むことができる。例示のメモリコントローラ718はまた、プロセッサ704と共に使用されてもよいか、または一部の実施態様において、メモリコントローラ718はプロセッサ704の内部部品であってもよい。
【0064】
望ましい構成に応じて、システムメモリ706は、(RAMなどの)揮発性メモリ、(たとえば、ROM、フラッシュメモリなどの)不揮発性メモリ、またはそれらの任意の組合せを含む任意のタイプであってもよいが、これらに限定されることはない。システムメモリ706は通常、オペレーティングシステム720、1つまたは複数のアプリケーション722、およびプログラムデータ724を含むことができる。アプリケーション722は、
図3に示されるロードバランサ150のアーキテクチャに関して説明されているアクションを含むか、または
図5に示される流れ図に関して説明されているアクションを含む本明細書において説明される機能を実行するように配置されうる命令726を含むことができる。プログラムデータ724は、命令726を実施するために使用されうるデータ(たとえば、キャッシュサーバと仮想空間エリアとを関連付けるためのメッシュ構造)を含むことができる。一部の実施形態において、アプリケーション722は、本明細書において説明されるロードバランサのための命令の実施態様のように、オペレーティングシステム720上でプログラムデータ724と共に動作するように配置されてもよい。
【0065】
コンピューティングデバイス700は、追加の特徴または機能、および追加のインターフェイスを有して、基本構成702と、任意の必要なデバイスおよびインターフェイスとの通信を容易にすることができる。たとえば、バス/インターフェイスコントローラ730は、ストレージインターフェイスバス734を介して基本構成702と1つまたは複数のデータストレージデバイス732との間の通信を容易にするために使用されてもよい。データストレージデバイス732は、取外し式ストレージデバイス736、非取外し式ストレージデバイス738、またはその組合せであってもよい。取外し式ストレージデバイスおよび非取外し式ストレージデバイスの例は、ほんの一部をあげると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、およびテープドライブを含む。例示のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータなどの情報の格納のための任意の方法または技術で実施された揮発性および不揮発性の、取外し式および非取外し式メディアを含むことができる。
【0066】
システムメモリ706、取外し式ストレージデバイス736、および非取外し式ストレージデバイス738は、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気ストレージデバイス、もしくは望ましい情報を格納するために使用されうる、コンピューティングデバイス700によってアクセスされうる任意の他の媒体を含むが、これらに限定されることはない。任意のそのようなコンピュータストレージ媒体は、コンピューティングデバイス700の一部であってもよい。
【0067】
コンピューティングデバイス700はまた、さまざまなインターフェイスデバイス(たとえば、出力デバイス742、周辺インターフェイス744、および通信デバイス746)から基本構成702へのバス/インターフェイスコントローラ730を介する通信を容易にするためのインターフェイスバス740を含むこともできる。例示の出力デバイス742は、グラフィックス処理ユニット748およびオーディオ処理ユニット750を含み、これらは1つまたは複数のA/Vポート752を介してディスプレイまたはスピーカなどのさまざまな外部デバイスと通信するように構成されてもよい。例示の周辺インターフェイス744は、シリアルインターフェイスコントローラ754またはパラレルインターフェイスコントローラ756を含み、これらは1つまたは複数の入出力ポート758を介して入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)またはその他の周辺デバイス(たとえば、プリンタ、スキャナなど)などの外部デバイスと通信するように構成されてもよい。例示の通信デバイス746はネットワークコントローラ760を含み、これは1つまたは複数の通信ポート764を介するネットワーク通信リンク上の1つまたは複数のその他のコンピューティングデバイス762との通信を容易にするために配置されてもよい。
【0068】
ネットワーク通信リンクは、通信媒体の一例であってもよい。通信媒体は通常、搬送波または他のトランスポート機構などの変調データ信号のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって具現されてもよく、任意の情報搬送媒体を含むことができる。「変調データ信号」は、信号の特性セットの1つまたは複数を有する信号、もしくは信号の情報をエンコードするような方法で変更された信号であってもよい。限定的ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数(RF)、マイクロ波、赤外線(IR)および他の無線媒体などの無線媒体を含むことができるが、これらに限定されることはない。本明細書に使用されているコンピュータ可読媒体という用語は、ストレージ媒体および通信媒体の両方を含むことができる。
【0069】
コンピューティングデバイス700は、携帯電話、携帯情報端末(PDA)などの小型フォームファクターポータブル(またはモバイル)電子デバイス、パーソナルメディアプレイヤーデバイス、無線Web視聴デバイス、パーソナルハンドセットデバイス、アプリケーション固有デバイス、または上記の機能のいずれかを含む混合デバイスの一部として実施されてもよい。コンピューティングデバイス700はまた、ラップトップコンピュータおよびラップトップコンピュータ以外の構成を含むパーソナルコンピュータとして実施されてもよい。
【0070】
本開示は、本出願において説明される特定の実施形態に関して限定されるべきではなく、実施形態はさまざまな態様を例示することが意図されている。当業者には明らかであるように、その精神および範囲を逸脱することなく多くの変更および変形が行われてもよい。本明細書において列挙される方法および装置に加えて、本開示の範囲内の機能的に等価の方法および装置は、上記の説明から当業者には明らかとなるであろう。そのような変更および変形は、添付の特許請求の範囲内に含まれることが意図される。本開示は、添付の特許請求の範囲の条項、ならびにそのような特許請求の範囲が権利を有する等価物の全範囲によってのみ限定されるものとする。本開示が、当然変化しうるものである特定の方法、試薬、化合物組成、または生態系に限定されないことを理解されたい。また、本明細書において使用される用語が、特定の実施形態を説明することのみを目的としており、限定的であることは意図されていないことも理解されたい。
【0071】
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【0072】
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
【0073】
加えて、本開示の特徴または態様がマーカッシュ形式のグループに関して説明される場合、それにより本開示はまた、マーカッシュ形式のグループの構成要素の任意の個々の構成要素または構成要素のサブグループに関しても説明されることを、当業者であれば理解するであろう。
【0074】
書面による説明を行うことに関してなど、任意およびすべての目的のため、当業者によって理解されるであろうように、本明細書において開示されるあらゆる範囲はまた、任意およびすべての可能な下位範囲およびその下位範囲の組合せを網羅する。任意の一覧される範囲は、同範囲が少なくとも等価の2分の1、3分の1、4分の1、5分の1、10分の1などに分割されることを十分に説明および可能にするものと容易に理解されてもよい。非限定的な例として、本明細書において説明される各範囲は、下3分の1、中3分の1、および上3分の1などに容易に分解されてもよい。さらに当業者によって理解されるであろうように、「最大(up to)」、「少なくとも(at least)」などのようなすべての表現は、列挙される数を含み、引き続き上記で説明されている下位範囲に分解されてもよい範囲を示す。最後に、当業者には理解されるように、範囲は各々個別の構成要素を含む。したがって、たとえば、1〜3のセルを有するグループは、1、2、または3のセルを有するグループを称する。同様に、1〜5のセルを有するグループは、1、2、3、4、または5のセルを有するグループを称する、というようになる。
【0075】
以上の記述から、本開示のさまざまな実施形態は本明細書において例示の目的で説明されており、本開示の範囲および精神を逸脱することなくさまざまな変更が行われてもよいことが理解されよう。したがって、本明細書において開示されるさまざまな実施形態は、限定的であることを意図されておらず、真の範囲および精神は後段の特許請求の範囲により示される。