(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-07
(45)【発行日】2022-02-16
(54)【発明の名称】リソーススケジューリングのための方法およびシステム
(51)【国際特許分類】
H04L 67/00 20220101AFI20220208BHJP
G06F 9/48 20060101ALI20220208BHJP
G06F 9/50 20060101ALI20220208BHJP
【FI】
H04L67/00
G06F9/48 300G
G06F9/50 120A
G06F9/50 150D
(21)【出願番号】P 2018502137
(86)(22)【出願日】2016-08-11
(86)【国際出願番号】 US2016046447
(87)【国際公開番号】W WO2017027649
(87)【国際公開日】2017-02-16
【審査請求日】2019-07-11
(32)【優先日】2016-08-09
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】201510494855.9
(32)【優先日】2015-08-13
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ヤン、リン
(72)【発明者】
【氏名】パン、レイ
(72)【発明者】
【氏名】マオ、リアンリアン
【審査官】白井 亮
(56)【参考文献】
【文献】特表2013-506908(JP,A)
【文献】特表2004-538573(JP,A)
【文献】特開2006-309691(JP,A)
【文献】特開2001-312487(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 29/00
G06F 9/48
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
リソーススケジューリングのための方法であって、
プロキシサーバにて、スケジューリングシステムによって、前記プロキシサーバを利用するアプリケーションシステム上のアプリケーションリクエストのリクエストキューをモニタリングする段階であって、前記アプリケーションシステムは、1つまたは複数のホストを含み、前記アプリケーションシステムによって処理される1つまたは複数のアプリケーションを動作させ、前記1つまたは複数のアプリケーションのそれぞれは、1つまたは複数のインスタンスを有している、段階と、
前記リクエストキューにおける前記アプリケーションリクエストの数に基づいて、統計解析を実行して、前記アプリケーションリクエストのブロッキングステータスを取得する段階であって、前記ブロッキングステータスは、前記1つまたは複数のインスタンスのうちの特定のインスタンス
に対応する前記アプリケーションリクエス
トの前記リクエストキューにおけるリクエストの数を示す、段階と、
前記スケジューリングシステムにより、予め決められたスケジューリングルールおよび前記アプリケーションリクエストの前記ブロッキングステータスに従って前記1つまたは複数のアプリケーションのアプリケーションに対する前記アプリケーションシステムのコンピューティングリソースをスケジューリングする段階と
を備える方法。
【請求項2】
前記リクエストキューを前記モニタリングする段階が、前記リクエストキューから前記アプリケーションリクエストの前記数を決定する段階を含む、請求項1に記載の方法。
【請求項3】
前記アプリケーションリクエストの前記数が、
前記1つまたは複数のホスト上で動作している前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する前記アプリケーションリクエストの数を含む、請求項2に記載の方法。
【請求項4】
前記アプリケーションリクエストの前記数を前記決定する段階は、
前記プロキシサーバの公開されたアプリケーションプログラミングインターフェース(API)を介して前記リクエストキューにおける前記アプリケーションリクエストの前記数を決定する段階を含む、請求項2または3に記載の方法。
【請求項5】
提出したリクエストの数および処理したリクエストの数は、前記APIを介して前記プロキシサーバから受信され、
前記リクエストキューにおける前記アプリケーションリクエストの前記数を前記決定する段階は、前記提出したリクエストの前記数および前記処理したリクエストの前記数の間の差を決定する段階である、請求項4に記載の方法。
【請求項6】
前記アプリケーションリクエストの前記数を前記決定する段階は、
前記APIによって提供されたユニフォームリソースロケータ(URL)にアクセスする段階と、
前記URLに対応するページデータから前記リクエストキューにおける前記アプリケーションリクエストの前記数を取得する段階と
を含む、請求項4または5に記載の方法。
【請求項7】
前記アプリケーションに対する前記アプリケーションシステムの前記コンピューティングリソースを前記スケジューリングする段階が、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが拡張条件を満たす場合、前記コンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが縮小条件を満たす場合、前記コンピューティングリソースを低減させる段階を含み、
前記拡張条件が前記アプリケーションシステムの前記コンピューティングリソースの高い利用を示している予め決められた条件であり、
前記縮小条件が前記アプリケーションシステムの前記コンピューティングリソースの低い利用を示している予め決められた条件である、請求項3から6のいずれか一項に記載の方法。
【請求項8】
前記アプリケーションに対する前記アプリケーションシステムの前記コンピューティングリソースを前記スケジューリングする段階は、
前記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、前記アプリケーションの前記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、前記アプリケーションのインスタンスの数を増加させ、前記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、前記アプリケーションのインスタンスの前記数を低減させる段階と、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、前記インスタンスのコンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの前記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、前記インスタンスの前記コンピューティングリソースを低減させる段階と
のうち少なくとも1つ含む、請求項2から7のいずれか一項に記載の方法。
【請求項9】
リソーススケジューリングのためのスケジューリングシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサによって実行可能な命令を格納する非一時的コンピュータ可読メモリと
を備え、前記命令が前記スケジューリングシステムに、
プロキシサーバを利用しているアプリケーションシステム上のアプリケーションリクエストのリクエストキューを前記プロキシサーバでモニタリングさせ、前記アプリケーションシステムは、1つまたは複数のホストを含み、前記アプリケーションシステムによって処理される1つまたは複数のアプリケーションを動作させ、前記1つまたは複数のアプリケーションのそれぞれが、1つまたは複数のインスタンスを有し、
前記リクエストキューにおける前記アプリケーションリクエストの数に基づいて、統計解析を実行して、前記アプリケーションリクエストのブロッキングステータスを取得させ、前記ブロッキングステータスは、前記1つまたは複数のインスタンスのうちの特定のインスタンス
に対応する前記アプリケーションリクエス
トの前記リクエストキューにおけるリクエストの数を示し、
前記命令が予め決められたスケジューリングルールおよび前記アプリケーションリクエストの前記ブロッキングステータスに従って前記1つまたは複数のアプリケーションのアプリケーションに対する前記アプリケーションシステムのコンピューティングリソースをスケジューリングさせる、スケジューリングシステム。
【請求項10】
モニタリングさせる前記命令が前記スケジューリングシステムにさらに、
前記リクエストキューから前記アプリケーションリクエストの前記数を決定させる、請求項9に記載のスケジューリングシステム。
【請求項11】
前記アプリケーションリクエストの前記数が、前記1つまたは複数のホスト上で動作している前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する前記アプリケーションリクエストの数を含む、請求項10に記載のスケジューリングシステム。
【請求項12】
モニタリングする前記命令が前記スケジューリングシステムにさらに、前記プロキシサーバの公開されたアプリケーションプログラミングインターフェース(API)を介した前記リクエストキューにおける前記アプリケーションリクエストの前記数を決定させる、
請求項10または11に記載のスケジューリングシステム。
【請求項13】
提出したリクエストの数および処理したリクエストの数は、前記APIを介して前記プロキシサーバから受信され、前記リクエストキューにおける前記アプリケーションリクエストの前記数が前記提出したリクエストの前記数および前記処理したリクエストの前記数の間の差として決定される、請求項12に記載のスケジューリングシステム。
【請求項14】
モニタリングする前記命令が前記スケジューリングシステムにさらに、
前記APIによって提供されたユニフォームリソースロケータ(URL)にアクセスさせ、
前記URLに対応するページデータから前記リクエストキューにおける前記アプリケーションリクエストの前記数を取得させる、請求項12または13に記載のスケジューリングシステム。
【請求項15】
スケジューリング回路が、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが拡張条件を満たす場合、前記コンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが縮小条件を満たす場合、前記コンピューティングリソースを低減させることを実行し、
前記拡張条件が前記アプリケーションシステムの前記コンピューティングリソースの高い利用を示している予め決められた条件であり、
前記縮小条件が前記アプリケーションシステムの前記コンピューティングリソースの低い利用を示している予め決められた条件である、請求項11から14のいずれか一項に記載のスケジューリングシステム。
【請求項16】
スケジューリング回路が前記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、前記アプリケーションの前記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、前記アプリケーションのインスタンスの数を増加させ、前記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、前記アプリケーションのインスタンスの前記数を低減させることと、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、前記インスタンスのコンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの前記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、前記インスタンスの前記コンピューティングリソースを低減させることと
のうち少なくとも1つを実行する、請求項11から15のいずれか一項に記載のスケジューリングシステム。
【請求項17】
プロセッサによって実行された場合、前記プロセッサにリソーススケジューリングのための手順を実行させるコンピュータプログラムであって、前記手順は、
1つまたは複数のアプリケーションに対するアプリケーションシステムによって処理されるプロキシサーバでのアプリケーションリクエストのリクエストキューからアプリケーションリクエストの数を決定する手順と、
前記リクエストキューにおける前記アプリケーションリクエストの数に基づいて、統計解析を実行して、前記アプリケーションリクエストのブロッキングステータスを取得する手順であって、前記ブロッキングステータスは、前記1つまたは複数のインスタンスのうちの特定のインスタンス
に対応する前記アプリケーションリクエス
トの前記リクエストキューにおけるリクエストの数を示す、手順と、
予め決められたスケジューリングルールおよび前記アプリケーションリクエストの前記ブロッキングステータスに従って前記1つまたは複数のアプリケーションのアプリケーションに対する前記アプリケーションシステムのコンピューティングリソースをスケジューリングする手順と
を含む、コンピュータプログラム。
【請求項18】
前記アプリケーションリクエストの数は、前記1つまたは複数のホスト上で動作している前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する前記アプリケーションリクエストの数を含む、請求項17に記載のコンピュータプログラム。
【請求項19】
前記アプリケーションに対する前記アプリケーションシステムの前記コンピューティングリソースを前記スケジューリングする手順は、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが拡張条件を満たす場合、前記コンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの前記インスタンスに対応する前記アプリケーションリクエストの前記ブロッキングステータスが縮小条件を満たす場合、前記コンピューティングリソースを低減させる手順を含み、
前記拡張条件が前記アプリケーションシステムの前記コンピューティングリソースの高い利用を示している予め決められた条件であり、
前記縮小条件が前記アプリケーションシステムの前記コンピューティングリソースの低い利用を示している予め決められた条件である、
請求項18に記載のコンピュータプログラム。
【請求項20】
前記アプリケーションに対する前記アプリケーションシステムの前記コンピューティングリソースを前記スケジューリングする手順は、
前記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、前記アプリケーションの前記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、前記アプリケーションのインスタンスの数を増加させ、前記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、前記アプリケーションのインスタンスの前記数を低減させる手順と、
前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、前記インスタンスのコンピューティングリソースを増加させ、前記1つまたは複数のアプリケーションのそれぞれの前記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、前記インスタンスの前記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、前記インスタンスの前記コンピューティングリソースを低減させる手順と
のうち少なくとも1つを含む、請求項18または19に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、「リソース分配のための方法およびシステム」の名称で2015年8月13日に出願された中国特許出願第201510494855.9号および「リソーススケジューリングのための方法およびシステム」の名称で2016年8月9日に出願された米国特許出願第15/231,812号の優先権の利点を主張するものであり、参照によりそれらの全体が本明細書に両方組み込まれる。
【0002】
本開示は、サーバのようなシステム上で動作するコンピュータアプリケーションの分野に関するものであり、特にリソーススケジューリングのための方法およびシステムに関する。
【背景技術】
【0003】
アプリケーションシステムのオペレーションにおける問題は、時折多数のヒットまたはリクエストを発生することである。アプリケーションシステムが通常に動作し得ることを確実とすべく、サーバは概して最も高い需要量に応じて構築される。しかしながら、この場合、結果は通常オペレーション条件下においてアイドルリソースが大多数となることとなる。ヒットの数のピークがシステム構築期間の間で低く見積もられた場合、アプリケーションシステムが遅くなることとなり、または多数の同時リクエストが生じた場合、アプリケーションシステムがクラッシュすることとなる。従って、フレキシブルなスケジューリング機構が、上記の問題を対処するよう提案されている。すなわち、多数のヒットがある場合、コンピューティングリソースは、システムの処理能力を拡張するよう自動的に形成されることとなる。また、少数のヒットおよびシステムがアイドルである場合、コンピューティングリソースは、コストを抑えるよう自動的に低減されることとなる。
【0004】
従来のフレキシブルなスケジューリング機構は、主にシステムリソースの利用に基づいてアプリケーションの負荷を決定する。それは、例えば、CPU、メモリ、ネットワークフロー、磁気ディスクIO、およびそのようなものなどのようなリソースの利用に基づいている。アプリケーションによるCPUまたはメモリの利用率が高い場合、そのアプリケーションに対して必要な拡張をすることが決定される。しかしながら、ある場合において、この手法では、真の利用状態を反映することに失敗することがある。例えば、いくつかのアプリケーションによって利用されるシステムリソースは、多くはないかもしれないが、そのようなアプリケーションの処理が、極めて遅いか、一時中断されることさえある。そのようなアプリケーションには、現在のフレキシブルなスケジューリング機構の使用は、拡張のための必須要件を満たすことができない。
【発明の概要】
【0005】
いくつかの実施形態によれば、本開示は、スケジューリングの実際の必要性をより正確に決定して満たすリソーススケジューリングのための方法およびシステムを提供する。
【0006】
いくつかの実施形態によれば、本開示は、予め決められたスケジューリングルールおよびアプリケーションリクエストのブロッキングステータスに従って、アプリケーションに対する、サーバおよびサーバのコンピューティングリソースのスケジューリングによって処理されるアプリケーションリクエストのブロッキングステータスのモニタリングする段階を含む、リソーススケジューリングのための方法を提供する。
【0007】
本開示のいくつかの実施形態によれば、サーバによって処理されるアプリケーションリクエストのブロッキングステータスをモニタリングする段階は、サーバにおけるブロックリクエストのキュー内のリクエストの数を集計する段階と、サーバによって処理されるアプリケーションリクエストを含むブロックリクエストのキューと、アプリケーションリクエストのブロッキングステータスを取得する集計されたリクエストの数に対する解析および統計解析を実行する段階とを含む。
【0008】
本開示のいくつかの実施形態によれば、アプリケーションリクエストのブロッキングステータスは、特定のアプリケーションに関するリクエストのブロッキングステータスと、特定のインスタンスに関するリクエストのブロッキングステータスと、特定のホストに関するリクエストのブロッキングステータスとの少なくとも1つを含む。
【0009】
本開示のいくつかの実施形態によれば、サーバ内のブロックリクエストのキューにおけるリクエストの数を集計する段階は、プロキシサーバの公開されたAPIからのサーバにおけるブロックリクエストのキュー内のリクエストの数を集計する段階を含む。
【0010】
本開示のいくつかの実施形態によれば、方法は、プロキシサーバにおいてイベントモニタリングおよび統計モジュールを提供する段階をさらに含み、イベントモニタリングおよび統計モジュールは、提出したリクエストの数を取得すべくサーバへリクエストを提出するプロキシサーバのイベントに対しモニタリングし、処理したリクエストの数を取得すべくサーバがリクエストの処理を完了したことを確認するプロキシサーバがイベントに対しモニタリングし、ならびに提出したリクエストの数および処理したリクエストの数に従って、サーバにおけるブロックリクエストのキューにおいてリクエストの数を決定する。
【0011】
本開示のいくつかの実施形態によれば、プロキシサーバの公開されたAPIからのサーバにおけるブロックリクエストのキュー内のリクエストの数を集計する段階は、APIによって提供されたURLにアクセスする段階と、URLに対応するページデータからサーバにおけるブロックリクエストのキュー内のリクエストの数を取得する段階とを含む。
【0012】
本開示のいくつかの実施形態によれば、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに従って、アプリケーションに対するサーバのコンピューティングリソースをスケジューリングする段階は、特定のアプリケーションに関するリクエストのブロッキングステータスが第1の拡張条件を満たす場合、特定のアプリケーションに対して新たなインスタンスを生成し、配置する段階と、特定のアプリケーションに関するリクエストのブロッキングステータスが第1の縮小条件を満たす場合、特定のアプリケーションに対してインスタンスを低減させる段階と、特定のインスタンスに関するリクエストのブロッキングステータスが第2の拡張条件を満たす場合、特定のインスタンスに対してシステムリソースを増加させる段階と、または特定のインスタンスの負荷を分担すべく他のインスタンスを使用する段階と、特定のインスタンスに関するリクエストのブロッキングステータスが第2の縮小条件を満たす場合、特定のインスタンスに対してシステムリソースを低減させる段階と、特定のホストに関するリクエストのブロッキングステータスが第3の拡張条件を満たす場合、特定のホストの負荷を分担すべく他のホストを使用する段階と、特定のホストに関するリクエストのブロッキングステータスが第3の縮小条件を満たす場合、特定のホスト上のインスタンスに優先的に配置する段階と、または他のホストの負荷を分担すべく特定のホストを優先的に使用する段階とのうち少なくとも1つを含む。
【0013】
本開示のいくつかの実施形態によると、方法は、特定のアプリケーションにおける、インスタンスによるリソース利用をモニタリングする段階と、特定のアプリケーションにおいて、インスタンスによる平均リソースの利用が予め決められた第1の上限値より大きいまたは等しい場合、特定のアプリケーションに対してインスタンスを増加させる段階と、特定のアプリケーションにおいて、インスタンスによる平均リソースの利用が予め決められた第1の下限値より小さいまたは等しい場合、特定のアプリケーションに対してインスタンスを低減させる段階と、特定のアプリケーションにおいて、インスタンスによってリソース利用をモニタリングする段階と、インスタンスによるリソース利用が予め決められた第2の上限値より大きいまたは等しい場合、インスタンスによって利用されるシステムリソースを増加させる段階と、インスタンスによるリソース利用が予め決められた第2の下限値より小さいまたは等しい場合、インスタンスによって利用されるシステムリソースを低減させる段階と、ホストが利用不可能として検出された場合、ホスト上のインスタンスの移動を開始する段階と、処理が利用不可能として検出された場合、処理を再開し、不成功とした場合は、処理上のインスタンスの移動を開始する段階と、アプリケーションの例外が検出された場合、アプリケーションを再開する段階と、アプリケーションに対するインスタンスの移動を開始する段階と、またはアラートを生成する段階との少なくとも1つをさらに含む。
【0014】
本開示は、またリソーススケジューリングのためのシステムを提供し、サーバによって処理されるアプリケーションリクエストのブロッキングステータスをモニタリングするためのブロックモニタリングユニットと、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに従ってアプリケーションに対するサーバのコンピューティングリソースをスケジューリングするためのスケジューリングユニットとを含む。
【0015】
特に、本開示のいくつかの実施形態によれば、ブロックモニタリングユニットは、アプリケーションリクエストのブロッキングステータスを取得すべくモニタリングサブユニットによって集計されたリクエストの数に対する解析および統計解析を実行するために、サーバにおけるブロックリクエストのキュー内のリクエストの数を集計するためのモニタリングサブユニットと、ブロックリクエストのキューがサーバによって処理されるアプリケーションリクエストと、コンピューティングサブユニットとを含む。
【0016】
本開示のいくつかの実施形態によれば、アプリケーションリクエストのブロッキングステータスは、特定のアプリケーションに関するリクエストのブロッキングステータスと、特定のインスタンスに関するリクエストのブロッキングステータスと、特定のホストに関するリクエストのブロッキングステータスとの少なくとも1つを含む。
【0017】
本開示の好ましい実施形態によれば、モニタリングサブユニットは、プロキシサーバの公開されたAPIからのサーバにおけるブロックリクエストのキュー内のリクエストの数を集計する。
【0018】
本開示のいくつかの実施形態によれば、システムは、提出したリクエストの数を取得すべくサーバへのプロキシサーバ提出リクエストのイベントに対しモニタリングプロキシサーバ内に提供されるイベントモニタリングおよび統計モジュールをさらに含み、処理したリクエストの数を取得すべくサーバがリクエストの処理を完了したことをプロキシサーバが確認するイベントに対しモニタリングし、ならびに提出したリクエストの数および処理したリクエストの数に従って、サーバにおけるブロックリクエストのキューにおいてリクエストの数を決定するよう構成される。
【0019】
特に、本開示のいくつかの実施形態によれば、モニタリングサブユニットは、APIによって提供されたURLにアクセスすることと、URLに対応するページデータからサーバにおけるブロックリクエストのキューにおいてのリクエストの数を取得することとのためのものである。
【0020】
特に、本開示のいくつかの実施形態によれば、スケジューリングユニットは、特定のアプリケーションに関するリクエストのブロッキングステータスが第1の拡張条件を満たす場合、特定のアプリケーションに対して新たなインスタンスを生成し、配置することと、特定のアプリケーションに関するリクエストのブロッキングステータスが第1の縮小条件を満たす場合、特定のアプリケーションに対してインスタンスを低減させることと、特定のインスタンスに関するリクエストのブロッキングステータスが第2の拡張条件を満たす場合、特定のインスタンスに対してシステムリソースを増加させることと、または特定のインスタンスの負荷を分担すべく他のインスタンスを使用することと、特定のインスタンスに関するリクエストのブロッキングステータスが第2の縮小条件を満たす場合、特定のインスタンスに対してシステムリソースを低減させることと、特定のホストに関するリクエストのブロッキングステータスが第3の拡張条件を満たす場合、特定のホストの負荷を分担すべく他のホストを使用することと、特定のホストに関するリクエストのブロッキングステータスが第3の縮小条件を満たす場合、特定のホスト上のインスタンスに優先的に配置されることと、または他のホストの負荷を分担すべく特定のホストを優先的に使用することとの少なくとも1つのスケジューリングを実行する。
【0021】
本開示のいくつかの実施形態によれば、ブロックモニタリングユニットは、特定のアプリケーションにおいて、インスタンスによるリソース利用のモニタリングのためにさらに使用され、スケジューリングユニットは、さらに、特定のアプリケーションにおいて、インスタンスによる平均リソースの利用が予め決められた第1の上限値より大きいまたは等しい場合、特定のアプリケーションに対してインスタンスを増加させることと、特定のアプリケーションにおいて、インスタンスによる平均リソースの利用が予め決められた第1の下限値より小さいまたは等しい場合、特定のアプリケーションに対してインスタンスを低減させることと、または、インスタンスによるリソース利用が予め決められた第2の上限値より大きいまたは等しい場合、インスタンスによって利用されるシステムリソースを増加させることと、インスタンスによるリソース利用が予め決められた第2の下限値より小さいまたは等しい場合、インスタンスによって利用されるシステムリソースを低減させることとを構成する。
【0022】
本開示のいくつかの実施形態によれば、システムは、ホスト、処理またはアプリケーションの動作状態を検出するためのステータス検出ユニットをさらに含み、スケジューリングユニットは、さらに使用されるために、ホストがステータス検出ユニットによって利用不可能として検出された場合、ホスト上のインスタンスの移動を開始することと、処理がステータス検出ユニットによって利用不可能として検出された場合、処理を再開することと、不成功として検出された場合、処理上のインスタンスの移動を開始することと、アプリケーションの例外がステータス検出ユニットによって検出された場合、アプリケーションを再開することと、アプリケーションに対するインスタンスの移動を開始することと、またはアラートを生成することとを含む。
【0023】
本開示のいくつかの実施形態によれば、スケジューリングユニットは、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに基づいたスケジューリング命令を生成し、管理サブユニットへスケジューリング命令を送信するためのスケジューリングサブユニットと、スケジューリング命令に従って、アプリケーションに対してサーバのコンピューティングリソースのスケジューリングを実行する管理サブユニットとを含む。
【0024】
本明細書の説明および描写から明らかなように、本開示は、サーバによって集計され、処理される、アプリケーションリクエストのブロッキングステータスによる手法を採用し、この手法に基づいて、アプリケーションによるシステムリソースの利用に基づく代わりに、アプリケーションに対するサーバのコンピューティングリソースがスケジューリングされる。サーバによって処理されるアプリケーションリクエストのブロッキングステータスがアプリケーションの負荷をより正確に反映し得るため、本開示によるスケジューリングの方法がスケジューリングの実際の必要性をより正確に満たし得、コンピューティングリソースのオペレーションおよびプロセッサが一部であるシステム全体を改善し得る。
【図面の簡単な説明】
【0025】
本明細書に描写された添付図面は、以下の詳細な説明を併せることで本開示のさらなる理解を提供するよう意図されている。本開示の実施形態のそれらの例示的な説明は、本開示のさらなる説明および明確化のために意図され、本開示の範囲は、任意の特定の実施形態の説明または添付図面によって定義されるものではなく、特許請求の範囲によって定義されるものである。本開示は、以下の添付図面を含む。
【0026】
【
図1】
図1は、本開示のいくつかの実施形態によるアーキテクチャの非限定的なブロック図である。
【0027】
【
図2】
図2は、本開示のいくつかの実施形態による方法の模式フロー図である。
【0028】
【
図3】
図3は、本開示のいくつかの実施形態による方法の模式フロー図である。
【0029】
【
図4】
図4は、本開示のいくつかの実施形態によるリソーススケジューリングのためのシステムのブロック図である。
【発明を実施するための形態】
【0030】
本開示の目的、技術的解決および利点をより明確なものとすべく、本開示は、添付図面および特定の実施形態を参照して下記に詳細に説明される。
【0031】
本開示の理解を促進するよう、まずアーキテクチャに基づく本開示が説明される。
図1に示されるように、アーキテクチャにおいて、サーバ102は、アプリケーションリクエストを詳細処理するためのネットワークデバイスである。すなわち、アプリケーションリクエストのアクセス対象は、サーバ102であり、アプリケーションのサービスコンテンツを認識するよう各アプリケーションリクエストを処理することを担う。さらに、アプリケーションリクエストを処理するためのサーバ102は、単一のサーバであり得、または複数のマシンを含むサーバのクラスタであり得る。
【0032】
サーバ102において、少なくとも1つのホストが存在し得、それぞれのホストがその上で動作する1つまたは複数のアプリケーションインスタンスを有している。すなわち、アプリケーションは、1つよりも多くのアプリケーションインスタンスで構成され得、それぞれのアプリケーションインスタンスがホスト上に配置される。アプリケーションインスタンスは、同じホスト上に配置され得、もしくは異なるホストに配置され得、またはサーバのクラスタの異なるサーバ上にさえも配置され得る。
【0033】
図1に示されるアーキテクチャにおいて、プロキシサーバ104は、処理のためにユーザ側のデバイスからサーバへのアプリケーションリクエストの転送およびサーバからユーザ側のデバイスへの応答の転送を担う。
【0034】
スケジューリングシステム100は、本開示のコアであり、サーバ102によって処理されるアプリケーションリクエストのブロッキングステータスをモニタリングすることと、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに従って、アプリケーションに対するサーバのコンピューティングリソースのスケジューリングを実行することとを担う。より詳細には、サーバ102によって処理されるアプリケーションリクエストのブロッキングステータスをモニタリングする場合、スケジューリングシステムは、サーバから直接的にブロッキングステータスを取得しない。しかし、代わりにサーバ102によって処理されるプロキシサーバ104からデータを集計することで、アプリケーションリクエストのブロッキングステータスを間接的に取得し、ブロッキングステータスを解析する。処理ステップおよびスケジューリングシステムのコンポーネントは、下記において詳細に説明される。
【0035】
図2は、本開示のいくつかの実施形態による方法の模式フロー図である。
【0036】
いくつかの実施形態によれば、本開示は、リソーススケジューリングのための方法を提供する。ステップ200は、1つまたは複数のアプリケーションに対してアプリケーションシステムによって処理されるプロキシサーバでのアプリケーションリクエストのリクエストキューをモニタリングする。ステップ203は、予め決められたスケジューリングルールおよびリクエストキューのステータスに従って1つまたは複数のアプリケーションのアプリケーション に対するアプリケーションシステムのコンピューティングリソースをスケジューリングする。
【0037】
図3は、本開示のいくつかの実施形態による方法の模式フロー図であり、例えば、当該方法は、上記において説明されたスケジューリングシステムによって実行され得る。
図3に示されるように、方法は、以下のステップを含む。
【0038】
ステップ201は、プロキシサーバの公開されたAPI(アプリケーションプログラミングインターフェース)からのサーバにおけるブロックリクエストのキュー内のリクエストの数を集計する。
【0039】
サーバがアプリケーションリクエストを処理した後、プロキシサーバがアプリケーションリクエストをサーバへ転送し、サーバから戻された応答を受信することを担うため、サーバによって処理されるサーバへ送信されたリクエストの数は、プロキシサーバによってサーバへ転送されたアプリケーションリクエストの数およびプロキシサーバによってサーバから受信される応答に対応するリクエストの数によって既知とされ得る。この処理に基づいて、サーバにおけるブロックリクエストのキュー内のリクエストの数の集計は、プロキシサーバを介して取得し得る。
【0040】
より詳細には、プロキシサーバが非同期イベント処理機構に従うので、処理が実行された場合、対応するイベントが存在することとなる。従って、イベントモニタリングおよび統計モジュールは、イベントモニタリングおよび統計モジュールが予めプロキシサーバ内に提供され得、プロキシサーバがリクエストのイベントおよび統計をモニタリングすることを担う。すなわち、提出されたリクエストの数を取得すべくイベントモニタリングおよび統計モジュールは、サーバへのリクエストを表しているプロキシサーバのイベントをモニタリングする。本明細書において、グローバル変数は、提出されたそれぞれのリクエストに対して、グローバル変数に1の値が加えられ(例えば、変数は uとして識別されると仮定する)提出されたリクエストの数を表すよう使用され得る。さらに、処理したリクエストの数を取得すべく、イベントモニタリングおよび統計モジュールは、サーバがリクエストの処理を完了したことをプロキシサーバが確認するイベントに対しモニタリングする(例えば、サーバがアプリケーションリクエストを処理した後、サーバから戻された応答を受信する)。処理されたリクエストを受信したそれぞれの応答に対して上記のグローバル変数uから1の値を引かれることとなる。グローバル変数の最終値は、サーバにおけるブロックリクエストのキューにおいてリクエストの数、すなわち、サーバによって処理されるサーバによって送信されたリクエストの数としてみなされ得る。
【0041】
いくつかの実施形態において、イベントモニタリングおよび統計モジュールは、ネットワーク接続が確立したリクエストの数を取得すべく、プロキシサーバがネットワーク接続を確立するが、いまだサーバへ転送されていないイベントもモニタリングし得る。リクエストの数は、サーバが直面することとなる処理負荷を示し、コンピューティングリソースに続くスケジューリングにおいて、基準として使用し得るスケジューリングユニットのアシストファクタとして機能し得る。
【0042】
上記のように取得されたリクエストの数は、プロキシサーバの公開されたAPIを通してイベントモニタリングおよび統計モジュールによって出力され得、例えば、出力のためにHTTPプロトコルが採用され得る。例えば、APIは、特定のURLを提供し得る。さらに、スケジューリングシステムがURLをアクセスした場合、APIは、上記に記載のリクエストの数をフォーマット化されたデータの形態で提供し得るページを返すこととなり、すなわち、スケジューリングシステムがURLに対応するページデータからサーバにおけるブロックリクエストのキュー内のリクエストの数を取得する。
【0043】
ステップ202は、アプリケーションリクエストのブロッキングステータスを取得すべく集計したリクエストの数に対する解析および統計解析を実行する。
【0044】
このステップでは、集計されたリクエストの数に対する数値解析および統計解析は、それぞれの特定のアプリケーションに対応するブロックリクエストのキューにおけるリクエストの数と、それぞれの特定のインスタンスに対応するブロックリクエストのキューにおけるリクエストの数と、特定のホストに対応するブロックリクエストのキューにおけるリクエストの数とを決定するよう実行され得る。リクエストのために、それが対応する特定のアプリケーションは、それがアクセスするドメイン名に従って決定され得、それが対応する特定のホストは、それがアクセスするIPアドレスに従って決定され得、また、それが対応する特定のインスタンスは、それがアクセスするポートに従って決定され得る。
【0045】
対応するコンピューティングリソースの処理能力と組み合わせてブロックリクエストのキューにおけるリクエストの数は、リクエストのブロッキングステータスを反映し得、これは、本明細書における下記の説明において明らかとなることとなる。
【0046】
ステップ203は、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに従って、アプリケーションに対するサーバのコンピューティングリソースをスケジューリングする。
【0047】
特定のアプリケーションのに対して、アプリケーションに関するリクエストのブロッキングステータスが第1の拡張条件を満たす場合、例えば、ブロックリクエストのキューにおけるリクエストの数が、アプリケーションによって利用されるコンピューティングリソースの処理能力の3倍を超え(本明細書では、「3倍」とは単に例示的なものであり、実際には、経験値または過去のデータから引き出された値が使用され得、下記に提供される例においても同じことが当てはまる)、それは、アプリケーションに関するリクエストのブロックがクリティカルであることと、アプリケーションに対して新たなインスタンスが生成されることが必要であることとが示され、配置される。新たなインスタンスの配置は、比較的より低い負荷を有するホスト上に優先的に配置される新たなインスタンス(例えば、比較的より小さいブロックリクエストのキューにおけるリクエストの数を有する)と負荷分散法に基づき得る。アプリケーションに関するリクエストのブロッキングステータスが第1の縮小条件を満たす場合、例えば、ブロックリクエストのキューにおけるリクエストの数がアプリケーションによって利用されるコンピューティングリソースの処理能力の0.5倍よりも小さい場合、それは、アプリケーションに関するリクエストの数が小さいことと、それが占有するコンピューティングリソースがアイドルであることとが示される。従って、アプリケーションに割り当てられるインスタンスは、低減され得る。特に、終了するインスタンスにはリクエストが割り当てられ得ず、タスクがない場合、インスタンスは、終了し得る。
【0048】
特定のインスタンスに対して、インスタンスに関するリクエストのブロッキングステータスが第2の拡張条件を満たす場合、例えば、ブロックリクエストのキューにおけるインスタンスに関するリクエストの数がインスタンスによって利用されるコンピューティングリソースの処理能力の3倍を超え、それは、インスタンスに関するリクエストのブロックがクリティカルであることが示され、インスタンスに対してシステムリソースが増加され得る。本開示に関連するシステムリソースは、限定されないが、CPU、メモリ、IOリソース、ネットワークフロー、およびそのようなものを含み得る。いくつかの実施形態において、インスタンスの負荷を分担すべくインスタンスが加えられ得る。さらに、いくつかの実施形態において、インスタンスによるシステムリソースの利用に基づいて、どのタイプのシステムリソースが加えられるべきか決定され得る。
【0049】
インスタンスに関するリクエストのブロッキングステータスが第2の縮小条件を満たす場合、例えば、ブロックリクエストのキューにおけるインスタンスに関するリクエストの数がわずかな量(fractional amount)よりも少なく、例えば、インスタンスによって利用されるコンピューティングリソースの処理能力の0.50より小さいまたは等しく、それは、それを占有するコンピューティングリソースがアイドルであることを示し、従って、インスタンスに対するコンピューティングリソースが低減され得る。
【0050】
特定のホストに対して、特定のホストに関するリクエストのブロッキングステータスが第3の拡張条件を満たす場合、例えば、ブロックリクエストのキューにおけるホストに関するリクエストの数がホストの処理能力の3倍を超え、ホストの負荷を分担すべく追加のホストが使用され得る。特定のホストに関するリクエストのブロッキングステータスが第3の縮小条件を満たす場合、例えば、ブロックリクエストのキューにおけるホストに関するリクエストの数がホストの処理能力の0.5倍よりも小さく、新たなインスタンスは、ホスト上に優先的に配置され得、または他のホストと分担すべくホストが優先的に使用され得る。
【0051】
コンピューティングリソースの上記に記載のスケジューリングは、異なる段階におけるアプリケーションに対するフレキシブルなスケジューリングのための必要性を満たすよう定期的に実行され得る。
【0052】
これに基づいて、現在使用されているフレキシブルなスケジューリング機構は、また組み込まれ得、例えば、限定されないが、以下を含み得る。
【0053】
いくつかの実施形態において、特定のアプリケーションにおけるインスタンスによるリソース利用がモニタリングされ、インスタンスによるリソース利用は、CPU、メモリ、またはIOリソースなどのようなシステムリソースを含む。すべてのインスタンスによる平均リソースの利用が予め決められた第1の上限値より大きいまたは等しい場合、例えば、理論上の平均値の80%より大きいまたは等しく、特定のアプリケーションに対してインスタンスが増加され得る。すべてのインスタンスによる平均リソースの利用が予め決められた第1の下限値より小さいまたは等しい場合、例えば、理論上の平均値の20%より小さいまたは等しく、特定のアプリケーションに対してインスタンスが低減され得る。本明細書において、第1の上限値は、第1の下限値よりも大きい。
【0054】
いくつかの実施形態において、インスタンスによるリソース利用が予め決められた第2の上限値より大きいまたは等しい場合、例えば、CPUの占有が30%よりも大きく、インスタンスによって利用される、CPU、メモリのようなシステムリソース、またはIOリソースが増加され得る。インスタンスによるリソース利用が予め決められた第2の下限値より小さいまたは等しい場合、例えば、CPUの占有が10%よりも少なく、インスタンスによって利用されるシステムリソースが低減され得る。本明細書において、第2の上限値は、第2の下限値よりも大きい。
【0055】
ホストが利用不可能として検出される場合、例えば、ホスト上のすべてのインスタンスの別のホストへまたは複数の他のホストへの移動が開始し得る。別のホストまたは複数の他のホストへ移動した場合、インスタンスは、負荷分散法に従って、比較的より小さい負荷を有するホストへ移動し得る。
【0056】
処理が利用不可能として検出された場合、処理の再開が実行され得る。再開が不成功であった場合、処理上のインスタンスの移動が開始し得る。インスタンスは、他の処理へ移動し得、特に、同じホスト上の他の処理へ移動し得るが、ほとんどの状況下でそれらは、他のホスト上の処理へ移動し得ることとなる。
【0057】
アプリケーションがアプリケーションの障害またはアプリケーションに対する攻撃によって引き起こされ得て利用不可能として検出された場合、処理上のアプリケーションに在するインスタンスが再開し得、全アプリケーションのインスタンスが移動し得、またはアラートが生成され得る。
【0058】
本実施形態の上記の記載において、アプリケーションのそれぞれのインスタンスによるリソース利用は、制限され得る。非限定的な方法の例として、メモリ利用の上限値は、それぞれのインスタンスによって4GBに設定され得る。それぞれのアプリケーションによるリソース利用は、また制限され得る。例えば、アプリケーションのすべてのインスタンスによる全CPU利用の上限値は、80%に設定され得る。これを行う目的は、あるアプリケーションコードの例外によって引き起こされるシステムリソースの無制限な使用を防ぐことである。さらに、スケジューリングシステムは、インターフェースを提供し得、これは、ユーザによって使用され得る、上記に記載のスケジューリングルールならびにリソース利用の上限値を構成および調整され得る。
【0059】
図4は、本開示のいくつかの実施形態によるリソーススケジューリングのためのシステムのブロック図である。
図4に示されるように、システムは、ブロックモニタリングユニット00およびスケジューリングユニット10を含み得、さらにプロキシサーバに提供されるイベントモニタリングおよび統計モジュール20ならびにステータス検出ユニット30を含み得る。本明細書において、ブロックモニタリングユニット00は、モニタリングサブユニット01および計算サブユニット02を含み得る。 スケジューリングユニット10は、スケジューリングサブユニット11および管理サブユニット12を含み得る。
【0060】
ブロックモニタリングユニット00は、サーバによって処理されるアプリケーションリクエストのブロッキングステータスをモニタリングすることを担う。
【0061】
特に、モニタリングサブユニット01は、サーバにおけるブロックリクエストのキュー内のリクエストの数を集計することを担い、ブロックリクエストのキューは、サーバによって処理されるアプリケーションリクエストを含んでいる。モニタリングサブユニット01は、プロキシサーバの公開されたAPIからサーバにおけるブロックリクエストのキュー内のリクエストの数を集計し得る。
【0062】
プロキシサーバが非同期イベント処理機構に従うため、処理が実行された場合、対応するイベントが存在されることとなる。従って、イベントモニタリングおよび統計モジュール20は、プロキシサーバに提供され得、提出されたリクエストの数を取得すべくサーバへのプロキシサーバ提出リクエストのイベントをモニタリングすることと、処理したリクエストの数を取得すべくサーバがリクエストの処理を完了したことをプロキシサーバが確認するイベントに対しモニタリングすることと、提出したリクエストの数および処理したリクエストの数に基づいて、サーバにおけるブロックリクエストのキュー内のリクエストの数を決定することとを担う。
【0063】
本明細書において、グローバル変数は、提出されたそれぞれのリクエストに対して、グローバル変数に1を加えられた値と、処理されたリクエストを受信したそれぞれの応答に対して上記のグローバル変数から1の値を引かれることを用いて提出されたリクエストの数の統計のために、グローバル変数が使用され得る。グローバル変数の最終値は、サーバにおけるブロックリクエストのキュー内のリクエストの数、すなわち、サーバによって処理されるサーバへ送信されたリクエストの数としてみなされ得る。
【0064】
さらに、ネットワーク接続が確立したリクエストの数を取得すべく、イベントモニタリングおよび統計モジュール20は、プロキシサーバがネットワーク接続を確立するが、いまだサーバへ転送されていないイベントもモニタリングし得る。このリクエストの数は、サーバが直面することとなる処理負荷を示し、コンピューティングリソースに続くスケジューリングにおいて、参照として使用し得るスケジューリングユニットのアシストファクタとして機能し得る。
【0065】
上記のように取得されるリクエストの数は、プロキシサーバの公開されたAPIを通してイベントモニタリングおよび統計モジュール20によって出力され得、例えば、HTTPプロトコルのようなコミュニケーションプロトコルが出力のために採用され得る。例えば、APIは、特定のURLを提供し得、スケジューリングシステムがURLにアクセスした場合、APIは、フォーマット化されたデータの形態において上記に記載のリクエストの数を提供し得るページを返すこととなる。すなわち、モニタリングサブユニット01は、URLに対応するページデータから、サーバにおけるブロックリクエストのキュー内のリクエストの数を取得すべくAPIによって提供されるURLにアクセスする。
【0066】
コンピューティングサブユニット02は、アプリケーションリクエストのブロッキングステータスを取得すべくモニタリングサブユニット01によって集計されたリクエストの数に対する解析および統計解析を実行することを担う。本明細書において、アプリケーションリクエストのブロッキングステータスは、特定のアプリケーションに関するリクエストのブロッキングステータスと、特定のインスタンスに関するリクエストのブロッキングステータスと、特定のホストに関するリクエストのブロッキングステータスとの少なくとも1つを含む。リクエストのために、それが対応する特定のアプリケーションは、それがアクセスするドメイン名に従って決定され得、それが対応する特定のホストは、それがアクセスするIPアドレスに従って決定され得、また、それが対応する特定のインスタンスは、それがアクセスするポートに従って決定され得る。
【0067】
モニタリングサブユニット01によるリクエストの数の集計が定期的に実行されるため、モニタリングサブユニット01は、集計されたデータをモニタリングデータベースへ送信し得、コンピューティングサブユニット02は、上記に記載のモニタリングデータベースにおけるデータに対する解析および統計解析を実行する。
【0068】
スケジューリングユニット10は、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに従って、アプリケーションに対するサーバのコンピューティングリソースをスケジューリングすることを担う。
【0069】
特に、スケジューリングユニット10は、以下のスケジューリングの少なくとも1つを実行し得る。
【0070】
特定のアプリケーションに関するリクエストのブロッキングステータスが第1の拡張条件を満たす場合、特定のアプリケーションに対する新たなインスタンスは、生成され得て、配置され得る。新たなインスタンスの配置は、比較的より低い負荷を有するホスト上に優先的に配置される新たなインスタンス(例えば、比較的より小さいブロックリクエストのキューにおけるリクエストの数を有する)と負荷分散法に基づき得る。特定のアプリケーションに関するリクエストのブロッキングステータスが第1の縮小条件を満たす場合、特定のアプリケーションに対してインスタンスが低減され得、終了するインスタンスにはリクエストが割り当てられ得ず、タスクがない場合、インスタンスは、終了し得る。
【0071】
特定のインスタンスに関するリクエストのブロッキングステータスが第2の拡張条件を満たす場合、特定のインスタンスに対してシステムリソースは増加され得、または他のインスタンスは、特定のインスタンスの負荷を分担すべく使用され得る。特定のインスタンスに関するリクエストのブロッキングステータスが第2の縮小条件を満たす場合、システムリソースは、特定のインスタンスに対して低減され得る。
【0072】
特定のホストに関するリクエストのブロッキングステータスが第3の拡張条件を満たす場合、他のホストは、特定のホストの負荷を分担すべく使用され得る。特定のホストに関するリクエストのブロッキングステータスが第3の縮小条件を満たす場合、インスタンスは、特定のホスト上に優先的に配置され得、または特定のホストは、他のホストの負荷を分担すべく優先的に使用され得る。
【0073】
これに基づき、現在使用されるフレキシブルなスケジューリング機構もシステムに組み込まれ得る。そのような場合、ブロックモニタリングユニット00は、また特定のアプリケーションに対するインスタンスによるリソース利用のモニタリングを担う。特定のアプリケーションに対するインスタンスによる平均リソースの利用が予め決められた第1の上限値より大きいまたは等しい場合、スケジューリングユニット10は、特定のアプリケーションに対してインスタンスを増加させ得る。特定のアプリケーションに対するインスタンスによる平均リソースの利用が予め決められた第1の下限値より小さいまたは等しい場合、スケジューリングユニット10は、特定のアプリケーションに対してインスタンスを低減させ得る。本明細書において、第1の上限値は、第1の下限値よりも大きい。
【0074】
インスタンスによるリソース利用が予め決められた第2の上限値より大きいまたは等しい場合、スケジューリングユニット10は、CPU、メモリ、またはIOリソースなどのようなインスタンスによって利用されるシステムリソースを増加させ得る。インスタンスによるリソース利用が予め決められた第2の下限値より小さいまたは等しい場合、スケジューリングユニット10は、インスタンスによって利用されるシステムリソースを低減させ得る。本明細書において、第2の上限値は、第2の下限値よりも大きい。
【0075】
ステータス検出ユニット30は、ホストの動作状態、処理またはアプリケーションの検出を担う。ホストがステータス検出ユニット30によって利用不可能として検出された場合、例えば、ホスト上のインスタンスの別のホストへまたは複数の他のホストへの移動がスケジューリングユニット10によって開始され得る。いくつかの実施形態において、別のホストまたは複数の他のホストへ移動した場合、インスタンスは、負荷分散法に従って、比較的より小さい負荷を有するホストへ優先的に移動し得る。
【0076】
処理がステータス検出ユニット30によって利用不可能として検出された場合、処理の再開がスケジューリングユニット10によって実行され得る。再開が不成功であった場合、処理上のインスタンスの移動が開始し得る。インスタンスは、他の処理へ移動し得、特に、同じホスト上の他の処理へ移動し得るが、いくつかの実施形態においてそれらは、他のホスト上の処理へ移動することが好ましい。
【0077】
ステータス検出ユニット30がアプリケーションの例外を検出した場合、スケジューリングユニット10は、アプリケーションを再開し得、またはアプリケーションに対するインスタンスの移動を開始し得、またはアラートを生成し得る。
【0078】
スケジューリングユニット10内に含まれるスケジューリングサブユニット11は、アプリケーションリクエストの予め決められたスケジューリングルールおよびブロッキングステータスに基づいたスケジューリング命令を生成し、管理サブユニット12へスケジューリング命令を送信することを担う。いくつかの実施形態において、スケジューリングサブユニット11は、ルールデータベースからスケジューリングルールを負荷し得る。データベースは、ユーザがスケジューリングルールを構成または変更し得るインターフェースを備え得る。
【0079】
管理サブユニット12は、具体的に、スケジューリングオペレーションを実行するためのユニットである。管理サブユニット12は、通常リソースの管理を担い、本開示の実施形態において、スケジューリング命令に従ってアプリケーションに対してサーバにおいてコンピューティングリソースをスケジューリングすることを担う。さらに、スケジューリングの結果は、スケジューリングサブユニット11に戻され得る。
【0080】
本開示の目的において、モジュールおよびユニットは、本明細書で記載される処理、特徴および/または機能を(ヒューマンインタラクションまたはヒューマンオーグメンテーションの有無にかかわらず)実行または促進する、ソフトウェア、ハードウェアもしくはファームウェア(またはそれらの組み合わせ)のシステム、処理または機能性、またはそれらのコンポーネントである。モジュールは、サブモジュールを含み得、ユニットは、サブユニットを含み得る。モジュール/ユニットのソフトウェアコンポーネントは、プロセッサによって実行されるコンピュータ可読媒体に格納され得る。モジュール/ユニットは、1つもしくは複数のサーバまたはデバイスと一体型であり得、または1つまたは複数のサーバ/デバイスによって負荷および実行され得る。1つまたは複数のモジュールは、エンジンまたはアプリケーションにグループ化され得る。
【0081】
本開示によって提供される実施形態における開示されたシステムおよび方法は、他の方法で実施され得ることを理解されたい。このような上記の実施形態は、単に例示的な記載に過ぎない。例えば、ユニットのパーティショニングは、単にロジカルで且つ機能的意味に過ぎなく、パーティショニングの他の方法は、実際に実施され得る。
【0082】
個々のコンポーネントとして記載されるユニットは、物理的に離れ得もしくは離れ得ず、ユニットとして示されるコンポーネントは、物理的なユニットであり得もしくはあり得ず、すなわち、それらは、1つの場所に位置され得、または複数のネットワークユニットに分配され得る。実際の必要性によって、ユニットの一部またはすべてが実施形態の目的を実現するために選択され得る。
【0083】
さらに、本開示のそれぞれの実施形態において、個々の機能ユニットは、1つの処理ユニットへ統合され得、または物理的に離れた方法で存在し得、または2つまたはそれより大きいまたは等しいユニットは、1つのユニットへ統合され得る。上記に記載の統合ユニットは、ハードウェアの形態で実施され得、またはソフトウェア機能ユニットと組み合わせたハードウェアの形態で実施され得る。
【0084】
ソフトウェア機能ユニットの形態で実施される統合ユニットは、コンピュータ可読記憶媒体に格納され得る。ソフトウェア機能ユニットは、記憶媒体内に格納され、コンピューティングデバイス(パーソナルコンピュータ、サーバであり得、またはネットワークデバイスもしくはそのようなものであり得る)を可能にする命令の数、または本開示のそれぞれの実施形態に記載の方法のステップの一部を実行するプロセッサを含む。上記の記憶媒体は、例えば、USBフラッシュディスク、モバイルハードディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、またはコンパクトディスク、またはピュア信号に対する有形の形態でプログラムコードに格納し得るさまざまな他の媒体などのような有形媒体を含む。
【0085】
上記に記載された実施形態は、単に本開示の好ましい実施形態に過ぎなく、これを限定する意図はない。これらの実施形態へのいかなる修正、等価的置き換え、および改良は、本開示の趣旨および原理から逸脱することなく、本開示の範囲内に包含されるものとみなされる。
[項目1]
リソーススケジューリングのための方法であって、
プロキシサーバにて、スケジューリングシステムによって、上記プロキシサーバを利用するアプリケーションシステム上のアプリケーションリクエストのリクエストキューをモニタリングする段階であって、上記アプリケーションシステムは、1つまたは複数のホストを含み、上記アプリケーションシステムによって処理される1つまたは複数のアプリケーションを動作させ、上記1つまたは複数のアプリケーションのそれぞれは、1つまたは複数のインスタンスを有している、段階と、
スケジューリングシステムによりスケジューリングされ、予め決められたスケジューリングルールおよび上記リクエストキューのステータスに従って上記1つまたは複数のアプリケーションのアプリケーション に対する上記アプリケーションシステムのコンピューティングリソースをスケジューリングする段階と
を備える方法。
[項目2]
上記リクエストキューを上記モニタリングする段階が、
上記リクエストキューからアプリケーションリクエストの数を決定する段階と、
上記リクエストキューの上記ステータスを取得すべく上記アプリケーションリクエストの数に基づいて統計解析を実行する段階と
を含む、項目1に記載の方法。
[項目3]
上記アプリケーションリクエストの上記数が、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホスト上で動作している上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホストのそれぞれのホストに対応する上記アプリケーションリクエストの数と
から選ばれた少なくとも1つのリクエストからなるリクエストのグループを含む、項目2に記載の方法。
[項目4]
上記アプリケーションリクエストの上記数を上記決定する段階は、
上記プロキシサーバの公開されたアプリケーションプログラミングインターフェース(API)を介して上記リクエストキューにおける上記アプリケーションリクエストの上記数を決定する段階を含む、項目2または3に記載の方法。
[項目5]
提出したリクエストの数および処理したリクエストの数は、上記APIを介して上記プロキシサーバから受信され、
上記リクエストキューにおける上記アプリケーションリクエストの上記数を上記決定する段階は、上記提出したリクエストの上記数および上記処理したリクエストの上記数の間の差を決定する段階である、項目4に記載の方法。
[項目6]
上記アプリケーションリクエストの上記数を上記決定する段階は、
上記APIによって提供されたユニフォームリソースロケータ(URL)にアクセスする段階と、
上記URLに対応するページデータから上記リクエストキューにおける上記アプリケーションリクエストの上記数を取得する段階と
を含む、項目4または5に記載の方法。
[項目7]
上記アプリケーションに対する上記アプリケーションシステムの上記コンピューティングリソースを上記スケジューリングする段階が、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューのステータスが第1の拡張条件を満たす場合、新たなインスタンスを生成し、上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューの上記ステータスが第1の縮小条件を満たす場合、インスタンスを低減させる段階と、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスに対応する上記リクエストキューのステータスが第2の拡張条件を満たす場合、上記コンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの上記インスタンスに対応する上記リクエストキューの上記ステータスが第2の縮小条件を満たす場合、上記コンピューティングリソースを低減させる段階と、
上記1つまたは複数のホストのそれぞれのホストに対して、上記ホストに対応する上記リクエストキューのステータスが第3の拡張条件を満たす場合、上記ホストの負荷を分担すべく上記1つまたは複数のホストの他のホストを使用し、上記1つまたは複数のホストのそれぞれホストに対して、上記ホストに対応する上記リクエストキューの上記ステータスが第3の縮小条件を満たす場合、上記1つまたは複数のホストの他のホストの負荷を分担すべく上記ホストを使用する段階と
のうち少なくとも1つ含み、
拡張条件が上記アプリケーションシステムの上記コンピューティングリソースの高い利用を示している予め決められた条件であり、
縮小条件が上記アプリケーションシステムの上記コンピューティングリソースの低い利用を示している予め決められた条件である、項目3から6のいずれか一項に記載の方法。
[項目8]
上記アプリケーションに対する上記アプリケーションシステムの上記コンピューティングリソースを上記スケジューリングする段階は、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションの上記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、上記アプリケーションのインスタンスの数を増加させ、上記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、上記アプリケーションのインスタンスの上記数を低減させる段階と、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、上記インスタンスのコンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの上記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、上記インスタンスの上記コンピューティングリソースを低減させる段階と
のうち少なくとも1つ含む、項目2から7のいずれか一項に記載の方法。
[項目9]
リソーススケジューリングのためのスケジューリングシステムであって、
1つまたは複数のプロセッサと、
上記1つまたは複数のプロセッサによって実行可能な命令を格納する非一時的コンピュータ可読メモリと
を備え、上記命令が上記スケジューリングシステムに、
プロキシサーバを利用しているアプリケーションシステム上のアプリケーションリクエストのリクエストキューを上記プロキシサーバでモニタリングさせ、上記アプリケーションシステムは、1つまたは複数のホストを含み、上記アプリケーションシステムによって処理される1つまたは複数のアプリケーションを動作させ、上記1つまたは複数のアプリケーションのそれぞれが、1つまたは複数のインスタンスを有し、
上記命令が予め決められたスケジューリングルールおよび上記リクエストキューのステータスに従って上記1つまたは複数のアプリケーションのアプリケーションに対する上記アプリケーションシステムのコンピューティングリソースをスケジューリングさせる、スケジューリングシステム。
[項目10]
モニタリングさせる上記命令が上記スケジューリングシステムにさらに、
上記リクエストキューからアプリケーションリクエストの数を決定させ、
上記リクエストキューの上記ステータスを取得すべくアプリケーションリクエストの上記数に基づいて統計解析を実行させる、項目9に記載のスケジューリングシステム。
[項目11]
上記アプリケーションリクエストの上記数が上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホスト上で動作している上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホストのそれぞれのホストに対応する上記アプリケーションリクエストの数とのうち少なくとも1つを含む、項目10に記載のスケジューリングシステム。
[項目12]
モニタリングする上記命令が上記スケジューリングシステムにさらに、上記プロキシサーバの公開されたアプリケーションプログラミングインターフェース(API)を介した上記リクエストキューにおける上記アプリケーションリクエストの上記数を決定させる、
項目10または11に記載のスケジューリングシステム。
[項目13]
提出したリクエストの数および処理したリクエストの数は、上記APIを介して上記プロキシサーバから受信され、上記リクエストキューにおける上記アプリケーションリクエストの上記数が上記提出したリクエストの上記数および上記処理したリクエストの上記数の間の差として決定される、項目12に記載のスケジューリングシステム。
[項目14]
モニタリングする上記命令が上記スケジューリングシステムにさらに、
上記APIによって提供されたユニフォームリソースロケータ(URL)にアクセスさせ、
上記URLに対応するページデータから上記リクエストキューにおける上記アプリケーションリクエストの上記数を取得させる、項目12または13に記載のスケジューリングシステム。
[項目15]
スケジューリング回路が、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューのステータスが第1の拡張条件を満たす場合、新たなインスタンスを生成し、上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューの上記ステータスが第1の縮小条件を満たす場合、インスタンスを低減させることと、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスに対応する上記リクエストキューのステータスが第2の拡張条件を満たす場合、上記コンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの上記インスタンスに対応する上記リクエストキューの上記ステータスが第2の縮小条件を満たす場合、上記コンピューティングリソースを低減させることと、
上記1つまたは複数のホストのそれぞれのホストに対して、上記ホストに対応する上記リクエストキューのステータスが第3の拡張条件を満たす場合、上記ホストの負荷を分担するべく上記1つまたは複数のホストの他のホストを使用し、上記1つまたは複数のホストのそれぞれのホストに対して、上記ホストに対応する上記リクエストキューの上記ステータスが第3の縮小条件を満たす場合、上記1つまたは複数のホストの他のホストの負荷を分担するべく上記ホストを使用することとのうち少なくとも1つを実行し、
拡張条件が上記アプリケーションシステムの上記コンピューティングリソースの高い利用を示している予め決められた条件であり、
縮小条件が上記アプリケーションシステムの上記コンピューティングリソースの低い利用を示している予め決められた条件である、項目11から14のいずれか一項に記載のスケジューリングシステム。
[項目16]
スケジューリング回路が上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションの上記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、上記アプリケーションのインスタンスの数を増加させ、上記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、上記アプリケーションのインスタンスの上記数を低減させることと、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、上記インスタンスのコンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの上記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、上記インスタンスの上記コンピューティングリソースを低減させることと
のうち少なくとも1つを実行する、項目11から15のいずれか一項に記載のスケジューリングシステム。
[項目17]
プロセッサによって実行された場合、上記プロセッサにリソーススケジューリングのための手順を実行させるコンピュータプログラムであって、上記手順は、
1つまたは複数のアプリケーションに対するアプリケーションシステムによって処理されるプロキシサーバでのアプリケーションリクエストのリクエストキューからアプリケーションリクエストの数を決定する手順と、
上記リクエストキューのステータスを取得すべくアプリケーションリクエストの数に基づいて、統計解析を実行する手順と、
予め決められたスケジューリングルールおよび上記リクエストキューのステータスに従って上記1つまたは複数のアプリケーションのアプリケーションに対する上記アプリケーションシステムのコンピューティングリソースをスケジューリングする手順と
を含む、コンピュータプログラム。
[項目18]
上記アプリケーションリクエストの数は、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホスト上で動作している上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対応する上記アプリケーションリクエストの数と、
上記1つまたは複数のホストのそれぞれのホストに対応する上記アプリケーションリクエストの数と
のうち少なくとも1つを含む、項目17に記載のコンピュータプログラム。
[項目19]
上記アプリケーションに対する上記アプリケーションシステムの上記コンピューティングリソースを上記スケジューリングする手順は、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューのステータスが第1の拡張条件を満たす場合、新たなインスタンスを生成し、上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションに対応する上記リクエストキューの上記ステータスが第1の縮小条件を満たす場合、インスタンスを低減させる手順と、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスに対応する上記リクエストキューのステータスが第2の拡張条件を満たす場合、上記コンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、それぞれの上記インスタンスに対応する上記リクエストキューの上記ステータスが第2の縮小条件を満たす場合、上記コンピューティングリソースを低減させる手順と、
上記1つまたは複数のホストのそれぞれのホストに対して、上記ホストに対応する上記リクエストキューのステータスが第3の拡張条件を満たす場合、上記ホストの負荷を分担すべく上記1つまたは複数のホストの他のホストを使用し、上記1つまたは複数のホストのそれぞれのホストに対して、上記ホストに対応する上記リクエストキューの上記ステータスが第3の縮小条件を満たす場合、上記1つまたは複数のホストの他のホストの負荷を分担すべく上記ホストを使用する手順と
のうち少なくとも1つを含み、
拡張条件が上記アプリケーションシステムの上記コンピューティングリソースの高い利用を示している予め決められた条件であり、
縮小条件が上記アプリケーションシステムの上記コンピューティングリソースの低い利用を示している予め決められた条件である、
項目18に記載のコンピュータプログラム。
[項目20]
上記アプリケーションに対する上記アプリケーションシステムの上記コンピューティングリソースを上記スケジューリングする手順は、
上記1つまたは複数のアプリケーションのそれぞれのアプリケーションに対して、上記アプリケーションの上記1つまたは複数のインスタンスのすべてのインスタンスの平均リソース利用が予め決められた第1の上限より大きいまたは等しい場合、上記アプリケーションのインスタンスの数を増加させ、上記平均リソース利用が予め決められた第1の下限より小さいまたは等しい場合、上記アプリケーションのインスタンスの上記数を低減させる手順と、
上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの最大リソース利用が予め決められた第2の上限より大きいまたは等しい場合、上記インスタンスのコンピューティングリソースを増加させ、上記1つまたは複数のアプリケーションのそれぞれの上記1つまたは複数のインスタンスのそれぞれのインスタンスに対して、上記インスタンスの上記最大リソース利用が予め決められた第2の下限より小さいまたは等しい場合、上記インスタンスの上記コンピューティングリソースを低減させる手順と
のうち少なくとも1つを含む、項目18または19に記載のコンピュータプログラム。