IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サービスナウ, インコーポレイテッドの特許一覧

<>
  • 特許-インテリジェントロードバランサ 図1
  • 特許-インテリジェントロードバランサ 図2
  • 特許-インテリジェントロードバランサ 図3
  • 特許-インテリジェントロードバランサ 図4
  • 特許-インテリジェントロードバランサ 図5
  • 特許-インテリジェントロードバランサ 図6
  • 特許-インテリジェントロードバランサ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-14
(45)【発行日】2023-08-22
(54)【発明の名称】インテリジェントロードバランサ
(51)【国際特許分類】
   H04L 47/125 20220101AFI20230815BHJP
   G06F 9/50 20060101ALI20230815BHJP
【FI】
H04L47/125
G06F9/50 150D
【請求項の数】 20
(21)【出願番号】P 2021577218
(86)(22)【出願日】2020-07-02
(65)【公表番号】
(43)【公表日】2022-09-20
(86)【国際出願番号】 US2020040750
(87)【国際公開番号】W WO2021007112
(87)【国際公開日】2021-01-14
【審査請求日】2022-02-28
(31)【優先権主張番号】16/504,044
(32)【優先日】2019-07-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】モハンティ アミタフ
(72)【発明者】
【氏名】ドゥルヴァスラ スリーニヴァス
【審査官】中川 幸洋
(56)【参考文献】
【文献】特表2014-502382(JP,A)
【文献】特開2019-012318(JP,A)
【文献】国際公開第2007/055222(WO,A1)
【文献】米国特許出願公開第2015/0287057(US,A1)
【文献】中国特許出願公開第107948330(CN,A)
【文献】国際公開第2014/049943(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/125
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
複数のアプリケーションサーバを含むデータセンタと、
複数のクライアントデバイスを含むクライアントネットワークであって、前記複数のクライアントデバイスは、前記アプリケーションサーバによって処理されるリクエストを生成する、前記クライアントネットワークと、
前記リクエストが前記クライアントネットワークと前記データセンタとの間をそれを介して移動するネットワークと、
予測されたネットワークイベントに基づいた優先度ツリーを使用して前記アプリケーションサーバ間で前記リクエストをルーティングするように構成された1つ以上のロードバランサと
を含み、前記1つ以上のロードバランサは、
時間間隔に対応する幅を有する時間ウィンドウを生成することと、
一連の将来の時間を通して前記時間ウィンドウを段階的に移動させることと、
前記一連の将来の時間毎に、前記時間ウィンドウに含まれる前記時間間隔内の個別の前記将来の時間における個別のリクエストタイプの予想されるリクエストの最も可能性の高い数を判定するために、前記時間ウィンドウに確率モデルを適用することと、
前記一連の将来の時間毎の前記個別のリクエストタイプの予想されるリクエストの前記最も可能性の高い数に基づいて、ビンパッキングルーチンを用いて、予想されるリクエスト及び予想されるリクエストタイプに対応するノードを含む優先度ツリーを生成することと、
前記ロードバランサにおいて受信したリクエストを前記優先度ツリーの個別のノードに割り当てることと、
前記個別のノードへの個別のリクエストの前記割り当てに基づいて、前記個別のリクエストを個別のアプリケーションサーバにルーティングすること
を含む動作を実施することによって前記優先度ツリーを生成及び使用する、
クラウドプラットフォーム。
【請求項2】
前記クライアントネットワークは、クライアントインスタンスの一部として前記ネットワークを介して前記データセンタと相互作用する、請求項1に記載のクラウドプラットフォーム。
【請求項3】
前記確率モデルは、ポアソン確率分布又はガウス確率分布の内の1つを含む、請求項1に記載のクラウドプラットフォーム。
【請求項4】
前記リクエストタイプは、前記クライアントデバイスによって生成されたリクエストと関連付けられた異なるタイプのデータ又はクエリに対応する、請求項1に記載のクラウドプラットフォーム。
【請求項5】
前記優先度ツリーは、リクエストがいつ到来すると予想されるかに基づいた、時間的に順序付けられたノードのセットを含む、請求項1に記載のクラウドプラットフォーム。
【請求項6】
前記1つ以上のロードバランサは、
前記個別のノードと関連付けられた時間が経過した後に、対応する要求が受信されなかったノードを削除するように、前記優先度ツリーを更新すること
を含む動作を更に実施する、請求項1に記載のクラウドプラットフォーム。
【請求項7】
前記1つ以上のロードバランサは、
前記時間ウィンドウが前記一連の将来の時間を通って移動するときにノードを追加するように前記優先度ツリーを更新すること
を含む動作を更に実施する、請求項1に記載のクラウドプラットフォーム。
【請求項8】
個別のノードにリクエストを割り当てることは、前記個別のリクエストの到来時間リクエストタイプの内の一方又は両方に基づく、請求項1に記載のクラウドプラットフォーム。
【請求項9】
時間ウィンドウを指定された時間増分で時間的に前方に移動させることであって、前記時間ウィンドウは、時間間隔に対応する幅を有することと、
前記時間ウィンドウが時間的に前方に移動させられるとき、前記時間ウィンドウが移動させられる個別の時間増分に対応する時間毎に1つ以上のリクエストタイプの各々に対してリクエストの予想数を判定することと、
異なる将来の時間における1つ以上のリクエストタイプの各々に対するリクエストの前記予想数に基づいて、ビンパッキングルーチンを用いて、ノードを含む優先度ツリーを生成することであって、各ノードは、将来の時間における個別のリクエストタイプの予想されるリクエストに対応することと、
リクエストが受信されるとき、各リクエストを前記優先度ツリーの個別のノードに割り当てることであって、個別のリクエストの割り当ては、前記個別のノードと関連付けられたネットワークリソースにルーティングされる前記個別のリクエストに対応すること
の動作を含む、ネットワーク上のリクエストを分散するための方法。
【請求項10】
前記ネットワークは、クラウドプラットフォーム上のクライアントインスタンスの一部である、請求項9に記載の方法。
【請求項11】
時間毎に1つ以上のリクエストタイプの各々に対してリクエストの前記予想数を判定することは、確率モデルを時間毎に前記時間ウィンドウに適用することを含む、請求項9に記載の方法。
【請求項12】
前記確率モデルは、ポアソン確率分布又はガウス確率分布の内の1つを含む、請求項11に記載の方法。
【請求項13】
前記1つ以上のリクエストタイプは、異なるタイプのデータに対する、又は前記ネットワーク上のクライアントデバイスにより異なるクエリ毎に生成されるリクエストを含む、請求項9に記載の方法。
【請求項14】
前記優先度ツリーは、リクエストがいつ到来すると予想されるかに基づいた、時間的に順序付けられたノードのセットを含む、請求項9に記載の方法。
【請求項15】
前記時間ウィンドウが時間的に前方に移動せられるときに前記優先度ツリーを更新することを更に含む、請求項9に記載の方法。
【請求項16】
格納されたルーチンを実行するように構成された処理コンポーネントと、
実行可能ルーチンを格納するように構成されたメモリコンポーネントであって、前記実行可能ルーチンは、前記処理コンポーネントによって実行される場合に、
時間ウィンドウを指定された時間増分で時間的に前方に移動させることであって、前記時間ウィンドウは、時間間隔に対応する幅を有することと、
前記時間ウィンドウが時間的に前方に移動させられるとき、前記時間ウィンドウが移動させられる個別の時間増分に対応する時間毎に1つ以上のリクエストタイプの各々に対してリクエストの予想数を判定することと、
異なる将来の時間における1つ以上のリクエストタイプの各々に対するリクエストの前記予想数に基づいて、ビンパッキングルーチンを用いて、ノードを含む優先度ツリーを生成することであって、各ノードは、将来の時間における個別のリクエストタイプの予想されるリクエストに対応することと、
リクエストが受信されるとき、各リクエストを前記優先度ツリーの個別のノードに割り当てることであって、個別のリクエストの割り当ては、前記個別のノードと関連付けられたネットワークリソースにルーティングされる前記個別のリクエストに対応すること
を含む動作を前記処理コンポーネントに実施させる、前記メモリコンポーネントと
を含む、ロードバランサ。
【請求項17】
前記ロードバランサは、クライアントインスタンス内の複数のクライアントデバイスから前記クライアントインスタンス内の複数のアプリケーションサーバにリクエストをルーティングするように構成される、請求項16に記載のロードバランサ。
【請求項18】
時間毎に1つ以上のリクエストタイプの各々に対してリクエストの前記予想数を判定することは、確率モデルを時間毎に前記時間ウィンドウに適用することを含む、請求項16に記載のロードバランサ。
【請求項19】
前記確率モデルは、ポアソン確率分布又はガウス確率分布の内の1つを含む、請求項18に記載のロードバランサ。
【請求項20】
前記実行可能ルーチンは、前記処理コンポーネントによって実行される場合に、
前記時間ウィンドウが時間的に前方に移動させられるとき、前記優先度ツリーを更新すること
を含む動作を前記処理コンポーネントに更に実施させる、請求項16に記載のロードバランサ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般的に、ネットワーク化された環境におけるトラフィックの負荷分散に関する。
【背景技術】
【0002】
このセクションは、以下で説明及び/又は主張される、本開示の様々な態様に関連し得る技術の様々な態様を読者に紹介することを意図している。この論考は、本開示の様々な態様のより良い理解を容易にするための背景情報を読者に提供するのに役立つと考えられる。したがって、これらの声明は、従来技術の承認としてではなく、この観点から読まれるべきであると理解すべきである。
【0003】
組織は、規模に関係なく、それらの継続的な運用及び成功のために、情報技術(IT)並びにデータ及びサービスへのアクセスに依存している。個別の組織のITインフラストラクチャは、関連するハードウェアリソース(例えば、コンピューティングデバイス、ロードバランサ、ファイアウォール、スイッチ等)とソフトウェアリソース(例えば、生産性ソフトウェア、データベースアプリケーション、及びカスタムアプリケーション等)とを有し得る。時間の経過と共に、益々多くの組織が、それらのITインフラストラクチャソリューションを補完又は強化するためにクラウドコンピューティングアプローチに関心を向けている。
【0004】
クラウドコンピューティングは、インターネットを介して一般的にアクセスされるコンピューティングリソースの共有に関連する。特に、クラウドコンピューティングインフラストラクチャは、個人及び/又は企業等のユーザが、サーバ、ストレージデバイス、ネットワーク、アプリケーション、及び/又はその他のコンピューティングベースのサービス等のコンピューティングリソースの共有プールにアクセスすることを可能にする。そうすることによって、ユーザは、離れた場所に設置されたコンピューティングリソースにオンデマンドでアクセスすることが可能であり、そのリソースは、様々なコンピューティング機能(例えば、大量のコンピューティングデータの格納及び/又は処理)を実施するために使用され得る。企業及びその他の組織のユーザにとって、クラウドコンピューティングは、高価なネットワーク機器を購入すること又はプライベートネットワークインフラストラクチャの確立に多大な時間を費やすこと等、多額の先行投資を発生させることなく、クラウドコンピューティングリソースにアクセスすることの柔軟性を提供する。代わりに、クラウドコンピューティングリソースを利用することによって、ユーザは、それらの企業のコア機能に集中するように、それらのリソースを向け直すことが可能である。
【0005】
クラウドコンピューティングインフラストラクチャ内のアプリケーションノード間でトラフィックをルーティングするためのアプローチでは、実装が容易で便利な“グリーディ”アルゴリズム(例えば、単一の基準又は条件に基づいてトラフィック又はリクエストを割り当てるアルゴリズム)がしばしば用いられる。こうした“グリーディ”アプローチは、通常、単一の考慮事項にそれらの焦点を合わせることに起因して、プラットフォーム全体での最適な結果を達成しない。しかしながら、プラットフォームに渡ってより最適な結果を提供し得る他のアプローチ、例えば、動的アプローチは、計算量がより多く、実装が難しく、通常、複数の要因を行う基本となる最適なルーティングソリューションを判定するために、リクエスト自体に加えて入力のセットを必要とする。動的ルーティングに対するこうした要件は、通常、リアルタイムのシナリオに合致しないことがある。
【発明の概要】
【課題を解決するための手段】
【0006】
本明細書に開示される幾つかの実施形態の概要を以下に記載する。これらの態様は、単に、読者にこれらの幾つかの実施形態の簡単な概要を提供するために提示されており、これらの態様は、この開示の範囲を限定することを意図していないことを理解すべきである。実際、この開示は、以下に記載されないことがある様々な態様を包含し得る。
【0007】
本アプローチは、動的ルーティング決定を容易にするために、時間の経過と共に増分又は移動させられる時間ウィンドウを用いる。時間ウィンドウは、ウィンドウが増分させられるとき、異なる時間におけるトラフィックを推定又は予測するように、ウィンドウに適用されるポアソン又はガウス確率分布等の適切な確率分布モデルに基づいて着信リクエストトラフィックを予測又は推定するために使用され得る。各リクエスト又はトラフィックイベントの到来時間及び完了時間がモデル化され得るように、着信リクエストに対する推定実行時間も計算され得る。本明細書で説明するように、プロセッサ実装ルーチンは、時間ウィンドウの着信トラフィック推定及び推定実行時間によって定義されるサブ問題を効率的に解決するために使用され、原因となる又は全体のルーティング決定問題が、リアルタイムコンテキストを含む動的プロセスを使用して効率的に解決されることを可能にする。
【0008】
本開示の様々な態様に関連して、上述の機構の様々な改良が存在し得る。これらの様々な態様に、更なる機構も同様に組み込まれ得る。これらの改良点及び追加の機構は、個々に、又は任意の組み合わせで存在し得る。実例として、説明する実施形態の内の1つ以上に関して以下に論じる様々な機構は、本開示の上で説明した態様の内の何れかに、単独で又は任意の組み合わせで組み込まれ得る。上で提示した簡単な概要は、請求される主題を限定することなく、本開示の実施形態の幾つかの態様及びコンテキストを読者に習熟させることのみを意図している。
【0009】
この開示の様々な態様は、以下の詳細な説明を読み、以下の図面を参照すると、より良く理解され得る。
【図面の簡単な説明】
【0010】
図1】本開示の実施形態が動作し得るクラウドアーキテクチャの実施形態のブロック図である。
図2】本開示の実施形態が動作し得るマルチインスタンスクラウドアーキテクチャの実施形態の概略図である。
図3】本開示の態様に従った、図1又は図2に存在し得るコンピューティングシステムで利用されるコンピューティングデバイスのブロック図である。
図4】本開示の態様に従った、仮想サーバがクライアントインスタンスをサポート及び有効化する実施形態を示すブロック図である。
図5】本開示の態様に従った、時間の各ウィンドウ内の予測されたイベント又はリクエストに関連して、時間の経過と共にスライドする時間ウィンドウを描写する。
図6】本開示の態様に従った、ネットワークトラフィックをルーティングするのに適した優先度ツリーの生成での使用に適したステップ及びパラメータのプロセスフローを描写する。
図7】本開示の態様に従った、リクエストキューに到来するネットワークトラフィックをルーティングするのに適した優先度ツリーの一例を描写する。
【発明を実施するための形態】
【0011】
1つ以上の具体的な実施形態が以下に説明されるであろう。これらの実施形態の簡潔な説明を提供するために、実際の実装の全ての機構が明細書に説明されているわけではない。任意のエンジニアリング又は設計プロジェクトにおいて見られるように、そうした何れかの実際の実装の開発では、ある実装から別の実装に変化し得る、システム関連及び企業関連の制約への準拠等、開発者固有の目標を達成するために、実装固有の多数の決定がなされなければならないことを理解すべきである。更に、そうした開発努力は複雑で時間がかかり得るが、それにもかかわらず、この開示の利益を有する当業者にとっては、設計、製作、及び製造の日常的な作業であろうことを理解すべきである。
【0012】
本明細書で使用されるとき、用語“コンピューティングシステム”は、非限定的に、単一のコンピュータ、仮想マシン、仮想コンテナ、ホスト、サーバ、ラップトップ、及び/若しくはモバイルデバイス等の電子コンピューティングデバイスを指し、又はコンピューティングシステム上で、若しくはコンピューティングシステムによって実施されると説明される機能を実施するために共同する複数の電子コンピューティングデバイスを指す。本明細書で使用されるとき、用語“媒体”は、その上に格納されると説明されるコンテンツを共に格納する、1つ以上の非一時的コンピュータ可読物理媒体を指す。実施形態は、不揮発性二次的ストレージ、リードオンリーメモリ(ROM)、及び/又はランダムアクセスメモリ(RAM)を含み得る。本明細書で使用されるとき、用語“アプリケーション”は、1つ以上のコンピューティングモジュール、プログラム、プロセス、ワークロード、スレッド、及び/又はコンピューティングシステムによって実行されるコンピューティング命令のセットを指す。アプリケーションの例示的な実施形態は、ソフトウェアモジュール、ソフトウェアオブジェクト、ソフトウェアインスタンス、及び/又はその他のタイプの実行可能コードを含む。
【0013】
クラウドコンピューティングインフラストラクチャ内のリソース(例えば、アプリケーションノード)間のトラフィックをルーティングするためのアプローチは、現在のルーティングリクエストを処理するための単一の要因又は基準を通常考慮し、したがって実装が容易で便利な“グリーディ”アルゴリズムを通常用いる。例として、“グリーディ”アルゴリズムは、“ラウンドロビン”アプローチ、又は最も長くアイドル状態であるノードが選択されるアプローチであり得る。そうした“グリーディ”アプローチは、しかしながら、即時のステップ若しくはリクエストを超えたその他の関連する要因の考慮不足に起因してプラットフォーム全体の最適な結果を通常達成しない、予想される将来のネットワークトラフィック負荷及び/又は特定のリソースを必要とする予想されるリクエスト若しくはトラフィック負荷等の他の要因を考慮していないことがある。他の入力及び要因を考慮に入れる他のアプローチ、例えば、動的アプローチは、特に非ローカルなコンテキストにおいて、より最適な結果を提供し得る。しかしながら、そうした動的アプローチは計算量がより多く、実装が難しく、通常、最適なルーティングソリューションを判定するためにリクエスト自体に加えて入力を必要とし、それは、そうしたアプローチをリアルタイムルーティングシナリオでの使用に適さなくし得る。
【0014】
前述のことを念頭に置いて、本アプローチの一実装では、動的ルーティングに対するトラフィック予測の態様は、時間の経過と共に移動又は増分させられる時間ウィンドウを使用して対処され得る。幾つかの実施形態に従えば、所与のウィンドウ内で、個別の時間において、個別の負荷又はトラフィックタイプに対して予測されるトラフィックは、適切な確率分布モデル(例えば、ポアソン及びガウス等)を使用してマッピングされ得、それによって、所与の時間ウィンドウ内のモデル化されたタイプのネットワークイベント(例えば、リクエスト)の推定又は予想を提供する。また、所与のイベントに対するランタイム推定の態様は、様々な要因(例えば、入力、リクエスト時間、及びサーバ統計等)を説明する線形回帰モデル等の適切な統計モデルを使用して推定され得る。これらの別個の問題のプロセッサベースの解決は、リアルタイムコンテキストを含む、動的ネットワークトラフィックルーティングの結果の改善を可能にし得る。
【0015】
以下の図は、マルチインスタンスフレームワークで組織にサービスを提供するために用いられ得、本アプローチが用いられ得る様々なタイプの一般化されたシステムアーキテクチャ又は構成に関する。それに応じて、これらのシステム及びプラットフォームの例は、本明細書で論じられる技法が実装され得、さもなければ利用され得るシステム及びプラットフォームにも関し得る。ここで図1に目を向けると、本開示の実施形態が動作し得るクラウドコンピューティングシステム10の実施形態の概略図が説明されている。クラウドコンピューティングシステム10は、クライアントネットワーク12、ネットワーク14(例えば、インターネット)、及びクラウドベースのプラットフォーム16を含み得る。幾つかの実装では、クラウドベースのプラットフォーム16は、構成管理データベース(CMDB)プラットフォームであり得る。一実施形態では、クライアントネットワーク12は、スイッチ、サーバ、及びルータを含むがこれらに限定されない様々なネットワークデバイスを有するローカルエリアネットワーク(LAN)等のローカルプライベートネットワークであり得る。別の実施形態では、クライアントネットワーク12は、1つ以上のLAN、仮想ネットワーク、データセンタ18、及び/又はその他のリモートネットワークを含み得る企業ネットワークを表す。図1に示すように、クライアントネットワーク12は、クライアントデバイスが相互に及び/又はプラットフォーム16をホストするネットワークと通信可能であるように、1つ以上のクライアントデバイス20A、20B、及び20Cに接続可能である。クライアントデバイス20は、例えば、ウェブブラウザアプリケーションを介して、又はクライアントデバイス20とプラットフォーム16との間のゲートウェイとして機能し得るエッジデバイスを介してクラウドコンピューティングデバイスにアクセスする、モノのインターネット(IoT)と一般的に称されるコンピューティングシステム及び/又はその他のタイプのコンピューティングデバイスであり得る。図1はまた、プラットフォーム16、他の外部アプリケーション、データソース、及びサービスをホストするネットワークとクライアントネットワーク12との間のデータの通信を容易にする管理、計装、及び発見(MID)サーバ24等の運営若しくは管理デバイス、エージェント、又はサーバをクライアントネットワーク12が含むことを説明する。図1には特に説明されていないが、クライアントネットワーク12はまた、接続ネットワークデバイス(例えば、ゲートウェイ若しくはルータ)、又は顧客ファイアウォール若しくは侵入保護システムを実装するデバイスの組み合わせを含み得る。
【0016】
説明する実施形態に対して、図1は、クライアントネットワーク12がネットワーク14に結合されることを説明する。ネットワーク14は、クライアントデバイス20とプラットフォーム16をホストするネットワークとの間でデータを転送するための他のLAN、広域ネットワーク(WAN)、インターネット、及び/又は他のリモートネットワーク等の1つ以上のコンピューティングネットワークを含み得る。ネットワーク14内のコンピューティングネットワークの各々は、電気的及び/又は光学的ドメインで動作する有線及び/又は無線のプログラミング可能デバイスを含み得る。例えば、ネットワーク14は、セルラーネットワーク(例えば、Global System for Mobile Communications(GSM)ベースのセルラーネットワーク)、IEEE 802.11ネットワーク、及び/又はその他の適切な無線ベースのネットワーク等の無線ネットワークを含み得る。ネットワーク14はまた、伝送制御プロトコル(TCP)及びインターネットプロトコル(IP)等の任意の数のネットワーク通信プロトコルを用い得る。図1には明示的に示されていないが、ネットワーク14は、サーバ、ルータ、ネットワークスイッチ、及び/又はネットワーク14を介してデータを転送するように構成されたその他のネットワークハードウェアデバイス等の様々なネットワークデバイスを含み得る。
【0017】
図1において、プラットフォーム16をホストするネットワークは、クライアントネットワーク12及びネットワーク14を介してクライアントデバイス20と通信可能であるリモートネットワーク(例えば、クラウドネットワーク)であり得る。プラットフォーム16をホストするネットワークは、クライアントデバイス20及び/又はクライアントネットワーク12に追加のコンピューティングリソースを提供する。例えば、プラットフォーム16をホストするネットワークを利用することによって、クライアントデバイス20のユーザは、様々な企業、IT、及び/又は他の組織関連の機能に対するアプリケーションを構築及び実行することが可能である。一実施形態では、プラットフォーム16をホストするネットワークは、1つ以上のデータセンタ18上に実装され、各データセンタは、異なる地理的場所に対応し得る。データセンタ18の各々は、複数の仮想サーバ26(本明細書では、アプリケーションノード、アプリケーションサーバ、仮想サーバインスタンス、アプリケーションインスタンス、又はアプリケーションサーバインスタンスとも称される)を含み、各仮想サーバ26は、単一の電子コンピューティングデバイス(例えば、単一の物理ハードウェアサーバ)等の物理コンピューティングシステム上に、又は複数のコンピューティングデバイス(例えば、複数の物理ハードウェアサーバ)に渡って実装され得る。仮想サーバ26の例は、ウェブサーバ(例えば、ユニタリーApacheインストール)、アプリケーションサーバ(例えば、ユニタリーJAVA仮想マシン)、及び/又はデータベースサーバ(例えば、ユニタリーリレーショナルデータベース管理システム(RDBMS)カタログ)を含むが、これらに限定されない。
【0018】
図1に説明するように、1つ以上のロードバランサ28は、クライアントデバイス20からクラウドプラットフォームリソースにトラフィックをルーティングするために提供され得る。こうしたロードバランサ28は、ハードウェア、ソフトウェア、及びファームウェアの任意の適切な組み合わせとして実装され得る。例として、描写するシナリオでは、1つ以上のロードバランサ28は、クライアントデバイス20と仮想サーバ(例えば、アプリケーションノード又はサーバ)26との間に位置付けられ得る。このシナリオでは、クライアントデバイス20によってなされるリクエストは、本明細書で論じる技法に従って、個別のアプリケーションノード又はサーバにルーティングされ得る。
【0019】
プラットフォーム16内のコンピューティングリソースを利用するために、ネットワークオペレータは、様々なコンピューティングインフラストラクチャを使用してデータセンタ18を構成するように選択し得る。一実施形態では、サーバインスタンス26の内の1つが、複数の顧客からのリクエストを処理し、サービスを提供するように、データセンタ18の内の1つ以上は、マルチテナントクラウドアーキテクチャを使用して構成される。マルチテナントクラウドアーキテクチャを備えたデータセンタ18は、複数の顧客からのデータを混合して格納し、複数の顧客インスタンスは仮想サーバ26の内の1つに割り当てられる。マルチテナントクラウドアーキテクチャでは、特定の仮想サーバ26は、様々な顧客のデータ及びその他の情報を区別し、分離する。例えば、マルチテナントクラウドアーキテクチャは、各顧客からのデータを識別及び分離するために、顧客毎に特定の識別子を割り当て得る。一般的に、マルチテナントクラウドアーキテクチャを実装することは、サーバインスタンス26の内の特定の1つの障害が、該特定のサーバインスタンスに割り当てられた全ての顧客に対して停止を生じさせる等、様々な欠点に悩まされる。
【0020】
別の実施形態では、データセンタ18の内の1つ以上は、全ての顧客に独自のユニークな1つ以上の顧客インスタンスを提供するように、マルチインスタンスクラウドアーキテクチャを使用して構成される。例えば、マルチインスタンスクラウドアーキテクチャは、独自の専用のアプリケーションサーバと専用のデータベースサーバとを各顧客インスタンスに提供し得る。他の例では、マルチインスタンスクラウドアーキテクチャは、顧客インスタンス毎に、1つ以上の専用のウェブサーバ、1つ以上の専用のアプリケーションサーバ、及び1つ以上のデータベースサーバ等の、単一の物理若しくは仮想サーバ26、並びに/又は物理及び/若しくは仮想サーバ26のその他の組み合わせを配備し得る。マルチインスタンスクラウドアーキテクチャでは、複数の顧客インスタンスは、1つ以上の個別のハードウェアサーバ上にインストールされ、各顧客インスタンスには、コンピューティングメモリ、ストレージ、処理能力等の物理サーバリソースの幾つかの部分が割り当てられる。そうすることによって、各顧客インスタンスは、データ分離、顧客がプラットフォーム16にアクセスするための比較的少ないダウンタイム、及び顧客主導のアップグレードスケジュールの利点を提供する独自のユニークなソフトウェアスタックを有する。マルチインスタンスクラウドアーキテクチャ内に顧客インスタンスを実装する例は、図2を参照して以下でより詳細に論じられるであろう。
【0021】
図2は、本開示の実施形態が動作し得るマルチインスタンスクラウドアーキテクチャ100の実施形態の概略図である。図2は、マルチインスタンスクラウドアーキテクチャ100が、相互に地理的に分離され得る2つの(例えば、対にされた)データセンタ18A及び18Bに接続するクライアントネットワーク12及びネットワーク14を含むことを説明する。例として図2を使用すると、ネットワーク環境及びサービスプロバイダクラウドインフラストラクチャクライアントインスタンス102(本明細書ではクライアントインスタンス102とも称される)は、専用の仮想サーバ(例えば、仮想サーバ26A、26B、26C、及び26D)並びに専用のデータベースサーバ(例えば、仮想データベースサーバ104A及び104B)と関連付けられる(例えば、それらによってサポート及び有効化される)。別の言い方をすれば、仮想サーバ26A~26D並びに仮想データベースサーバ104A及び104Bは、他のクライアントインスタンスと共有されず、個別のクライアントインスタンス102に固有である。描写する例では、クライアントインスタンス102の可用性を容易にするために、仮想サーバ26A~26D並びに仮想データベースサーバ104A及び104Bは、データセンタ18の内の1つがバックアップデータセンタとして機能するように、2つの異なるデータセンタ18A及び18Bに割り当てられる。マルチインスタンスクラウドアーキテクチャ100の他の実施形態は、ウェブサーバ等の他のタイプの専用の仮想サーバを含み得る。例えば、クライアントインスタンス102は、専用の仮想サーバ26A~26D、専用の仮想データベースサーバ104A及び104B、並びに追加の専用の仮想ウェブサーバ(図2には示さず)と関連付けられ(例えば、それらによってサポート及び有効化され)得る。
【0022】
図1及び図2は、クラウドコンピューティングシステム10及びマルチインスタンスクラウドアーキテクチャ100の特定の実施形態を夫々説明するが、開示は、図1及び図2に説明する特定の実施形態に限定されない。実例として、図1は、プラットフォーム16がデータセンタを使用して実装されることを説明するが、プラットフォーム16の他の実施形態は、データセンタに限定されず、他のタイプのリモートネットワークインフラストラクチャを利用し得る。更に、本開示の他の実施形態は、1つ以上の異なる仮想サーバを単一の仮想サーバに結合し得、又は逆に、複数の仮想サーバを使用して単一の仮想サーバに起因する動作を実施し得る。実例として、例として図2を使用すると、仮想サーバ26A、26B、26C、26D、及び仮想データベースサーバ104A、104Bは、単一の仮想サーバに結合され得る。更に、本アプローチは、マルチテナントアーキテクチャ、一般化されたクライアント/サーバ実装、及び/又は本明細書で論じた動作の内の幾つか又は全てを実施するように構成された単一の物理プロセッサベースのデバイスを含むがこれらに限定されない他のアーキテクチャ又は構成で実装され得る。同様に、実装の論考を容易にするために仮想サーバ又はマシンが言及され得るが、必要に応じて物理サーバが代わりに用いられ得る。図1及び図2の使用及び論考は、説明及び解説を容易にするための単なる例であり、開示をそこに説明する特定の例に限定することを意図しない。
【0023】
理解され得るように、図1及び図2に関して論じた個別のアーキテクチャ及びフレームワークは、様々なタイプのコンピューティングシステム(例えば、サーバ、ワークステーション、クライアントデバイス、ラップトップ、タブレットコンピュータ、及び携帯電話等)全体を組み込む。完全を期すために、こうしたシステムで通常見られるコンポーネントの簡単で高レベルの概要が提供される。理解され得るように、本概要は、そうしたコンピューティングシステムにおいて典型的なコンポーネントの高レベルの一般化された図を単に提供することを意図しており、論じられた又は論考から省かれたコンポーネントに関して限定的であるとみなされるべきではない。
【0024】
背景として、本アプローチは、図3に示されるような1つ以上のプロセッサベースのシステムを使用して実施され得ることが理解され得る。同様に、本アプローチで利用されるアプリケーション及び/又はデータベースは、そうしたプロセッサベースのシステム上に格納され得、用いられ得、及び/又は維持され得る。本コンテキストにおいて、ロードバランサ28は、図3に示されるように、プロセッサベースのシステムとして提供され得、プロセッサベースのシステムのプロセッサ上で格納されたルーチンを実行することによって、本明細書で論じるような動作(例えば、予測されるネットワークトラフィックに対応する優先度ツリーの生成及び/又は使用に関連する動作)を実施し得る。理解され得るように、図3に示されるようなこうしたシステムは、分散コンピューティング環境、ネットワーク化された環境、又はその他のマルチコンピュータプラットフォーム若しくはアーキテクチャ内に存在し得る。同様に、図3に示されるシステム等のシステムは、本アプローチが実装され得る1つ以上の仮想環境又は計算インスタンスをサポートすること又はそれらと通信することに使用され得る。
【0025】
これを念頭に置いて、例示的なコンピュータシステムは、図3に描写されるコンピュータコンポーネントの内の幾つか又は全てを含み得る。図3は、一般的に、コンピューティングシステム200の例示的なコンポーネントと、1つ以上のバス204に沿う等したそれらの潜在的な相互接続部又は通信経路とのブロック図を説明している。説明するように、コンピューティングシステム200は、1つ以上のプロセッサ202、1つ以上のバス204、メモリ206、入力デバイス208、電源210、ネットワークインターフェース212、ユーザインターフェース210、及び/又は本明細書に説明する機能を実施するのに有用なその他のコンピュータコンポーネント等の様々なハードウェアコンポーネントを非限定的に含み得る。
【0026】
1つ以上のプロセッサ202は、メモリ206内に格納された命令を実施することが可能な1つ以上のマイクロプロセッサを含み得る。追加的又は代替的に、1つ以上のプロセッサ202は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、及び/又はメモリ206から命令を呼び出すことなく本明細書で論じる機能の内の幾つか又は全てを実施するように設計されたその他のデバイスを含み得る。
【0027】
その他のコンポーネントに関して、1つ以上のバス204は、コンピューティングシステム200の様々なコンポーネント間にデータ及び/又は電力を提供するための適切な電気チャネルを含む。メモリ206は、任意の有形の非一時的でコンピュータ可読のストレージ媒体を含み得る。図1には単一のブロックとして示されているが、メモリ206は、1つ以上の物理的な場所に、同じ又は異なるタイプの複数の物理ユニットを使用して実装され得る。入力デバイス208は、1つ以上のプロセッサ202にデータ及び/又はコマンドを入力するための構造体に対応する。例えば、入力デバイス208は、マウス、タッチパッド、タッチスクリーン、及びキーボード等を含み得る。電源210は、ライン電源及び/又はバッテリ電源等、コンピューティングデバイス200の様々なコンポーネントの任意の適した電力源であり得る。ネットワークインターフェース212は、1つ以上のネットワーク(例えば、通信チャネル)を介して他のデバイスと通信可能な1つ以上のトランシーバを含む。ネットワークインターフェース212は、有線ネットワークインターフェース又は無線ネットワークインターフェースを提供し得る。ユーザインターフェース214は、1つ以上のプロセッサ202からそれに転送されたテキスト又は画像を表示するように構成されたディスプレイを含み得る。ディスプレイに加えて及び/又は代えて、ユーザインターフェース214は、照明(例えば、LED)及びスピーカー等の、ユーザとインターフェースするための他のデバイスを含み得る。
【0028】
図4に目を向けると、この図は、1つ以上の開示された実施形態に従った、仮想サーバ300がクライアントインスタンス102をサポート及び有効化する実施形態を説明するブロック図である。より具体的には、図4は、上で論じたクラウドベースのプラットフォーム16を含む、サービスプロバイダのクラウドインフラストラクチャの一部分の例を説明する。クラウドベースのプラットフォーム16は、(例えば、クライアントデバイス20のウェブブラウザを介して)クライアントインスタンス102内で実行するネットワークアプリケーションへのユーザインターフェースを提供するように、ネットワーク14を介してクライアントデバイス20に接続される。クライアントインスタンス102は、図2に関して解説したものと同様の仮想サーバ26によってサポートされ、クライアントインスタンス102内の本明細書に説明する開示された機能に対するサポートを示すためにここに説明されている。クラウドプロバイダインフラストラクチャは、一般的に、クライアントデバイス20等の複数のエンドユーザデバイスを同時にサポートするように構成され、各エンドユーザデバイスは、単一のクライアントインスタンス102と通信する。また、クラウドプロバイダインフラストラクチャは、クライアントインスタンス102等の任意の数のクライアントインスタンスを同時にサポートするように構成され得、インスタンスの各々は、1つ以上のエンドユーザデバイスと通信する。上述のように、エンドユーザはまた、ウェブブラウザ内で実行されるアプリケーションを使用してクライアントインスタンス102とインターフェースし得る。
【0029】
前述のことを念頭に置いて、本アプローチは、本明細書で説明するようなクラウドプラットフォームのクライアントインスタンスを含むネットワーク環境におけるリクエスト又はその他のネットワークトラフィックをルーティングする、さもなければ管理する使用に適し得る。例として、本アプローチは、そうしたリクエストを処理する幾つかのアプリケーションノード間のリクエスト応答時間及び負荷分散を改善するように、そうしたクラウドプラットフォーム環境においてウェブアプリケーションによりなされるリクエストの負荷分散に有用であり得る。
【0030】
本アプローチとは対照的に、従来の負荷分散アプローチは、通常、負荷の現在の状態に基づいて動作し、着信トラフィックのポリシーベースのルーティングを実施する。例として、そうしたアプローチは、潜在的に局所的には最適であるが、他の要因を考慮せずに単一の要因又は考慮事項を考慮するのみであることに起因して、より広い(例えば、プラットフォーム全体の)スケールでは最適ではないことがある“グリーディ”アプローチとして特徴付けられるアルゴリズム分類にあるものを用い得る。
【0031】
このことを念頭に置いて、本アプローチは、他の動的アプローチとは異なり、リアルタイムの方法での使用に適し得る、負荷分散に対する動的プログラミングベースのアプローチを提供する。例として、本アプローチは、プラットフォーム又はより広いスケールでより良い全体的な性能を改善する(“グリーディ”ルーティングアプローチと矛盾するであろう)リクエストの予想される将来の量又はタイプに起因するリクエストへの応答を意図的に遅延させる等の決定をなし得る。
【0032】
幾つかの実装形態では、定義された幅を有する時間ウィンドウがルーティング決定をなすために用いられる動的ルーティングアプローチが用いられる。この時間ウィンドウは、定義された距離で増分させられ(つまり、スライドし)得、又は定義されたレートでオフセットし得る。このアプローチに従って、適切な確率モデルを使用する等して、所与の時間における時間ウィンドウ(例えば、将来を見据えた時間ウィンドウ)と関連付けられる着信トラフィック(例えば、アプリケーション又はその他のネットワークリクエスト)が予測される。また、機械学習コンテキストで実装され得る線形回帰モデル又はその他の適切な統計モデルを使用する等して、着信リクエストの推定実行時間が計算され得、さもなければ判定され得る。幾つかのそうした実施形態では、様々な要因が考慮され得、又は統計モデル(非限定的に、ユーザ若しくはシステム入力、リクエスト時間、及び/又はサーバ統計等)に入力され得る。組み合わせて、時間ウィンドウ(すなわち、着信トラフィック予測)タスク及び推定実行時間タスクの両方は、そうした動的ルーティングアプローチにより通常使用される追加の先行入力なしにリアルタイムの動的ルーティングを可能にすることを含め、動的ルーティングの性能を改善するために使用され得る。
【0033】
ネットワーク又はリクエストトラフィック(本明細書では幾つかの箇所で“イベント”と称される)の予測に関連する第1のタスクに関して、所与の時間ウィンドウ内のトラフィック予測は、個別の時間ウィンドウ内の所与のタイプのトラフィックに対する予測分布を提供する(例えば、複数のタイプのリクエスト又はイベントが所与の時間、モデル化され得る)適切な確率分布モデル(例えば、ポアソン、ガウス分布、又はその他の適切な確率分布ベース)によって表され得る。例として、着信トラフィックをモデル化するためにポアソン分布が使用される実装のコンテキストでは、特定の負荷タイプの着信ネットワークトラフィックの確率モデルは、定義された、さもなければ既知のレートで既知の増分又はオフセットを進める固定幅を有する所与の時間ウィンドウに対して計算される。
【0034】
そうした一時間ウィンドウの実装の一例は、解説を容易にするために図5に示されている。描写する例では、10秒の幅(δ)322を有するウィンドウ320は、5秒毎に5秒刻み(ε)324で移動させられる(概念的には、ウィンドウ320は、時間の経過と共に移動させられている単一のウィンドウ320、又は時間の経過と共に相互に時間的にオフセットされて生成されている一連のウィンドウ320とみなされ得る)。時間の経過は、図の上部に沿って説明されるタイムライン(秒単位)によって伝えられる。
【0035】
本コンテキストにおいて、ウィンドウ320は、タイムラインに沿った異なる時間におけるトラフィック(例えば、予測されるイベント又はリクエスト)を推定又は予測する目的で、確率分布と関連付けられる。このコンテキストにおいて、関連するパラメータ化された確率分布に基づいた各ウィンドウ326は、対象の時間枠内のトラフィック(例えば、アプリケーションリクエスト)の推定としてタイムラインにマッピングされ得る個別の対応する時間間隔に対する、予測されるイベント又はリクエスト326のセットを確率的に推定するために使用され得る。
【0036】
例として、特定の負荷タイプの着信トラフィックが所与のウィンドウ320に対して確率的に計算されるように、将来のネットワークトラフィックを予測するためにポアソン分布が用いられ得る。これは、
【数1】
として表され得、lは所与の負荷タイプ(例えば、リクエスト)に対応し、λtlは時間間隔tで到来するlタイプのリクエスト又はイベントの平均数である。したがって、式(1)に従って、所与の時間間隔におけるk(例えば、1、2、3、・・・、n)個のイベントの確率が与えられる。
【0037】
これを念頭に置いて、図6に目を向けると、幾つかの実施形態では、ウィンドウ幅δ342及び増分又はオフセット340εは、ネットワークトラフィックの予測に用いられる時間ウィンドウ320を生成、さもなければ判定する(ステップ344)ために選択される。ウィンドウ幅δ342は、問題のネットワークトラフィックタイプ(すなわち、負荷タイプ350)を確率的にモデル化するために(又はより一般的に、1つ以上の確率分布360をパラメータ化する(ステップ352)ために使用される)ポアソン分布を用いる実装におけるポアソン分布式の時間間隔として最初に使用され得る。対象となる負荷タイプl350(例えば、幾つかの実装では、小リクエスト、中リクエスト、及び大リクエスト等として一般化及び/又はビニングされ得る、異なるタイプのデータ、クエリ、又はその他の相互作用に対応するリクエスト)毎に、ポアソン式は、時間間隔δ342に対して別個に適用される。異なる負荷タイプ(例えば、小、中、及び大)は、異なる確率を各々有し得る。上記の定式化におけるkの値は、(確率が評価されているウィンドウ320内のイベントの数を表す)1からnまでその後変更され得、個別のウィンドウ320内の所与の各負荷タイプlのイベントの最も可能性の高い数を判定するために最大確率が計算される。動的計画法のコンテキストでの使用に適したもの等のビンパッキングルーチンは、この方法で計算され、時間間隔tで到来するlタイプのリクエスト又はイベントの平均数に対応するλtlに対する値に基づいて優先度ツリー364(例えば、仮想優先度キュー)を計算する(ステップ362)ために使用され得る。そうしたアプローチに従うと、優先度ツリー364は、予測されるネットワークトラフィック(例えば、アプリケーションリクエスト)の予想される到着時間を有する仮想ノードから構成される。各ノードは、リソースが割り当てられ得るアプリケーションリソース(例えば、アプリケーションノード)及びノードが割り当てられるべき順序(すなわち、優先度)に対応し得る。
【0038】
図7に目を向けると、本アプローチの態様を更に解説するために、リクエストキュー380と組み合わせたそうした優先度ツリー364の使用例が説明されている。以下の論考に関して理解され得るように、1つ以上のロードバランサ28(図1)に到来する実際のネットワークトラフィックは、クラウドプラットフォームに渡って改善されたルーティング性能を達成するために、本アプローチに従って割り当てられ得、ルーティングされ得る。
【0039】
この例では、優先度ツリー364は、最初に、仮想ノード370の階層からなり、各々は、本明細書で論じられるように、スライディングウィンドウ320及び関連する確率分布を考慮して判定されるように、リクエストが予想される負荷タイプリクエストl及び時間t(すなわち、Ilt)によって定義される。モデル化された負荷タイプlの実際のネットワークトラフィックが時間t(すなわち、Tlt)にロードバランサに到来すると、それは、時間t及び負荷タイプlに関して最も近い仮想ノードに一致され、実際のトラフィックイベント(例えば、リクエスト)は、関連付けられたリソース(例えば、アプリケーションノード)にルーティングされる。一致した仮想ノードは、以前に仮定又は予測された(すなわち、見込みの)タスクであったものへの実際のタスク(例えば、リクエスト)の割り当てを指し示す実際のノードと、ツリー内で置き換えられる。したがって、時間が経過するにつれて、優先度ツリー364のノード370は、着信する実際のタスクによって“満たされる”。タスクがタイムリーな方法で到来しない(すなわち、満たされない)それらのノード370は、それらの関連する時間が経過し、増分させられた時間ウィンドウと関連付けられた新たな予測トラフィックに基づいて(すなわち、問題の時間tでのタスクlに対するウィンドウ320と関連付けられた確率分布に基づいて)優先度キュー又はツリーが時間的に前方に延長される場合に、優先度キューからドロップ又はプルーニングされる。例えば、優先度キュー又はツリー364は、ウィンドウ320が時間の経過と共に移動させられる同じ増分εで(失効した未割り当てのノード370を除去し、予測されたトラフィックに基づいて新たなノードを追加して)増分させられ得る。
【0040】
所与のモデルは、期限切れした(すなわち、実際のトラフィックリクエスト又はイベントに一致しない)ノード370の数に基づいて、有効性及び効率について評価され得る。したがって、ウィンドウ320のパラメータ化、所与のタスクタイプl及び/若しくは時間tに用いられる確率分布のパラメータ化、並びに/又は確率分布のタイプ(例えば、ポアソン、ガウス、及び均一等)は、期限切れのノード370を最小化するために、時間の経過と共に調整され得る。このようにして、プラットフォームに渡るトラフィックルーティングは、動的な方法で改善され得る。
【0041】
上で説明した特定の実施形態は例として示され、これらの実施形態は、様々な修正及び代替形態の影響を受けやすいことがあることを理解すべきである。特許請求の範囲は、開示された特定の形態に限定されることを意図せず、むしろ、この開示の精神及び範囲内にある全ての修正物、均等物、及び代替物をカバーすることを意図することを更に理解すべきである。
【0042】
本明細書で提示及び請求される技法は、本技術分野を明らかに改善し、したがって、抽象的、無形的、又は純粋に理論的ではない実践的性質の有形物及び具体例に言及及び適用される。更に、この明細書の末尾に添付された何れかの請求項が“・・・[機能を][実施]するための手段”又は“・・・[機能を][実施]するためのステップ”として指定された1つ以上の要素を含む場合、そうした要素は35U.S.C112(f)の下で解釈されるべきであることを意図する。しかしながら、任意の他の何れかの方法で指定された要素を含む何れかの請求項に対しては、そうした要素は35U.S.C.112(f)の下で解釈されるべきではないことを意図する。
図1
図2
図3
図4
図5
図6
図7