(57)【特許請求の範囲】
【請求項１】
タスクトランザクションサーバ（２２０）と、
少なくとも１つのタスクサーバ（２１０または２３０）と
を備え、
前記タスクトランザクションサーバ（２２０）は、前記タスクサーバ（２１０または２３０）から、タスクを要求するタスク要求を受信し、前記タスクサーバ（２１０または２３０）にフィードバックを提供し、要求された前記タスクの実行条件を記録するように構成され、前記タスクサーバ（２１０または２３０）は、前記タスク要求を前記タスクトランザクションサーバ（２２０）に送信し、前記タスクトランザクションサーバ（２２０）から受信した前記フィードバックに従い前記タスクを実行するように構成され、
前記少なくとも１つのタスクサーバが、
自己均衡ユニットと、
タスク実行ユニットと
をさらに備え、
前記自己均衡ユニットは、前記タスク要求を前記タスクトランザクションサーバに送信し、前記タスクトランザクションサーバから前記フィードバックを受信し、前記フィードバックに従い前記タスクを実行するように前記タスク実行ユニットをトリガするように構成され、
前記タスク実行ユニットは、前記自己均衡ユニットに接続され、前記タスクを実行するように構成され、
前記自己均衡ユニットは、前記タスクサーバが前記タスクを実行することができることを前記フィードバックが示している場合、前記タスクサーバがビジー状態であるかどうかをチェックし、さらに、前記タスクサーバがビジー状態である場合、タスクチェックメッセージを前記タスクトランザクションサーバに送信するように構成され、
前記タスクトランザクションサーバは、続いて別のタスクサーバが前記タスクを要求しているかどうかをチェックし、チェックの結果を前記自己均衡ユニットに返すように構成される
ことを特徴とする分散タスクシステム。
【請求項２】
前記タスク実行ユニットは、前記自己均衡ユニットの制御下で前記タスクを実行するように構成されることを特徴とする請求項１に記載の分散タスクシステム。
【請求項３】
前記少なくとも１つのタスクサーバが、前記自己均衡ユニットと接続され、前記タスク要求を送信するように前記自己均衡ユニットをトリガするために使用される、タスク戦略ユニットをさらに備えたことを特徴とする請求項１に記載の分散タスクシステム。
【請求項４】
前記システムは、タスクスレッドの現在の数および長期間のタスクスレッドの現在の数を判定するように構成され、
前記タスクサーバは、
前記タスクスレッドの現在の数が、タスクスレッドの数に対する設定境界値以上である、および
前記長期間のタスクスレッドの現在の数が、長期間のタスクスレッドの数に対する設定境界値以上である
という条件の少なくとも１つを満たす場合、ビジー状態であるとみなされることを特徴とする請求項１に記載の分散タスクシステム。
【請求項５】
前記システムは、タスクスレッドの現在の数および長期間のタスクスレッドの現在の数に基づいて、前記タスクサーバの実行妨害を判定するように構成され、前記タスクサーバは、前記タスクサーバの前記実行妨害が設定閾値以上の値を有する場合、ビジー状態であるとみなされることを特徴とする請求項１に記載の分散タスクシステム。
【請求項６】
前記システムは、前記タスクの実行データを取得し、前記実行データおよび前記タスクの実行時間に従い、前記実行データを複数のデータグループにグループ化し、各データグループを処理するように構成されることを特徴とする請求項１に記載の分散タスクシステム。
【請求項７】
前記タスクトランザクションサーバおよび前記少なくとも１つのタスクサーバは、ネットワークを介して接続されることを特徴とする請求項１に記載の分散タスクシステム。
【請求項８】
前記タスクトランザクションサーバおよび少なくとも１つの前記タスクサーバは、オンライン商取引の処理のために使用されるｅコマースシステムの一部であることを特徴とする請求項１に記載の分散タスクシステム。
【請求項９】
タスクトランザクションサーバ（２２０）と、
自己均衡ユニット（２１２または２３２）およびタスク実行ユニット（２１３または２３３）を有する、少なくとも１つのタスクサーバ（２１０または２３０）と
を備え、
前記タスクトランザクションサーバ（２２０）は、前記タスクサーバ（２１０または２３０）から前記タスクサーバが要求するタスクを受信し、前記タスクサーバ（２１０または２３０）が要求したタスクの実行条件を記録し、前記タスクサーバ（２１０または２３０）にフィードバックを提供するように構成され、
前記少なくとも１つのタスクサーバ（２１０または２３０）は、当該タスクサーバ（２１０または２３０）が要求するタスクを前記タスクトランザクションサーバ（２２０）に送信し、前記タスクトランザクションサーバ（２２０）から前記フィードバックを受信するように構成され、
前記タスクサーバ（２１０または２３０）の前記自己均衡ユニット（２１２または２３２）は、前記タスクトランザクションサーバ（２２０）からの前記フィードバックを処理し、前記タスクサーバ（２１０または２３０）が、当該タスクサーバ（２１０または２３０）が要求した前記タスクを実行するための実行基準を満たすかどうかを判定し、前記実行基準を満たす場合は、前記タスクサーバ（２１０または２３０）が要求した前記タスクを実行するように前記タスク実行ユニット（２１３または２３３）をトリガするように構成されることを特徴とする分散タスクシステム。
【請求項１０】
前記自己均衡ユニットは、前記タスクトランザクションサーバからの前記フィードバックを分析し、前記タスクサーバの運転状況を検査することにより、前記実行基準を満たすかどうかを判定することを特徴とする請求項９に記載の分散タスクシステム。
【請求項１１】
タスクサーバ（２１０または２３０）からタスクトランザクションサーバ（２２０）にタスクの要求を送信するステップと、（３０１）
前記タスクトランザクションサーバ（２２０）により、前記タスクの実行条件に基づき、前記タスクサーバ（２１０または２３０）が前記タスクを実行することができるかどうかを判定し、判定された結果を前記タスクサーバ（２１０または２３０）に送信するステップと、（３０４）
前記タスクサーバ（２１０または２３０）が前記タスクを実行することができるとタスクトランザクションサーバ（２２０）が判定した場合、前記タスクサーバ（２１０または２３０）がビジー状態であるかどうかを前記タスクサーバ（２１０または２３０）により最初にチェックするステップと、（３０５）
前記タスクサーバ（２１０または２３０）がビジー状態である場合、前記タスクサーバ（２１０または２３０）によりタスクチェックメッセージを前記タスクトランザクションサーバ（２２０）に送信するステップと、（３０６）
前記タスクトランザクションサーバ（２２０）により、別のタスクサーバが前記タスクを要求しているかどうかを次にチェックし、当該次のチェックの結果を前記タスクサーバ（２２０）に送信するステップと、
前記次のチェックの結果が肯定的である場合、前記タスクサーバ（２１０または２３０）により前記タスク要求を破棄し、（３０８）
前記次のチェックの結果が否定的である場合、前記タスクサーバ（２１０または２３０）により前記タスクを実行するステップと（３０９）
を含むことを特徴とする分散タスク管理方法。
【請求項１２】
タスクサーバにより前記タスク要求をタスクトランザクションサーバに送信した後、第１の時間間隔内に前記タスクトランザクションサーバからフィードバックが受信された場合、前記タスクサーバは前記タスクを実行し、それ以外の場合、別のタスク要求を前記タスクトランザクションサーバに送信することを特徴とする請求項１１に記載の分散タスク管理方法。
【請求項１３】
第２の時間間隔内に前記タスクトランザクションサーバからフィードバックが受信されない場合、前記タスク要求を破棄するステップをさらに含むことを特徴とする請求項１２に記載の分散タスク管理方法。
【請求項１４】
前記タスクトランザクションサーバにより、前記タスクサーバが前記タスクを実行することができるかどうかを判定するステップが、
前記タスクが別のタスクサーバにより現在実行中であるか否かをチェックするステップと、
前記タスクが別のタスクにより現在実行中の場合、前記タスクサーバは前記タスクを実行することができないと結論付け、それ以外の場合、前記タスクサーバは前記タスクを実行することができると結論付けるステップと
を含むことを特徴とする請求項１１に記載の分散タスク管理方法。
【請求項１５】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
タスクスレッドの現在の数が設定境界値以上であるかどうかを判定し、肯定的である場合、前記タスクサーバがビジー状態であると結論付けるステップを含むことを特徴とする請求項１１に記載の分散タスク管理方法。
【請求項１６】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
長期間のタスクスレッドの現在の数が設定境界値以上であるかどうかを判定し、肯定的である場合、前記タスクサーバがビジー状態であると結論付けるステップを含むことを特徴とする請求項１１に記載の分散タスク管理方法。
【請求項１７】
前記タスクサーバがビジー状態であるかどうかをチェックするステップが、
ＣＰＵ使用率、タスクスレッドの現在の数、および長期間のタスクスレッドの現在の数に基づいて、前記タスクサーバの実行妨害値を計算するステップと、
前記実行妨害値が設定閾値以上である場合、前記タスクサーバがビジー状態であると結論付けるステップと
を含むことを特徴とする請求項１１に記載の分散タスク管理方法。
【請求項１８】
前記タスクサーバにより前記タスクを実行するステップが、
前記タスクのデータを取得するステップと、
処理が必要なデータの量およびデータ処理時間に従い、前記データを複数のデータグループにグループ化するステップと、
各データグループを処理するステップと
を含むことを特徴とする請求項１１に記載の分散タスク管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータタスクスケジューリングおよびタスク戦略の分野に関し、特に、分散タスクシステムおよび分散タスク管理方法に関する。
【０００２】
本出願は、以前２００７年１月３０日に出願した中国特許出願、出願番号第２００７１０００２９６１．６号、発明の名称「分散タスクシステムおよび分散タスク管理方法」の利益を主張する。
【背景技術】
【０００３】
コンピュータ技術において、タスクは、設定された戦略に従い実行されるジョブである。例えば、Ｗｉｎｄｏｗｓ（登録商標）タスクシステムでは、「午前１２：５０にシステムを自動シャットダウンする」とタスクを設定することができる。午前１２：５０に、システムはこのタスクを実行し、自動シャットダウンのジョブを完了する。コンピュータプログラムでは、タスクは、プログラム内で呼び出されるサブルーチンであり得る。さらに、より複雑なコンピュータ環境では、タスクは、互いに関連した、または関連しない、膨大な数の計算ジョブにおける別個のジョブであり得る。
【０００４】
現在では、ほとんどのタスクシステムは単一システムである。単一システムの処理能力は非常に制限されている。タスクの複雑性および精度要件が増加し続けるに従い、タスクシステムの処理能力に対する要件もまた増加し、したがって単一システムは、もはやユーザの要望を満足し得ない。
【０００５】
タスクシステムの処理能力を増加させるために、分散タスクシステムが使用される。分散タスクシステムを使用して、１つの大きな問題を、多くの小さな問題に分割し、多くのコンピュータに分散することができる。例えば、分散コンピューティングは、ネットワークを介して互いに通信する２つ以上のコンピュータ上でプログラムの異なる部分が同時に実行される、コンピュータ処理の方法である。
【０００６】
分散タスクシステムは、通常、タスク戦略ユニットおよび一群のタスク実行ユニットを有する。タスク戦略ユニットの制御下で、各タスク実行ユニットは、処理を必要とする１つ以上のタスクを実行する。分散タスクシステムでは、通常、ユニットタスク時間内にタスクがただ１つのタスク実行ユニットにより行われることが必要とされる。これにより、分散タスクシステムにおいてタスクは線形に実行されることが確実となる。２つのタスク実行ユニットがタスク戦略ユニットから同じタスクを同時に実行する承認を受信することは、誤りと認識され得る。
【０００７】
図１は、現在の技術における一種の分散タスクシステムを示す。このシステムは、タスク戦略ユニット１１０およびＮ個のタスク実行ユニット１２０を含む。タスク戦略ユニット１１０は、各タスク実行ユニット１２０と通信する。タスク戦略ユニット１１０は、タスクを、タスク実行ユニット１２０のうちの１つに割り当て、各タスク実行ユニット１２０を監視および管理する。タスク実行ユニット１２０は、タスク戦略ユニット１１０から割り当てられたタスクを行い、その状況をタスク戦略ユニット１１０に報告する。タスク戦略ユニット１１０は、マルチサーバシステムの処理能力を達成するために、リモートプロシージャコール（ＲＰＣ：Remote Procedure Call）を介してタスク実行ユニットを拡張することができる。
【０００８】
しかしながら、図１に示される現在の分散タスクシステムでは、タスク実行ユニット１２０は、サービスのために受動的に呼び出され、タスクの分散化およびタスク戦略にほとんどまたは全く関与せず、それらは主にタスク戦略ユニット１１０のみにより行われる。これは、実行を必要とする多数のタスクが存在する場合、また特に長期間のタスクおよび短期間のタスクが互いに混在している場合、タスク実行ユニット１２０に対するタスク戦略ユニット１１０の制御はより弱くなり、さらにタスク実行ユニット１２０は制御不能にもなり得るため、不都合である。
【発明の概要】
【０００９】
本開示は、タスク実行ユニットは受動的に機能するためだけに呼び出すことができ、システムのタスク分散化を補助するための自己均衡動作を行うことができないという制限を克服するために使用される、分散タスク管理方法を説明する。タスクを実行するためにタスクトランザクションサーバにより単に受動的に呼び出されるかわりに、本開示のシステムにおけるタスクサーバは、タスク実行条件およびタスクサーバの運転状況に従い、自己均衡を行う。タスクトランザクションサーバは、タスクサーバからタスク要求を受信し、実行条件を記録し、タスクサーバにフィードバックを提供する。一方、タスクサーバは、受信したフィードバックおよびタスクサーバの運転状況に従いタスクを実行する。
【００１０】
一実施形態において、タスクサーバは、タスク要求をタスクトランザクションサーバに送信し、タスクトランザクションサーバからフィードバックを受信し、フィードバックに従いタスクを行うようにタスクサーバのタスク実行ユニットをトリガする、自己均衡ユニットを有する。タスク実行ユニットは、自己均衡ユニットに接続し、自己均衡ユニットの制御下でタスクを行う。タスクトランザクションサーバは、タスクの実行条件に従い、タスクサーバがタスクを実行することができるかどうかを判定し、次いでタスクサーバにフィードバックを送信する。タスクサーバがタスクを行うことができることをフィードバックが示している場合、タスクサーバの自己均衡ユニットは、さらに、タスクサーバがビジー状態であるかどうかを判定し、ビジー状態でない場合、タスクを実行するようにタスクサーバのタスク実行ユニットをトリガする。タスクサーバがビジー状態である場合、タスクサーバは、タスクチェックメッセージをタスクトランザクションサーバに送信する。タスクチェックメッセージの受信後、タスクトランザクションサーバは、他の任意のタスクサーバがこのタスクを要求しているかどうかをチェックし、チェック結果を自己均衡ユニットに送信する。
【００１１】
以下の条件のいずれか、または組合せを満たす場合、タスクサーバはビジー状態であるとみなされ得る。スレッドの現在の数が、スレッドの数に対する設定限界値以上である、長期間のスレッドの現在の数が、長期間のスレッドに対する設定限界値以上である、およびタスクサーバの実行妨害値が、設定閾値以上である。
【００１２】
タスクサーバは、自己均衡ユニットに接続し、タスク要求を送信するように自己均衡ユニットをトリガするために使用される、タスク戦略ユニットをさらに含み得る。
【００１３】
本開示の他の態様は、分散タスク管理方法に関する。この方法の一実施形態によれば、タスクサーバは、タスク要求をタスクトランザクションサーバに送信し、タスクトランザクションサーバは記録されたタスクの実行条件に基づいてタスクサーバがタスクを実行することができるかどうかを判定し、結果をタスクサーバに送信する。タスクの実行条件は、タスクの要求元または実行プログラム（executor）の識別、タスクの以前のタスク実行時間、およびタスク名等の情報を含み得る。判定の結果が肯定的である（すなわち、サーバがタスクを実行することができる）場合、タスクサーバはタスクを実行し得る。タスク要求をタスクトランザクションサーバに送信した後、第１の時間間隔内にタスクトランザクションサーバからフィードバックを受信した場合は、タスクサーバはタスクの実行を開始することができる。第１の時間間隔内にいかなるフィードバックも受信しなかった場合、タスクサーバは別のタスク要求を送信する。タスクサーバは、第２の時間間隔内にタスクトランザクションサーバからフィードバックを受信しなかった場合、タスクの要求を破棄する。
【００１４】
タスクがタスクサーバにより行われ得るかどうかを判定する例示的なプロセスによれば、タスクトランザクションサーバは、タスクサーバにより要求されたタスクの実行条件をチェックする。実行条件が、別のタスクサーバが現在同じタスクを実行中であることを示している場合、タスクトランザクションサーバは、要求タスクサーバが要求されたタスクを行うことができないと決定し得る。現在タスクを実行している他のタスクサーバがない場合、タスクトランザクションサーバは、要求タスクサーバが要求されたタスクを実行することができると決定し得る。
【００１５】
該方法の一実施形態において、タスクサーバは、自らをチェックしてビジー状態であるかどうかを判定する。ビジー状態でない場合、タスクサーバは要求されたタスクを行う。ビジー状態である場合、タスクサーバはタスクチェックメッセージを送信して、タスクトランザクションサーバに、同じタスクを要求している別のタスクサーバがあるかどうかをチェックし、要求タスクサーバの自己均衡ユニットにチェック結果を送信するように要求する。チェック結果が肯定的である場合、要求タスクサーバは、タスク要求を破棄する。それ以外の場合、タスクサーバはタスクを実行し得る。
【００１６】
タスクサーバがビジー状態であるかどうかを判定するために、タスクサーバは、タスクスレッドの現在の数が、スレッドの数に対する設定境界値以上であるかどうかを判定し得る。「はい」の場合、タスクサーバはビジー状態であるとみなされる。代替として、または追加的に、タスクサーバはまた、長期間のスレッドの現在の数が、長期間のタスクスレッドの数に対する設定境界値以上であるかどうかを判定し得る。「はい」の場合、タスクサーバはビジー状態であるとみなされる。一実施形態において、タスクサーバは、ＣＰＵ使用率、スレッドの現在の数、長期間のスレッドの現在の数に基づいてタスクサーバの実行妨害値を推定することにより、ビジー状態であるかどうかを判定する。実行妨害値が設定閾値（例えば１．０）以上である場合、タスクサーバはビジー状態であるとみなされる。
【００１７】
要求されたタスクを行うために、タスクサーバは、実行されているタスクに関するデータを取得し、データの特徴に従いデータを複数のデータグループにグループ化し、各データグループを処理する。
【００１８】
本明細書に開示されるシステムおよび方法は、タスク実行ユニット（例えば、タスクサーバ）がサービスのために受動的に呼び出され、自己均衡動作を行うことができないという制限を取り除くのに役立つ。既存の技術と比較して、分散タスクシステムおよび方法の例示的な実施形態は、以下の利点を有し得る。本明細書で開示される例示的な実施形態において、タスクサーバは、自己均衡ユニットを使用してその運転状況を検査する。タスクサーバがビジー状態である場合、実行のためにタスクを別のタスクサーバに転送し、これによりタスクサーバの自己均衡を達成する。自己均衡プロセスにおいて、タスクサーバは、単にタスクトランザクションサーバからの管理指示を受動的に待つのではなく、タスクトランザクションサーバを起動または能動的に支援して、実行のためにタスクを別のタスクサーバに転送する。この機構を使用して、実行が必要な多数のタスクがある場合、さらに長期間のタスクおよび短期間のタスクが互いに混在している場合でも、自己均衡ユニットは効果的にそのタスク実行ユニット（例えばタスクサーバ）を制御することができる。
【００１９】
さらに、本明細書で開示される例示的な実施形態は、タスクサーバのタスク要求に応じてフィードバックを提供するタスクトランザクションサーバを提供する。フィードバックは、要求されたタスクの実行条件に基づき、タスクの線形実行を確実にする。
【００２０】
本概要は、以下の発明を実施するための形態でさらに説明される選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求の範囲に記載されている主題事項の範囲の決定に際して、補助として使用することを目的とするものでもない。
【図面の簡単な説明】
【００２１】
発明を実施するための形態は、添付の図面を参照して説明される。図中、参照番号の最も左側の数字は、その参照番号が最初に現れる図面を特定するものである。異なる図面における同じ参照番号の使用は、同様または同一の物を指す。
【図１】既存の技術を使用した分散タスクシステムを示す図である。
【図２】本明細書による例示的な分散タスクシステムを示す図である。
【図３】本明細書による例示的な分散タスク管理方法のフローチャートである。
【図４】図３におけるタスク実行の例示的な前処理のフローチャートである。
【図５】本明細書のシステムおよび方法を実装するための例示的な環境を示す図である。
【発明を実施するための形態】
【００２２】
分散タスクシステムおよび分散タスク管理方法を、図面および例示的な実施形態を用いて以下に詳細に説明する。
【００２３】
図２は、本明細書による分散タスクシステムの例を示す。このシステムは、タスクサーバ２１０および２３０と、タスクトランザクションサーバ２２０とを有し、タスクトランザクションサーバ２２０はタスクサーバ２１０およびタスクサーバ２３０に別個に接続する。タスクトランザクションサーバ２２０は、タスクサーバ２１０およびタスクサーバ２３０からタスク要求を受信し、タスクサーバ２１０およびタスクサーバ２３０にフィードバックを提供し、各タスクの実行条件を記録するために使用される。タスクの実行条件は、タスクの要求元または実行プログラムの識別（すなわち、タスクを要求するタスクサーバ、タスクを実行するタスクサーバ、タスクを実行するために割り当てられるタスクサーバ内の実行プログラムおよびその数等）、タスクの以前の実行時間、およびタスク名等の情報を含み得る。タスクサーバ２１０およびタスクサーバ２３０は、それぞれ、タスク要求をタスクトランザクションサーバ２２０に送信し、タスクトランザクションサーバ２２０からのフィードバックに従い、それぞれのタスクを実行する。
【００２４】
タスクトランザクションサーバ２２０、ならびにタスクサーバ２１０および２３０は、本明細書に記載されるそのそれぞれの目的に好適な任意のコンピュータデバイスを表し得、実際のサーバコンピュータに限定されず、またスタンドアロン型の物理的コンピュータデバイスにも限定されないことが理解される。
【００２５】
タスクサーバ２１０は、タスク戦略ユニット２１１、自己均衡ユニット２１２、およびタスク実行ユニット２１３をさらに含み、自己均衡ユニット２１２は、タスク戦略ユニット２１１およびタスク実行ユニット２１３と接続する。同様に、タスクサーバ２３０は、タスク戦略ユニット２３１、自己均衡ユニット２３２、およびタスク実行ユニット２３３をさらに含み、自己均衡ユニット２３２は、タスク戦略ユニット２３１およびタスク実行ユニット２３３と接続する。以下、例示を目的としてタスクサーバ２１０をさらに詳細に説明する。説明は、タスクサーバ２３０にも適用され得る。図２における分散タスクシステムは、タスクサーバ２１０および２３０と同様、任意の数のタスクサーバを有し得ることも理解される。
【００２６】
タスクサーバ２１０のタスク戦略ユニット２１１を用いて自己均衡ユニット２１２をトリガして、タスク要求を送信する。自己均衡ユニット２１２を用いてタスク要求をタスクトランザクションサーバ２２０に送信し、タスクトランザクションサーバ２２０からフィードバックを受信する。タスクサーバ２１０がタスクを実行することができることをフィードバックが示している場合、自己均衡ユニット２１２は、タスクサーバ２１０がビジー状態かどうかをチェックする。タスクサーバ２１０がビジー状態でない場合、自己均衡ユニット２１２は、要求されたタスクを実行するようにタスク実行ユニット２１３に指示する。タスクサーバ２１０がビジー状態である場合、自己均衡ユニット２１２は、さらなる判定のために、タスクチェックメッセージをタスクトランザクションサーバ２２０に送信する。タスクチェックメッセージの受信後、トランザクションサーバ２２０は、同じタスクを要求している別のタスクサーバ（例えばタスクサーバ２３０）があるかどうかをチェックし、チェック結果を自己均衡ユニット２１２に返す。結果が肯定的である（すなわち別のタスクサーバがタスクを要求している）場合、タスクサーバ２１０は、そのタスクの要求を破棄し、タスクを実行するために、タスクトランザクションサーバ２２０に、他のタスクサーバ（例えばタスクサーバ２３０）からの要求を認めさせることができる。結果が否定的である（すなわち、他にタスクを要求しているタスクサーバがない）場合、自己均衡ユニット２１２は、タスクサーバ２１０がタスクを実行することができるときには、いずれにしてもタスク実行ユニット２１３にタスクを行うように指示することができる。
【００２７】
タスクサーバ２１０のビジー状態は、分散タスクシステムの特徴に基づき様々な手法で定義され得る。例えば、ビジー状態は、タスクサーバ２１０のスレッド（長期間のスレッドおよび短期間のスレッド等の全てのスレッドを含む）の現在の数が、スレッドの数に対する設定境界値以上である状態、長期間のスレッドの現在の数が、長期間のスレッドの数に対する設定境界値以上である状態、または、タスクサーバ２１０の実行妨害値が、設定閾値（例えば１．０）以上である状態となり得る。これらの条件因子の任意の組合せ、および他の好適な条件因子を使用して、タスクサーバ２１０のビジー状態を定義することができる。
【００２８】
例えば、タスクサーバ２１０におけるスレッドの数に対する設定境界値は、５００であってもよい。スレッドの現在の数が５００である場合、スレッドの現在の数はスレッドの数に対する設定境界値と等しく、従ってタスクサーバ２１０はビジー状態にあるとみなされ、追加のタスクを実行することができない。
【００２９】
別の例として、タスクサーバ２１０における長期間のスレッドの数に対する設定境界値は、５であってもよい。長期間のスレッドの現在の数が５である場合、長期間のスレッドの現在の数は長期間のスレッドの数に対する設定境界値と等しく、従ってタスクサーバ２１０はビジー状態にあるとみなされ、追加のタスクを実行することができない。
【００３０】
タスクサーバ２１０の実行妨害は、分散システムの特徴に好適な様々な手法で推定され得る。一実施形態において、タスクサーバ２１０の全体的な運転状況は、ＣＰＵ使用率および上述の条件因子の組合せにより推定される実行妨害により測定され得る。
【００３１】
例えば、タスクサーバ２１０の実行妨害値は、以下の式に従って得ることができる。
ＥＣ＝ＣＰＵ使用率×Ｗ1＋ＮＴ1d×Ｗ2／ＮＴ1d0＋ＮＴ×Ｗ3／ＮＴ0
ここで、ＥＣはタスクサーバ２１０の実行妨害、ＮＴ1dは長期間のスレッドの現在の数、ＮＴ1d0は長期間のスレッドの数に対する設定境界値、ＮＴは全てのスレッド（長期間および短期間）の現在の数、ＮＴ0は全てのスレッドの数に対する設定境界値、Ｗ1、Ｗ2およびＷ3は各条件因子に割り当てられた重みであり、経験的に得ることができる。Ｗ1、Ｗ2およびＷ3は、Ｗ1＋Ｗ2＋Ｗ3＝１．０であるように正規化されてもされなくてもよい。好ましくは、Ｗ1、Ｗ2およびＷ3は、１．０の実行妨害値が、それを超えるとタスクサーバは込み過ぎている（すなわちビジー状態である）とみなされて追加のタスクに利用できない閾値を示すように、経験的に選択される。
【００３２】
例示を目的として、タスクサーバ２１０のスレッドの数に対する設定境界値が５００であり、長期間のスレッドに対する設定境界値が５であると仮定する。タスクサーバ２１０の現在のＣＰＵ利用率が８５％、スレッドの現在の数が１００、長期間のスレッドの現在の数が３、Ｗ1、Ｗ2およびＷ３がそれぞれ０．８０、０．７５および０．４０である場合、タスクサーバの現在実行妨害値は以下のように推定され得る。
ＥＣ＝８０％×０．８０＋３×０．７５／５＋１００×０．４０／５００＝０．６８＋０．４５＋０．０８＝１．２１
【００３３】
上記Ｗ1、Ｗ2およびＷ3は、１．０を超える実行妨害値がビジー状態を示すように較正される。上記の推定実行妨害値は１．０を超えるため、タスクサーバ２１０はビジー状態であるとみなされ、追加のタスクを実行することができない。重みＷ1、Ｗ2およびＷ3の上記の例示的値（それぞれ０．８０、０．７５および０．４０）は、経験的に得られ、ハードウェアおよびオペレーティングシステムにおける変更に従い修正することができる。
タスクサーバ２１０のスレッドの数に対する設定境界値が５００であり、長期間のスレッドに対する設定境界値が５である別の例を考える。タスクサーバ２１０の現在のＣＰＵ使用率が８０％、長期間のスレッドの現在の数が２、スレッドの現在の数が５０の場合、実行妨害は以下のように推定される。
現在の実行妨害値＝８０％×０．８＋２×０．７５／５＋５０×０．４０／５００＝０．６４＋０．３＋０．０４＝０．９８＜１
【００３４】
現在の実行妨害値が１．０未満であるため、タスクサーバ２１０は、ビジー状態ではないとみなされ、したがって追加のタスクを実行することができる。しかしながら、もう１つの長期間のスレッドが実行されると、長期間のスレッドの現在の数は３となり、したがって、現在の実行妨害値＝８０％×０．８＋３×０．７５／５＋５０×０．４０／５００＝０．６４＋０．４５＋０．０４＝１．１３＞１である。したがってタスクサーバ２１０はビジー状態に変わる。すなわち、タスクサーバ２１０は、この状況では、ビジー状態に変わることなく、最大でも１つの追加の長期間のスレッドしか実施できない。
【００３５】
一方、もう１つの短期間スレッドが実行されると、現在の実行妨害値＝８０％×０．８＋２×０．７５／５＋５１×０．４０／５００＝０．６４＋０．３＋０．０４０８＝０．９８０８＜１である。したがって、タスクサーバ２１０は、１つの追加の短期間のタスクを実施した後でもまだビジー状態ではない。
【００３６】
上述の例に示されるように、タスクサーバの実行妨害の推定における長期間のタスクおよび短期間のタスクの差別的な処理により、タスクサーバが柔軟性をもって効果的な自己均衡が実施できるようになる。
【００３７】
図３は、図２の分散タスクシステムを使用した例示的なプロセスのフローチャートを示す。この説明において、プロセスが説明される順番は、限定として解釈されることを意図せず、本方法、または代替の方法を行うために、任意の数の説明されるプロセスブロックが任意の順番で組み合わされ得る。
【００３８】
例示的なプロセス３００において、タスクサーバは、タスク要求をタスクトランザクションサーバ２２０に送信する。次いで、タスクトランザクションサーバ２２０は、タスクの記録された実行条件に基づき、要求タスクサーバがタスクを実行することができるかどうかを判定し、要求タスクサーバに結果を送信する。チェック結果が肯定的である場合、要求タスクサーバは、タスクを実行する。本明細書で開示される、分散タスクシステム内のいかなるタスクサーバも、要求タスクサーバであり得る。例示を目的として、図２のタスクサーバ２１０は、以下において、タスクＡを実行するための要求タスクサーバ２２０と仮定される。プロセスの例示的な実施形態は、以下のように説明される。
【００３９】
ブロック３０１において、タスクサーバ２１０は、タスク要求をタスクトランザクションサーバ２２０に送信する。タスク戦略ユニット２１１は、タスクＡを実行するために要求をタスクトランザクションサーバ２２０に送信するよう自己均衡ユニット２１２をトリガする。
【００４０】
ブロック３０２において、タスクサーバ２１０は、設定された第１の時間間隔内にタスクトランザクションサーバ２２０からフィードバックが受信されたかどうかを判定する。「はい」である場合、プロセスはブロック３０４に進む。そうでない場合、プロセスはブロック３０３に進む。設定された第１の時間間隔は、分散タスクシステムおよびその管理に好適ないかなる現実的な時間であってもよい。
【００４１】
ブロック３０３において、タスクサーバ２１０は、タスクトランザクションサーバ２２０からフィードバックを受信することなく第２の時間間隔が経過したかどうかを判定する。「はい」である場合、プロセスはブロック３０８に進み、タスク要求を破棄する。そうでない場合、プロセスはブロック３０１に戻る。設定された第２の時間間隔は、分散システムおよびその管理に好適ないかなる現実的な時間であってもよい。一般に、第１の時間間隔がそうであるように、第２の時間間隔がプロセス３００の開始から数える場合、第２の時間間隔は、第１の時間間隔よりも長くなければならない。第２の時間間隔が第１の時間間隔の終了から数える場合、第２の時間間隔はいかなる好適な長さであってもよい。例えば、第２の時間間隔は３０秒であってもよく、またはスケジューリング間隔の分数（例えば１／３）であってもよい。
【００４２】
ブロック３０４において、タスクトランザクションサーバ２２０は、タスクサーバ２１０がタスクＡを実行することができるかどうかを判定し、フィードバックをタスクサーバ２１０に送信する。「はい」である場合、プロセスはブロック３０５に進む。それ以外の場合、プロセスはブロック３１０において終了する。判定は、タスク実行条件の記録に基づき得る。
【００４３】
タスクサーバ２１０がタスクＡを実行することができるかどうかを判定するために、タスクトランザクションサーバ２２０は、タスクＡのタスク実行条件、および必要な場合は、他の任意のタスクのタスク実行条件をチェックする。タスクの実行条件は、タスクの要求元または実行プログラムの識別（すなわち、タスクを要求するタスクサーバ、タスクを実行するタスクサーバ、タスクを実行するために割り当てられるタスクサーバ内の実行プログラムおよびその数等）、タスクの以前の実行時間、およびタスク名等の情報により特徴付けることができる。例えば、異なるタスクサーバ（タスクサーバ２３０）が現在タスクＡを実行していると判定された場合、タスクトランザクションサーバ２２０は、タスクサーバ２１０がタスクＡを同時に実行することができないと決定することができる。他のタスクサーバが現在タスクＡを実行していない場合、タスクサーバ２１０はタスクＡを実行することができる。
【００４４】
タスクサーバ２１０がタスクＡを実行することができないと判定された場合、プロセス３００はブロック３１０において終了することができる。しかし、タスクサーバ２１０がタスクＡを実行することができると判定された場合（例えばタスクＡがタスクサーバ２３０により実行されていないため）は、タスクトランザクションサーバ２２０はフィードバックをタスクサーバ２１０に送信して、タスクサーバ２１０がタスクＡを実行することができることを示し、プロセスはブロック３０５に進む。
【００４５】
ブロック３０５において、自己均衡ユニット２１２は、タスクサーバ２１０がビジー状態であるかどうかを検査する。「はい」である場合、プロセスはブロック３０６に進む。それ以外の場合、プロセスはブロック３０９に進む。自己均衡ユニット２１２は、以下を含むいくつかの因子を考慮することにより、タスクサーバ２１０がビジー状態であるかどうかを判定することができる。  
（ｉ）タスクサーバ２１０のスレッドの現在の数が、スレッドの数に対する設定境界値以上であるかどうか（「はい」の場合、タスクサーバ２１０はビジー状態である）。  
（ｉｉ）長期間のスレッドの現在の数が、長期間のスレッドの数に対する設定境界値以上であるかどうか（「はい」の場合、タスクサーバ２１０はビジー状態である）。  
（ｉｉｉ）タスクサーバ２１０の実行妨害値が、設定閾値（例えば１）以上であるかどうか（「はい」の場合、タスクサーバ２１０はビジー状態である）。
【００４６】
タスクサーバ２１０の実行妨害値は、ＣＰＵ使用率、スレッドの現在の数、および長期間のスレッドの現在の数に従い計算され得る。
【００４７】
プロセス３００が、以下の条件を有し得る例を考える。  
タスクサーバ２１０のスレッドの数に対する設定境界値が５００  
長期間のスレッドの数に対する現在の数が５  
タスクサーバ２１０の現在のＣＰＵ使用率が８５％  
長期間のスレッドの現在の数が３  
スレッドの現在の数が１００。
【００４８】
タスクサーバ２１０の実行妨害値は、以下の式により計算され得る。  
実行妨害値＝ＣＰＵ利用率×０．８＋長期間のスレッドの数×０．７５／５＋スレッドの数×０．４／５００
【００４９】
上記の式に従い、タスクサーバ２１０の現在の実行妨害値は、以下のように推定される。  
８５％×０．８＋３×０．７５／５＋１００×０．４／５００＝０．６８＋０．４５＋０．０８＝１．２１
【００５０】
上記の実行妨害値は１．０を超えるため、タスクサーバ２１０はビジー状態であるとみなされる。したがって、プロセスはブロック３０６に進む。
【００５１】
上記式中で使用されている重みの値０．８、０．７５および０．４は、経験的に得られる。これらは、分散タスクシステムのハードウェアおよびオペレーティングシステムにおける変更に従い修正することができる。
【００５２】
ブロック３０６において、自己均衡ユニット２１２は、タスクＡのチェックメッセージをタスクトランザクションサーバ２２０に送信する。チェックメッセージは、タスクトランザクションサーバ２２０に、同じくタスクＡの実行を要求している他の任意のタスクサーバがあるかどうかをチェックするように要求することができる。チェックメッセージは、タスクトランザクションサーバ２２０に、タスクサーバ２１０の現在のビジー状態を通知してもしなくてもよい。
【００５３】
ブロック３０７において、タスクトランザクションサーバ２２０は、他のタスクサーバ（例えばタスクサーバ２３０）がタスクＡを実行するように要求したかまたは要求しているかどうかをチェックする。「はい」である場合、プロセスはブロック３０８に進む。それ以外の場合、プロセスはブロック３０９に進み、タスクサーバ２１０に、要求されたタスクＡを実行するように指示する。タスクサーバ２１０のビジー状態に起因して、タスクＡの実行が遅延する場合がある。代替として、タスクトランザクションサーバ２２０は、タスクＡを実行することができる他の資源を用いてもよい。
【００５４】
ブロック３０８において、タスクＡの実行に別のタスクサーバが利用可能であると判定された場合、ビジー状態のタスクサーバ２１０は、タスクＡの実行の要求をキャンセルすることができ、３１０においてプロセスを終了する。
【００５５】
ブロック３０９において、自己均衡ユニット２１２は、タスクＡを実行するようにタスク実行ユニット２１３をトリガする。プロセス３００は、２つの例示的なシナリオでブロック３０９に到達する。第１のシナリオでは、タスクサーバ２１０がタスクＡを実行することができ、さらにビジー状態にないと判定されたため、タスクサーバ２１０は続いて要求されたタスクＡを実行する。第２のシナリオでは、タスクサーバ２１０はタスクを実行することができると判定されたが、タスクサーバ２１０は一時的にビジー状態であることが判明する。しかし同時に、タスクＡの実行を要求している他のタスクサーバはないこともあり得る。このシナリオでは、いずれにしてもタスクサーバ２１０にタスクＡを実行するように指示することが妥当となり得る。
【００５６】
図４は、図３においてタスクＡを実行する前の例示的な前処理のフローチャートを示す。タスクサーバ２１０のタスク実行ユニット２１３は、タスクＡを実行する前に前処理を行う。
【００５７】
ブロック４０１において、タスク実行ユニット２１３は、タスクＡのデータを受信する。該データは、タスクＡを実行する際に処理される。
【００５８】
ブロック４０２において、タスク実行ユニット２１３は、データの種類、およびデータを処理するために必要な実行時間に従い、受信したデータをデータグループにグループ化する。
【００５９】
ブロック４０３において、タスク実行ユニット２１３は、データグループを処理するために、実行プログラム等の実際の計算資源を各データグループに割り当てる。タスクサーバは、通常、ある特定のタスクを実行するために利用可能な複数の実行プログラムを有する。タスク実行ユニット２１３は、処理を必要とするデータの量およびデータを処理するために必要な時間等の各データグループの特徴に従い、タスクＡの各データグループを実行するために好適な数の実行プログラムを動的に判定することができる。例えば、ある特定のデータグループが１０００ユニットのデータを有し、１分以内に完了することを必要とする場合、タスク実行ユニット２１３は、このデータグループを処理するためには２０の実行プログラムが必要と決定し得る。したがって、タスク実行ユニット２１３は、必要とされる実行プログラムが利用可能である場合は、このデータグループを処理するために十分な数（例えば２０）の実行プログラムを割り当てる。
【００６０】
ブロック４０４において、実行ユニット２１３は、各データグループを処理し、タスクの実行条件を監視する。ブロック４０３に示されるように、実行ユニット２１３は、呼び出された実行プログラムが対応するデータグループの実行に最適であるように、異なる実行プログラムを呼び出して、異なるデータグループを実行することができる。実行ユニット２１３はまた、タスクＡの様々な実行条件を監視することができる。例えば、実行ユニット２１３が、タスク（またはタスクのある特定のデータグループ）が最長許容実行時間よりも長い時間を要したことを検出した場合、実行ユニット２１３は、タスクの実行が異常状態であることを示すためにマークを付けることができる。
【００６１】
上述の例示的な実施形態は、タスクサーバ２１０がビジー状態であるかどうかを検査し、タスクサーバ２１０がビジー状態であることが判定された場合、実行のためにタスクを別のタスクサーバに転送する、自己均衡ユニット２１２を使用して、自己均衡を達成することができる。さらに、タスクトランザクションサーバ２２０は、タスクサーバ２１０のタスク要求に応じてフィードバックを提供する。フィードバックは、各タスクの実行条件に基づき、要求されたタスクの線形実行を確実にする。
【００６２】
実装環境
上述の技術は、サーバ、パーソナルコンピュータ（ＰＣ）、または演算ユニットを有する携帯型デバイス等のコンピュータデバイスを活用して実装することができる。
【００６３】
図５は、本開示の方法を実装するための例示的な環境を示す。コンピュータシステム５０１は、プロセッサ５１０、Ｉ／Ｏデバイス５２０、コンピュータ読み取り可能な媒体（例えばメモリ）５３０、およびネットワークインタフェース（図示せず）を含む、コンピュータデバイス５０２により実装される。５４１、５４２、および５４３等の他のコンピュータデバイスも同様のコンポーネントを有し得る。コンピュータデバイス５０２は、ネットワーク５９０を介して、サーバ５４１、５４２、および５４３と接続される。各コンピュータデバイス５０２、５４１、５４２、および５４３は、タスクトランザクションサーバまたはタスクサーバとして機能するために使用され得る。例えば、コンピュータデバイス５０２は、タスクトランザクションサーバとして機能することができ、各コンピュータデバイス５４１、５４２、および５４３は、タスクサーバとして機能することができる。
【００６４】
コンピュータ読み取り可能な媒体５３０は、アプリケーションプログラムモジュール５３２およびデータ５３４（タスク実行条件のデータ等）を格納する。アプリケーションプログラムモジュール５３２は、プロセッサ５１０により実行された際に、プロセッサ５１０に、本明細書に記載のプロセス（例えば、図３〜図４のプロセス）の動作を行わせる命令を含有する。
【００６５】
コンピュータ読み取り可能な媒体は、コンピュータデータを格納するために好適ないかなるメモリであってもよいことが理解される。そのようなメモリデバイスは、ハードディスク、フラッシュメモリデバイス、光データ記憶装置、およびフロッピー（登録商標）ディスクを含むが、これらに限定されない。さらに、コンピュータ実行可能な命令を含有するコンピュータ読み取り可能な媒体は、ローカルシステムにおけるコンポーネント、または複数の遠隔システムのネットワークを介して分散したコンポーネントから構成され得る。コンピュータ実行可能な命令のデータは、有形の物理メモリデバイスとして提供されても、電子的に伝送されてもよい。
【００６６】
また、コンピュータデバイスは、プロセッサ、Ｉ／Ｏデバイス、およびメモリ（内蔵メモリまたは外付けメモリのいずれか）を有するいかなるデバイスであってもよく、パーソナルコンピュータに限定されないことも理解される。例えば、コンピュータデバイスは、サーバ、ＰＣ、ゲーム機、セットトップボックス、および、テレビ、ディスプレイ、プリンタまたはデジタルカメラ等の別の電子デバイスに内蔵された演算ユニットであってもよいが、これらに限定されない。
【００６７】
特に、各コンピュータデバイス５０２、５４１、５４２、および５４３は、サーバコンピュータ、または、インターネットもしくはイントラネットのいずれかあってもよいネットワーク５９０を介して接続された、そのようなサーバコンピュータのクラスタであってもよい。このように構成された本開示の分散タスクシステムは、オンライン商取引の処理のために使用されるｅコマースシステムの一部としての使用を含め、様々な計算タスクを扱うために使用し得る。
【００６８】
本発明の分散タスクシステムおよび分散タスク管理方法は、いかなる既存の分散タスクシステムおよび方法と組み合わせて使用してもよい。例えば、本開示の技術と組み合わせてリモートプロシージャコール（ＲＰＣ）を使用してもよい。ＲＰＣは、コンピュータプログラムが、この遠隔インタラクションの詳細を明確に符号化するプログラマなしで、サブルーチンまたはプロシージャに、別のアドレス空間（一般には共有ネットワーク上の別のコンピュータ上）において実行させることを可能にする。
【００６９】
本明細書において議論された潜在的な利益および利点は、添付の請求項の範囲に対する限定または制限として解釈されるべきではないことが理解される。
【００７０】
構造的特徴および／または方法論的動作に固有の言語で説明してきたが、添付の特許請求の範囲で定義される本発明の主題事項は、必ずしも説明した特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および動作は、本発明を実装する例示的な形態として開示されている。
【図１】
0005679256.tif 000002
【図２】
0005679256.tif 000003
【図３】
0005679256.tif 000004
【図４】
0005679256.tif 000005
【図５】
0005679256.tif 000006