特許第5679256号(P5679256)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ アリババ・グループ・ホールディング・リミテッドの特許一覧

特許5679256分散タスクシステムおよび分散タスク管理方法
<>
  • 特許5679256-分散タスクシステムおよび分散タスク管理方法 図000002
  • 特許5679256-分散タスクシステムおよび分散タスク管理方法 図000003
  • 特許5679256-分散タスクシステムおよび分散タスク管理方法 図000004
  • 特許5679256-分散タスクシステムおよび分散タスク管理方法 図000005
  • 特許5679256-分散タスクシステムおよび分散タスク管理方法 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5679256
(24)【登録日】2015年1月16日
(45)【発行日】2015年3月4日
(54)【発明の名称】分散タスクシステムおよび分散タスク管理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20150212BHJP
【FI】
   G06F9/46 465D
【請求項の数】18
【全頁数】16
(21)【出願番号】特願2009-548390(P2009-548390)
(86)(22)【出願日】2008年1月29日
(65)【公表番号】特表2010-517198(P2010-517198A)
(43)【公表日】2010年5月20日
(86)【国際出願番号】US2008052310
(87)【国際公開番号】WO2008094907
(87)【国際公開日】20080807
【審査請求日】2011年1月13日
【審判番号】不服2013-15071(P2013-15071/J1)
【審判請求日】2013年8月5日
(31)【優先権主張番号】200710002961.6
(32)【優先日】2007年1月30日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(74)【復代理人】
【識別番号】100115624
【弁理士】
【氏名又は名称】濱中 淳宏
(74)【復代理人】
【識別番号】100177057
【弁理士】
【氏名又は名称】出川 貴之
(72)【発明者】
【氏名】ヤオ ジアンドン
【合議体】
【審判長】 山崎 達也
【審判官】 西村 泰英
【審判官】 小林 大介
(56)【参考文献】
【文献】 特開2000−242614(JP,A)
【文献】 米国特許出願公開第2006/0195508(US,A1)
【文献】 特開平8−44678(JP,A)
【文献】 特開2003−178041(JP,A)
【文献】 国際公開第2005/057410(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46-9/54
(57)【特許請求の範囲】
【請求項1】
スクトランザクションサーバ(220)と、
少なくとも1つのタスクサーバ(210または230)と
を備え、
前記タスクトランザクションサーバ(220)は、前記タスクサーバ(210または230)から、タスクを要求するタスク要求を受信し、前記タスクサーバ(210または230)にフィードバックを提供し、要求された前記タスクの実行条件を記録するように構成され、前記タスクサーバ(210または230)は、前記タスク要求を前記タスクトランザクションサーバ(220)に送信し、前記タスクトランザクションサーバ(220)から受信した前記フィードバックに従い前記タスクを実行するように構成され、
前記少なくとも1つのタスクサーバが、
自己均衡ユニットと、
タスク実行ユニットと
をさらに備え、
前記自己均衡ユニットは、前記タスク要求を前記タスクトランザクションサーバに送信し、前記タスクトランザクションサーバから前記フィードバックを受信し、前記フィードバックに従い前記タスクを実行するように前記タスク実行ユニットをトリガするように構成され、
前記タスク実行ユニットは、前記自己均衡ユニットに接続され、前記タスクを実行するように構成され、
前記自己均衡ユニットは、前記タスクサーバが前記タスクを実行することができることを前記フィードバックが示している場合、前記タスクサーバがビジー状態であるかどうかをチェックし、さらに、前記タスクサーバがビジー状態である場合、タスクチェックメッセージを前記タスクトランザクションサーバに送信するように構成され、
前記タスクトランザクションサーバは、続いて別のタスクサーバが前記タスクを要求しているかどうかをチェックし、チェックの結果を前記自己均衡ユニットに返すように構成される
ことを特徴とする分散タスクシステム。
【請求項2】
前記タスク実行ユニットは、前記自己均衡ユニットの制御下で前記タスクを実行するように構成されることを特徴とする請求項に記載の分散タスクシステム。
【請求項3】
前記少なくとも1つのタスクサーバが、前記自己均衡ユニットと接続され、前記タスク要求を送信するように前記自己均衡ユニットをトリガするために使用される、タスク戦略ユニットをさらに備えたことを特徴とする請求項に記載の分散タスクシステム。
【請求項4】
前記システムは、タスクスレッドの現在の数および長期間のタスクスレッドの現在の数を判定するように構成され、
前記タスクサーバは、
前記タスクスレッドの現在の数が、タスクスレッドの数に対する設定境界値以上である、および
前記長期間のタスクスレッドの現在の数が、長期間のタスクスレッドの数に対する設定境界値以上である
という条件の少なくとも1つを満たす場合、ビジー状態であるとみなされることを特徴とする請求項に記載の分散タスクシステム。
【請求項5】
前記システムは、タスクスレッドの現在の数および長期間のタスクスレッドの現在の数に基づいて、前記タスクサーバの実行妨害を判定するように構成され、前記タスクサーバは、前記タスクサーバの前記実行妨害が設定閾値以上の値を有する場合、ビジー状態であるとみなされることを特徴とする請求項に記載の分散タスクシステム。
【請求項6】
前記システムは、前記タスクの実行データを取得し、前記実行データおよび前記タスクの実行時間に従い、前記実行データを複数のデータグループにグループ化し、各データグループを処理するように構成されることを特徴とする請求項1に記載の分散タスクシステム。
【請求項7】
前記タスクトランザクションサーバおよび前記少なくとも1つのタスクサーバは、ネットワークを介して接続されることを特徴とする請求項1に記載の分散タスクシステム。
【請求項8】
前記タスクトランザクションサーバおよび少なくとも1つの前記タスクサーバは、オンライン商取引の処理のために使用されるeコマースシステムの一部であることを特徴とする請求項1に記載の分散タスクシステム。
【請求項9】
タスクトランザクションサーバ(220)と、
自己均衡ユニット(212または232)およびタスク実行ユニット(213または233)を有する、少なくとも1つのタスクサーバ(210または230)と
を備え、
前記タスクトランザクションサーバ(220)は、前記タスクサーバ(210または230)から前記タスクサーバが要求するタスクを受信し、前記タスクサーバ(210または230)が要求したタスクの実行条件を記録し、前記タスクサーバ(210または230)にフィードバックを提供するように構成され、
前記少なくとも1つのタスクサーバ(210または230)は、当該タスクサーバ(210または230)が要求するタスクを前記タスクトランザクションサーバ(220)に送信し、前記タスクトランザクションサーバ(220)から前記フィードバックを受信するように構成され、
前記タスクサーバ(210または230)の前記自己均衡ユニット(212または232)は、前記タスクトランザクションサーバ(220)からの前記フィードバックを処理し、前記タスクサーバ(210または230)が、当該タスクサーバ(210または230)が要求した前記タスクを実行するための実行基準を満たすかどうかを判定し、前記実行基準を満たす場合は、前記タスクサーバ(210または230)が要求した前記タスクを実行するように前記タスク実行ユニット(213または233)をトリガするように構成されることを特徴とする分散タスクシステム。
【請求項10】
前記自己均衡ユニットは、前記タスクトランザクションサーバからの前記フィードバックを分析し、前記タスクサーバの運転状況を検査することにより、前記実行基準を満たすかどうかを判定することを特徴とする請求項に記載の分散タスクシステム。
【請求項11】
タスクサーバ(210または230)からタスクトランザクションサーバ(220)にタスク要求を送信するステップと、(301)
前記タスクトランザクションサーバ(220)により、前記タスクの実行条件に基づき、前記タスクサーバ(210または230)が前記タスクを実行することができるかどうかを判定し、判定された結果を前記タスクサーバ(210または230)に送信するステップと、(304)
前記タスクサーバ(210または230)が前記タスクを実行することができるとタスクトランザクションサーバ(220)が判定した場合、前記タスクサーバ(210または230)がビジー状態であるかどうかを前記タスクサーバ(210または230)により最初にチェックするステップと、(305)
前記タスクサーバ(210または230)がビジー状態である場合、前記タスクサーバ(210または230)によりタスクチェックメッセージを前記タスクトランザクションサーバ(220)に送信するステップと、(306)
前記タスクトランザクションサーバ(220)により、別のタスクサーバが前記タスクを要求しているかどうかを次にチェックし、当該次のチェックの結果を前記タスクサーバ(220)に送信するステップと、
前記次のチェックの結果が肯定的である場合、前記タスクサーバ(210または230)により前記タスク要求を破棄し、(308)
前記次のチェックの結果が否定的である場合、前記タスクサーバ(210または230)により前記タスクを実行するステップと(309)
を含むことを特徴とする分散タスク管理方法。
【請求項12】
タスクサーバにより前記タスク要求をタスクトランザクションサーバに送信した後、第1の時間間隔内に前記タスクトランザクションサーバからフィードバックが受信された場合、前記タスクサーバは前記タスクを実行し、それ以外の場合、別のタスク要求を前記タスクトランザクションサーバに送信することを特徴とする請求項11に記載の分散タスク管理方法。
【請求項13】
第2の時間間隔内に前記タスクトランザクションサーバからフィードバックが受信されない場合、前記タスク要求を破棄するステップをさらに含むことを特徴とする請求項12に記載の分散タスク管理方法。
【請求項14】
前記タスクトランザクションサーバにより、前記タスクサーバが前記タスクを実行することができるかどうかを判定するステップが、
前記タスクが別のタスクサーバにより現在実行中であるか否かをチェックするステップと、
記タスクが別のタスクにより現在実行中の場合、前記タスクサーバは前記タスクを実行することができないと結論付け、それ以外の場合、前記タスクサーバは前記タスクを実行することができると結論付けるステップと
を含むことを特徴とする請求項11に記載の分散タスク管理方法。
【請求項15】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
タスクスレッドの現在の数が設定境界値以上であるかどうかを判定し、肯定的である場合、前記タスクサーバがビジー状態であると結論付けるステップを含むことを特徴とする請求項11に記載の分散タスク管理方法。
【請求項16】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
長期間のタスクスレッドの現在の数が設定境界値以上であるかどうかを判定し、肯定的である場合、前記タスクサーバがビジー状態であると結論付けるステップを含むことを特徴とする請求項11に記載の分散タスク管理方法。
【請求項17】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
CPU使用率、タスクスレッドの現在の数、および長期間のタスクスレッドの現在の数に基づいて、前記タスクサーバの実行妨害値を計算するステップと、
前記実行妨害値が設定閾値以上である場合、前記タスクサーバがビジー状態であると結論付けるステップと
を含むことを特徴とする請求項11に記載の分散タスク管理方法。
【請求項18】
前記タスクサーバにより前記タスクを実行するステップが、
前記タスクのデータを取得するステップと、
処理が必要なデータの量およびデータ処理時間に従い、前記データを複数のデータグループにグループ化するステップと、
各データグループを処理するステップと
を含むことを特徴とする請求項11に記載の分散タスク管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータタスクスケジューリングおよびタスク戦略の分野に関し、特に、分散タスクシステムおよび分散タスク管理方法に関する。
【0002】
本出願は、以前2007年1月30日に出願した中国特許出願、出願番号第200710002961.6号、発明の名称「分散タスクシステムおよび分散タスク管理方法」の利益を主張する。
【背景技術】
【0003】
コンピュータ技術において、タスクは、設定された戦略に従い実行されるジョブである。例えば、Windows(登録商標)タスクシステムでは、「午前12:50にシステムを自動シャットダウンする」とタスクを設定することができる。午前12:50に、システムはこのタスクを実行し、自動シャットダウンのジョブを完了する。コンピュータプログラムでは、タスクは、プログラム内で呼び出されるサブルーチンであり得る。さらに、より複雑なコンピュータ環境では、タスクは、互いに関連した、または関連しない、膨大な数の計算ジョブにおける別個のジョブであり得る。
【0004】
現在では、ほとんどのタスクシステムは単一システムである。単一システムの処理能力は非常に制限されている。タスクの複雑性および精度要件が増加し続けるに従い、タスクシステムの処理能力に対する要件もまた増加し、したがって単一システムは、もはやユーザの要望を満足し得ない。
【0005】
タスクシステムの処理能力を増加させるために、分散タスクシステムが使用される。分散タスクシステムを使用して、1つの大きな問題を、多くの小さな問題に分割し、多くのコンピュータに分散することができる。例えば、分散コンピューティングは、ネットワークを介して互いに通信する2つ以上のコンピュータ上でプログラムの異なる部分が同時に実行される、コンピュータ処理の方法である。
【0006】
分散タスクシステムは、通常、タスク戦略ユニットおよび一群のタスク実行ユニットを有する。タスク戦略ユニットの制御下で、各タスク実行ユニットは、処理を必要とする1つ以上のタスクを実行する。分散タスクシステムでは、通常、ユニットタスク時間内にタスクがただ1つのタスク実行ユニットにより行われることが必要とされる。これにより、分散タスクシステムにおいてタスクは線形に実行されることが確実となる。2つのタスク実行ユニットがタスク戦略ユニットから同じタスクを同時に実行する承認を受信することは、誤りと認識され得る。
【0007】
図1は、現在の技術における一種の分散タスクシステムを示す。このシステムは、タスク戦略ユニット110およびN個のタスク実行ユニット120を含む。タスク戦略ユニット110は、各タスク実行ユニット120と通信する。タスク戦略ユニット110は、タスクを、タスク実行ユニット120のうちの1つに割り当て、各タスク実行ユニット120を監視および管理する。タスク実行ユニット120は、タスク戦略ユニット110から割り当てられたタスクを行い、その状況をタスク戦略ユニット110に報告する。タスク戦略ユニット110は、マルチサーバシステムの処理能力を達成するために、リモートプロシージャコール(RPC:Remote Procedure Call)を介してタスク実行ユニットを拡張することができる。
【0008】
しかしながら、図1に示される現在の分散タスクシステムでは、タスク実行ユニット120は、サービスのために受動的に呼び出され、タスクの分散化およびタスク戦略にほとんどまたは全く関与せず、それらは主にタスク戦略ユニット110のみにより行われる。これは、実行を必要とする多数のタスクが存在する場合、また特に長期間のタスクおよび短期間のタスクが互いに混在している場合、タスク実行ユニット120に対するタスク戦略ユニット110の制御はより弱くなり、さらにタスク実行ユニット120は制御不能にもなり得るため、不都合である。
【発明の概要】
【0009】
本開示は、タスク実行ユニットは受動的に機能するためだけに呼び出すことができ、システムのタスク分散化を補助するための自己均衡動作を行うことができないという制限を克服するために使用される、分散タスク管理方法を説明する。タスクを実行するためにタスクトランザクションサーバにより単に受動的に呼び出されるかわりに、本開示のシステムにおけるタスクサーバは、タスク実行条件およびタスクサーバの運転状況に従い、自己均衡を行う。タスクトランザクションサーバは、タスクサーバからタスク要求を受信し、実行条件を記録し、タスクサーバにフィードバックを提供する。一方、タスクサーバは、受信したフィードバックおよびタスクサーバの運転状況に従いタスクを実行する。
【0010】
一実施形態において、タスクサーバは、タスク要求をタスクトランザクションサーバに送信し、タスクトランザクションサーバからフィードバックを受信し、フィードバックに従いタスクを行うようにタスクサーバのタスク実行ユニットをトリガする、自己均衡ユニットを有する。タスク実行ユニットは、自己均衡ユニットに接続し、自己均衡ユニットの制御下でタスクを行う。タスクトランザクションサーバは、タスクの実行条件に従い、タスクサーバがタスクを実行することができるかどうかを判定し、次いでタスクサーバにフィードバックを送信する。タスクサーバがタスクを行うことができることをフィードバックが示している場合、タスクサーバの自己均衡ユニットは、さらに、タスクサーバがビジー状態であるかどうかを判定し、ビジー状態でない場合、タスクを実行するようにタスクサーバのタスク実行ユニットをトリガする。タスクサーバがビジー状態である場合、タスクサーバは、タスクチェックメッセージをタスクトランザクションサーバに送信する。タスクチェックメッセージの受信後、タスクトランザクションサーバは、他の任意のタスクサーバがこのタスクを要求しているかどうかをチェックし、チェック結果を自己均衡ユニットに送信する。
【0011】
以下の条件のいずれか、または組合せを満たす場合、タスクサーバはビジー状態であるとみなされ得る。スレッドの現在の数が、スレッドの数に対する設定限界値以上である、長期間のスレッドの現在の数が、長期間のスレッドに対する設定限界値以上である、およびタスクサーバの実行妨害値が、設定閾値以上である。
【0012】
タスクサーバは、自己均衡ユニットに接続し、タスク要求を送信するように自己均衡ユニットをトリガするために使用される、タスク戦略ユニットをさらに含み得る。
【0013】
本開示の他の態様は、分散タスク管理方法に関する。この方法の一実施形態によれば、タスクサーバは、タスク要求をタスクトランザクションサーバに送信し、タスクトランザクションサーバは記録されたタスクの実行条件に基づいてタスクサーバがタスクを実行することができるかどうかを判定し、結果をタスクサーバに送信する。タスクの実行条件は、タスクの要求元または実行プログラム(executor)の識別、タスクの以前のタスク実行時間、およびタスク名等の情報を含み得る。判定の結果が肯定的である(すなわち、サーバがタスクを実行することができる)場合、タスクサーバはタスクを実行し得る。タスク要求をタスクトランザクションサーバに送信した後、第1の時間間隔内にタスクトランザクションサーバからフィードバックを受信した場合は、タスクサーバはタスクの実行を開始することができる。第1の時間間隔内にいかなるフィードバックも受信しなかった場合、タスクサーバは別のタスク要求を送信する。タスクサーバは、第2の時間間隔内にタスクトランザクションサーバからフィードバックを受信しなかった場合、タスクの要求を破棄する。
【0014】
タスクがタスクサーバにより行われ得るかどうかを判定する例示的なプロセスによれば、タスクトランザクションサーバは、タスクサーバにより要求されたタスクの実行条件をチェックする。実行条件が、別のタスクサーバが現在同じタスクを実行中であることを示している場合、タスクトランザクションサーバは、要求タスクサーバが要求されたタスクを行うことができないと決定し得る。現在タスクを実行している他のタスクサーバがない場合、タスクトランザクションサーバは、要求タスクサーバが要求されたタスクを実行することができると決定し得る。
【0015】
該方法の一実施形態において、タスクサーバは、自らをチェックしてビジー状態であるかどうかを判定する。ビジー状態でない場合、タスクサーバは要求されたタスクを行う。ビジー状態である場合、タスクサーバはタスクチェックメッセージを送信して、タスクトランザクションサーバに、同じタスクを要求している別のタスクサーバがあるかどうかをチェックし、要求タスクサーバの自己均衡ユニットにチェック結果を送信するように要求する。チェック結果が肯定的である場合、要求タスクサーバは、タスク要求を破棄する。それ以外の場合、タスクサーバはタスクを実行し得る。
【0016】
タスクサーバがビジー状態であるかどうかを判定するために、タスクサーバは、タスクスレッドの現在の数が、スレッドの数に対する設定境界値以上であるかどうかを判定し得る。「はい」の場合、タスクサーバはビジー状態であるとみなされる。代替として、または追加的に、タスクサーバはまた、長期間のスレッドの現在の数が、長期間のタスクスレッドの数に対する設定境界値以上であるかどうかを判定し得る。「はい」の場合、タスクサーバはビジー状態であるとみなされる。一実施形態において、タスクサーバは、CPU使用率、スレッドの現在の数、長期間のスレッドの現在の数に基づいてタスクサーバの実行妨害値を推定することにより、ビジー状態であるかどうかを判定する。実行妨害値が設定閾値(例えば1.0)以上である場合、タスクサーバはビジー状態であるとみなされる。
【0017】
要求されたタスクを行うために、タスクサーバは、実行されているタスクに関するデータを取得し、データの特徴に従いデータを複数のデータグループにグループ化し、各データグループを処理する。
【0018】
本明細書に開示されるシステムおよび方法は、タスク実行ユニット(例えば、タスクサーバ)がサービスのために受動的に呼び出され、自己均衡動作を行うことができないという制限を取り除くのに役立つ。既存の技術と比較して、分散タスクシステムおよび方法の例示的な実施形態は、以下の利点を有し得る。本明細書で開示される例示的な実施形態において、タスクサーバは、自己均衡ユニットを使用してその運転状況を検査する。タスクサーバがビジー状態である場合、実行のためにタスクを別のタスクサーバに転送し、これによりタスクサーバの自己均衡を達成する。自己均衡プロセスにおいて、タスクサーバは、単にタスクトランザクションサーバからの管理指示を受動的に待つのではなく、タスクトランザクションサーバを起動または能動的に支援して、実行のためにタスクを別のタスクサーバに転送する。この機構を使用して、実行が必要な多数のタスクがある場合、さらに長期間のタスクおよび短期間のタスクが互いに混在している場合でも、自己均衡ユニットは効果的にそのタスク実行ユニット(例えばタスクサーバ)を制御することができる。
【0019】
さらに、本明細書で開示される例示的な実施形態は、タスクサーバのタスク要求に応じてフィードバックを提供するタスクトランザクションサーバを提供する。フィードバックは、要求されたタスクの実行条件に基づき、タスクの線形実行を確実にする。
【0020】
本概要は、以下の発明を実施するための形態でさらに説明される選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求の範囲に記載されている主題事項の範囲の決定に際して、補助として使用することを目的とするものでもない。
【図面の簡単な説明】
【0021】
発明を実施するための形態は、添付の図面を参照して説明される。図中、参照番号の最も左側の数字は、その参照番号が最初に現れる図面を特定するものである。異なる図面における同じ参照番号の使用は、同様または同一の物を指す。
図1】既存の技術を使用した分散タスクシステムを示す図である。
図2】本明細書による例示的な分散タスクシステムを示す図である。
図3】本明細書による例示的な分散タスク管理方法のフローチャートである。
図4図3におけるタスク実行の例示的な前処理のフローチャートである。
図5】本明細書のシステムおよび方法を実装するための例示的な環境を示す図である。
【発明を実施するための形態】
【0022】
分散タスクシステムおよび分散タスク管理方法を、図面および例示的な実施形態を用いて以下に詳細に説明する。
【0023】
図2は、本明細書による分散タスクシステムの例を示す。このシステムは、タスクサーバ210および230と、タスクトランザクションサーバ220とを有し、タスクトランザクションサーバ220はタスクサーバ210およびタスクサーバ230に別個に接続する。タスクトランザクションサーバ220は、タスクサーバ210およびタスクサーバ230からタスク要求を受信し、タスクサーバ210およびタスクサーバ230にフィードバックを提供し、各タスクの実行条件を記録するために使用される。タスクの実行条件は、タスクの要求元または実行プログラムの識別(すなわち、タスクを要求するタスクサーバ、タスクを実行するタスクサーバ、タスクを実行するために割り当てられるタスクサーバ内の実行プログラムおよびその数等)、タスクの以前の実行時間、およびタスク名等の情報を含み得る。タスクサーバ210およびタスクサーバ230は、それぞれ、タスク要求をタスクトランザクションサーバ220に送信し、タスクトランザクションサーバ220からのフィードバックに従い、それぞれのタスクを実行する。
【0024】
タスクトランザクションサーバ220、ならびにタスクサーバ210および230は、本明細書に記載されるそのそれぞれの目的に好適な任意のコンピュータデバイスを表し得、実際のサーバコンピュータに限定されず、またスタンドアロン型の物理的コンピュータデバイスにも限定されないことが理解される。
【0025】
タスクサーバ210は、タスク戦略ユニット211、自己均衡ユニット212、およびタスク実行ユニット213をさらに含み、自己均衡ユニット212は、タスク戦略ユニット211およびタスク実行ユニット213と接続する。同様に、タスクサーバ230は、タスク戦略ユニット231、自己均衡ユニット232、およびタスク実行ユニット233をさらに含み、自己均衡ユニット232は、タスク戦略ユニット231およびタスク実行ユニット233と接続する。以下、例示を目的としてタスクサーバ210をさらに詳細に説明する。説明は、タスクサーバ230にも適用され得る。図2における分散タスクシステムは、タスクサーバ210および230と同様、任意の数のタスクサーバを有し得ることも理解される。
【0026】
タスクサーバ210のタスク戦略ユニット211を用いて自己均衡ユニット212をトリガして、タスク要求を送信する。自己均衡ユニット212を用いてタスク要求をタスクトランザクションサーバ220に送信し、タスクトランザクションサーバ220からフィードバックを受信する。タスクサーバ210がタスクを実行することができることをフィードバックが示している場合、自己均衡ユニット212は、タスクサーバ210がビジー状態かどうかをチェックする。タスクサーバ210がビジー状態でない場合、自己均衡ユニット212は、要求されたタスクを実行するようにタスク実行ユニット213に指示する。タスクサーバ210がビジー状態である場合、自己均衡ユニット212は、さらなる判定のために、タスクチェックメッセージをタスクトランザクションサーバ220に送信する。タスクチェックメッセージの受信後、トランザクションサーバ220は、同じタスクを要求している別のタスクサーバ(例えばタスクサーバ230)があるかどうかをチェックし、チェック結果を自己均衡ユニット212に返す。結果が肯定的である(すなわち別のタスクサーバがタスクを要求している)場合、タスクサーバ210は、そのタスクの要求を破棄し、タスクを実行するために、タスクトランザクションサーバ220に、他のタスクサーバ(例えばタスクサーバ230)からの要求を認めさせることができる。結果が否定的である(すなわち、他にタスクを要求しているタスクサーバがない)場合、自己均衡ユニット212は、タスクサーバ210がタスクを実行することができるときには、いずれにしてもタスク実行ユニット213にタスクを行うように指示することができる。
【0027】
タスクサーバ210のビジー状態は、分散タスクシステムの特徴に基づき様々な手法で定義され得る。例えば、ビジー状態は、タスクサーバ210のスレッド(長期間のスレッドおよび短期間のスレッド等の全てのスレッドを含む)の現在の数が、スレッドの数に対する設定境界値以上である状態、長期間のスレッドの現在の数が、長期間のスレッドの数に対する設定境界値以上である状態、または、タスクサーバ210の実行妨害値が、設定閾値(例えば1.0)以上である状態となり得る。これらの条件因子の任意の組合せ、および他の好適な条件因子を使用して、タスクサーバ210のビジー状態を定義することができる。
【0028】
例えば、タスクサーバ210におけるスレッドの数に対する設定境界値は、500であってもよい。スレッドの現在の数が500である場合、スレッドの現在の数はスレッドの数に対する設定境界値と等しく、従ってタスクサーバ210はビジー状態にあるとみなされ、追加のタスクを実行することができない。
【0029】
別の例として、タスクサーバ210における長期間のスレッドの数に対する設定境界値は、5であってもよい。長期間のスレッドの現在の数が5である場合、長期間のスレッドの現在の数は長期間のスレッドの数に対する設定境界値と等しく、従ってタスクサーバ210はビジー状態にあるとみなされ、追加のタスクを実行することができない。
【0030】
タスクサーバ210の実行妨害は、分散システムの特徴に好適な様々な手法で推定され得る。一実施形態において、タスクサーバ210の全体的な運転状況は、CPU使用率および上述の条件因子の組合せにより推定される実行妨害により測定され得る。
【0031】
例えば、タスクサーバ210の実行妨害値は、以下の式に従って得ることができる。
EC=CPU使用率×W1+NT1d×W2/NT1d0+NT×W3/NT0
ここで、ECはタスクサーバ210の実行妨害、NT1dは長期間のスレッドの現在の数、NT1d0は長期間のスレッドの数に対する設定境界値、NTは全てのスレッド(長期間および短期間)の現在の数、NT0は全てのスレッドの数に対する設定境界値、W1、W2およびW3は各条件因子に割り当てられた重みであり、経験的に得ることができる。W1、W2およびW3は、W1+W2+W3=1.0であるように正規化されてもされなくてもよい。好ましくは、W1、W2およびW3は、1.0の実行妨害値が、それを超えるとタスクサーバは込み過ぎている(すなわちビジー状態である)とみなされて追加のタスクに利用できない閾値を示すように、経験的に選択される。
【0032】
例示を目的として、タスクサーバ210のスレッドの数に対する設定境界値が500であり、長期間のスレッドに対する設定境界値が5であると仮定する。タスクサーバ210の現在のCPU利用率が85%、スレッドの現在の数が100、長期間のスレッドの現在の数が3、W1、W2およびW3がそれぞれ0.80、0.75および0.40である場合、タスクサーバの現在実行妨害値は以下のように推定され得る。
EC=80%×0.80+3×0.75/5+100×0.40/500=0.68+0.45+0.08=1.21
【0033】
上記W1、W2およびW3は、1.0を超える実行妨害値がビジー状態を示すように較正される。上記の推定実行妨害値は1.0を超えるため、タスクサーバ210はビジー状態であるとみなされ、追加のタスクを実行することができない。重みW1、W2およびW3の上記の例示的値(それぞれ0.80、0.75および0.40)は、経験的に得られ、ハードウェアおよびオペレーティングシステムにおける変更に従い修正することができる。
タスクサーバ210のスレッドの数に対する設定境界値が500であり、長期間のスレッドに対する設定境界値が5である別の例を考える。タスクサーバ210の現在のCPU使用率が80%、長期間のスレッドの現在の数が2、スレッドの現在の数が50の場合、実行妨害は以下のように推定される。
現在の実行妨害値=80%×0.8+2×0.75/5+50×0.40/500=0.64+0.3+0.04=0.98<1
【0034】
現在の実行妨害値が1.0未満であるため、タスクサーバ210は、ビジー状態ではないとみなされ、したがって追加のタスクを実行することができる。しかしながら、もう1つの長期間のスレッドが実行されると、長期間のスレッドの現在の数は3となり、したがって、現在の実行妨害値=80%×0.8+3×0.75/5+50×0.40/500=0.64+0.45+0.04=1.13>1である。したがってタスクサーバ210はビジー状態に変わる。すなわち、タスクサーバ210は、この状況では、ビジー状態に変わることなく、最大でも1つの追加の長期間のスレッドしか実施できない。
【0035】
一方、もう1つの短期間スレッドが実行されると、現在の実行妨害値=80%×0.8+2×0.75/5+51×0.40/500=0.64+0.3+0.0408=0.9808<1である。したがって、タスクサーバ210は、1つの追加の短期間のタスクを実施した後でもまだビジー状態ではない。
【0036】
上述の例に示されるように、タスクサーバの実行妨害の推定における長期間のタスクおよび短期間のタスクの差別的な処理により、タスクサーバが柔軟性をもって効果的な自己均衡が実施できるようになる。
【0037】
図3は、図2の分散タスクシステムを使用した例示的なプロセスのフローチャートを示す。この説明において、プロセスが説明される順番は、限定として解釈されることを意図せず、本方法、または代替の方法を行うために、任意の数の説明されるプロセスブロックが任意の順番で組み合わされ得る。
【0038】
例示的なプロセス300において、タスクサーバは、タスク要求をタスクトランザクションサーバ220に送信する。次いで、タスクトランザクションサーバ220は、タスクの記録された実行条件に基づき、要求タスクサーバがタスクを実行することができるかどうかを判定し、要求タスクサーバに結果を送信する。チェック結果が肯定的である場合、要求タスクサーバは、タスクを実行する。本明細書で開示される、分散タスクシステム内のいかなるタスクサーバも、要求タスクサーバであり得る。例示を目的として、図2のタスクサーバ210は、以下において、タスクAを実行するための要求タスクサーバ220と仮定される。プロセスの例示的な実施形態は、以下のように説明される。
【0039】
ブロック301において、タスクサーバ210は、タスク要求をタスクトランザクションサーバ220に送信する。タスク戦略ユニット211は、タスクAを実行するために要求をタスクトランザクションサーバ220に送信するよう自己均衡ユニット212をトリガする。
【0040】
ブロック302において、タスクサーバ210は、設定された第1の時間間隔内にタスクトランザクションサーバ220からフィードバックが受信されたかどうかを判定する。「はい」である場合、プロセスはブロック304に進む。そうでない場合、プロセスはブロック303に進む。設定された第1の時間間隔は、分散タスクシステムおよびその管理に好適ないかなる現実的な時間であってもよい。
【0041】
ブロック303において、タスクサーバ210は、タスクトランザクションサーバ220からフィードバックを受信することなく第2の時間間隔が経過したかどうかを判定する。「はい」である場合、プロセスはブロック308に進み、タスク要求を破棄する。そうでない場合、プロセスはブロック301に戻る。設定された第2の時間間隔は、分散システムおよびその管理に好適ないかなる現実的な時間であってもよい。一般に、第1の時間間隔がそうであるように、第2の時間間隔がプロセス300の開始から数える場合、第2の時間間隔は、第1の時間間隔よりも長くなければならない。第2の時間間隔が第1の時間間隔の終了から数える場合、第2の時間間隔はいかなる好適な長さであってもよい。例えば、第2の時間間隔は30秒であってもよく、またはスケジューリング間隔の分数(例えば1/3)であってもよい。
【0042】
ブロック304において、タスクトランザクションサーバ220は、タスクサーバ210がタスクAを実行することができるかどうかを判定し、フィードバックをタスクサーバ210に送信する。「はい」である場合、プロセスはブロック305に進む。それ以外の場合、プロセスはブロック310において終了する。判定は、タスク実行条件の記録に基づき得る。
【0043】
タスクサーバ210がタスクAを実行することができるかどうかを判定するために、タスクトランザクションサーバ220は、タスクAのタスク実行条件、および必要な場合は、他の任意のタスクのタスク実行条件をチェックする。タスクの実行条件は、タスクの要求元または実行プログラムの識別(すなわち、タスクを要求するタスクサーバ、タスクを実行するタスクサーバ、タスクを実行するために割り当てられるタスクサーバ内の実行プログラムおよびその数等)、タスクの以前の実行時間、およびタスク名等の情報により特徴付けることができる。例えば、異なるタスクサーバ(タスクサーバ230)が現在タスクAを実行していると判定された場合、タスクトランザクションサーバ220は、タスクサーバ210がタスクAを同時に実行することができないと決定することができる。他のタスクサーバが現在タスクAを実行していない場合、タスクサーバ210はタスクAを実行することができる。
【0044】
タスクサーバ210がタスクAを実行することができないと判定された場合、プロセス300はブロック310において終了することができる。しかし、タスクサーバ210がタスクAを実行することができると判定された場合(例えばタスクAがタスクサーバ230により実行されていないため)は、タスクトランザクションサーバ220はフィードバックをタスクサーバ210に送信して、タスクサーバ210がタスクAを実行することができることを示し、プロセスはブロック305に進む。
【0045】
ブロック305において、自己均衡ユニット212は、タスクサーバ210がビジー状態であるかどうかを検査する。「はい」である場合、プロセスはブロック306に進む。それ以外の場合、プロセスはブロック309に進む。自己均衡ユニット212は、以下を含むいくつかの因子を考慮することにより、タスクサーバ210がビジー状態であるかどうかを判定することができる。
(i)タスクサーバ210のスレッドの現在の数が、スレッドの数に対する設定境界値以上であるかどうか(「はい」の場合、タスクサーバ210はビジー状態である)。
(ii)長期間のスレッドの現在の数が、長期間のスレッドの数に対する設定境界値以上であるかどうか(「はい」の場合、タスクサーバ210はビジー状態である)。
(iii)タスクサーバ210の実行妨害値が、設定閾値(例えば1)以上であるかどうか(「はい」の場合、タスクサーバ210はビジー状態である)。
【0046】
タスクサーバ210の実行妨害値は、CPU使用率、スレッドの現在の数、および長期間のスレッドの現在の数に従い計算され得る。
【0047】
プロセス300が、以下の条件を有し得る例を考える。
タスクサーバ210のスレッドの数に対する設定境界値が500
長期間のスレッドの数に対する現在の数が5
タスクサーバ210の現在のCPU使用率が85%
長期間のスレッドの現在の数が3
スレッドの現在の数が100。
【0048】
タスクサーバ210の実行妨害値は、以下の式により計算され得る。
実行妨害値=CPU利用率×0.8+長期間のスレッドの数×0.75/5+スレッドの数×0.4/500
【0049】
上記の式に従い、タスクサーバ210の現在の実行妨害値は、以下のように推定される。
85%×0.8+3×0.75/5+100×0.4/500=0.68+0.45+0.08=1.21
【0050】
上記の実行妨害値は1.0を超えるため、タスクサーバ210はビジー状態であるとみなされる。したがって、プロセスはブロック306に進む。
【0051】
上記式中で使用されている重みの値0.8、0.75および0.4は、経験的に得られる。これらは、分散タスクシステムのハードウェアおよびオペレーティングシステムにおける変更に従い修正することができる。
【0052】
ブロック306において、自己均衡ユニット212は、タスクAのチェックメッセージをタスクトランザクションサーバ220に送信する。チェックメッセージは、タスクトランザクションサーバ220に、同じくタスクAの実行を要求している他の任意のタスクサーバがあるかどうかをチェックするように要求することができる。チェックメッセージは、タスクトランザクションサーバ220に、タスクサーバ210の現在のビジー状態を通知してもしなくてもよい。
【0053】
ブロック307において、タスクトランザクションサーバ220は、他のタスクサーバ(例えばタスクサーバ230)がタスクAを実行するように要求したかまたは要求しているかどうかをチェックする。「はい」である場合、プロセスはブロック308に進む。それ以外の場合、プロセスはブロック309に進み、タスクサーバ210に、要求されたタスクAを実行するように指示する。タスクサーバ210のビジー状態に起因して、タスクAの実行が遅延する場合がある。代替として、タスクトランザクションサーバ220は、タスクAを実行することができる他の資源を用いてもよい。
【0054】
ブロック308において、タスクAの実行に別のタスクサーバが利用可能であると判定された場合、ビジー状態のタスクサーバ210は、タスクAの実行の要求をキャンセルすることができ、310においてプロセスを終了する。
【0055】
ブロック309において、自己均衡ユニット212は、タスクAを実行するようにタスク実行ユニット213をトリガする。プロセス300は、2つの例示的なシナリオでブロック309に到達する。第1のシナリオでは、タスクサーバ210がタスクAを実行することができ、さらにビジー状態にないと判定されたため、タスクサーバ210は続いて要求されたタスクAを実行する。第2のシナリオでは、タスクサーバ210はタスクを実行することができると判定されたが、タスクサーバ210は一時的にビジー状態であることが判明する。しかし同時に、タスクAの実行を要求している他のタスクサーバはないこともあり得る。このシナリオでは、いずれにしてもタスクサーバ210にタスクAを実行するように指示することが妥当となり得る。
【0056】
図4は、図3においてタスクAを実行する前の例示的な前処理のフローチャートを示す。タスクサーバ210のタスク実行ユニット213は、タスクAを実行する前に前処理を行う。
【0057】
ブロック401において、タスク実行ユニット213は、タスクAのデータを受信する。該データは、タスクAを実行する際に処理される。
【0058】
ブロック402において、タスク実行ユニット213は、データの種類、およびデータを処理するために必要な実行時間に従い、受信したデータをデータグループにグループ化する。
【0059】
ブロック403において、タスク実行ユニット213は、データグループを処理するために、実行プログラム等の実際の計算資源を各データグループに割り当てる。タスクサーバは、通常、ある特定のタスクを実行するために利用可能な複数の実行プログラムを有する。タスク実行ユニット213は、処理を必要とするデータの量およびデータを処理するために必要な時間等の各データグループの特徴に従い、タスクAの各データグループを実行するために好適な数の実行プログラムを動的に判定することができる。例えば、ある特定のデータグループが1000ユニットのデータを有し、1分以内に完了することを必要とする場合、タスク実行ユニット213は、このデータグループを処理するためには20の実行プログラムが必要と決定し得る。したがって、タスク実行ユニット213は、必要とされる実行プログラムが利用可能である場合は、このデータグループを処理するために十分な数(例えば20)の実行プログラムを割り当てる。
【0060】
ブロック404において、実行ユニット213は、各データグループを処理し、タスクの実行条件を監視する。ブロック403に示されるように、実行ユニット213は、呼び出された実行プログラムが対応するデータグループの実行に最適であるように、異なる実行プログラムを呼び出して、異なるデータグループを実行することができる。実行ユニット213はまた、タスクAの様々な実行条件を監視することができる。例えば、実行ユニット213が、タスク(またはタスクのある特定のデータグループ)が最長許容実行時間よりも長い時間を要したことを検出した場合、実行ユニット213は、タスクの実行が異常状態であることを示すためにマークを付けることができる。
【0061】
上述の例示的な実施形態は、タスクサーバ210がビジー状態であるかどうかを検査し、タスクサーバ210がビジー状態であることが判定された場合、実行のためにタスクを別のタスクサーバに転送する、自己均衡ユニット212を使用して、自己均衡を達成することができる。さらに、タスクトランザクションサーバ220は、タスクサーバ210のタスク要求に応じてフィードバックを提供する。フィードバックは、各タスクの実行条件に基づき、要求されたタスクの線形実行を確実にする。
【0062】
実装環境
上述の技術は、サーバ、パーソナルコンピュータ(PC)、または演算ユニットを有する携帯型デバイス等のコンピュータデバイスを活用して実装することができる。
【0063】
図5は、本開示の方法を実装するための例示的な環境を示す。コンピュータシステム501は、プロセッサ510、I/Oデバイス520、コンピュータ読み取り可能な媒体(例えばメモリ)530、およびネットワークインタフェース(図示せず)を含む、コンピュータデバイス502により実装される。541、542、および543等の他のコンピュータデバイスも同様のコンポーネントを有し得る。コンピュータデバイス502は、ネットワーク590を介して、サーバ541、542、および543と接続される。各コンピュータデバイス502、541、542、および543は、タスクトランザクションサーバまたはタスクサーバとして機能するために使用され得る。例えば、コンピュータデバイス502は、タスクトランザクションサーバとして機能することができ、各コンピュータデバイス541、542、および543は、タスクサーバとして機能することができる。
【0064】
コンピュータ読み取り可能な媒体530は、アプリケーションプログラムモジュール532およびデータ534(タスク実行条件のデータ等)を格納する。アプリケーションプログラムモジュール532は、プロセッサ510により実行された際に、プロセッサ510に、本明細書に記載のプロセス(例えば、図3図4のプロセス)の動作を行わせる命令を含有する。
【0065】
コンピュータ読み取り可能な媒体は、コンピュータデータを格納するために好適ないかなるメモリであってもよいことが理解される。そのようなメモリデバイスは、ハードディスク、フラッシュメモリデバイス、光データ記憶装置、およびフロッピー(登録商標)ディスクを含むが、これらに限定されない。さらに、コンピュータ実行可能な命令を含有するコンピュータ読み取り可能な媒体は、ローカルシステムにおけるコンポーネント、または複数の遠隔システムのネットワークを介して分散したコンポーネントから構成され得る。コンピュータ実行可能な命令のデータは、有形の物理メモリデバイスとして提供されても、電子的に伝送されてもよい。
【0066】
また、コンピュータデバイスは、プロセッサ、I/Oデバイス、およびメモリ(内蔵メモリまたは外付けメモリのいずれか)を有するいかなるデバイスであってもよく、パーソナルコンピュータに限定されないことも理解される。例えば、コンピュータデバイスは、サーバ、PC、ゲーム機、セットトップボックス、および、テレビ、ディスプレイ、プリンタまたはデジタルカメラ等の別の電子デバイスに内蔵された演算ユニットであってもよいが、これらに限定されない。
【0067】
特に、各コンピュータデバイス502、541、542、および543は、サーバコンピュータ、または、インターネットもしくはイントラネットのいずれかあってもよいネットワーク590を介して接続された、そのようなサーバコンピュータのクラスタであってもよい。このように構成された本開示の分散タスクシステムは、オンライン商取引の処理のために使用されるeコマースシステムの一部としての使用を含め、様々な計算タスクを扱うために使用し得る。
【0068】
本発明の分散タスクシステムおよび分散タスク管理方法は、いかなる既存の分散タスクシステムおよび方法と組み合わせて使用してもよい。例えば、本開示の技術と組み合わせてリモートプロシージャコール(RPC)を使用してもよい。RPCは、コンピュータプログラムが、この遠隔インタラクションの詳細を明確に符号化するプログラマなしで、サブルーチンまたはプロシージャに、別のアドレス空間(一般には共有ネットワーク上の別のコンピュータ上)において実行させることを可能にする。
【0069】
本明細書において議論された潜在的な利益および利点は、添付の請求項の範囲に対する限定または制限として解釈されるべきではないことが理解される。
【0070】
構造的特徴および/または方法論的動作に固有の言語で説明してきたが、添付の特許請求の範囲で定義される本発明の主題事項は、必ずしも説明した特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および動作は、本発明を実装する例示的な形態として開示されている。
図1
図2
図3
図4
図5