(57)【要約】  複数のコンピュータデバイスとデータベースとを含むクラウドコンピュータシステムが提供される。複数のコンピュータデバイスは複数の仮想マシンを実行し、仮想マシンのうちのひとつはコントローラノードとしての役割を果たし、残りは作業者インスタンスとしての役割を果たす。コントローラノードは、複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、複数の作業者インスタンスが複数のコンピュータデバイス上に生成されるようにすることと、を行うようプログラムされる。作業者インスタンスは、対応する作業者インスタンスについて一意のメッセージキューを生成することと、対応する作業者に対して生成された一意のメッセージキューへの参照をデータベースに格納することと、を行うようプログラムされる。コントローラノードは、一意のメッセージキューへの参照を取得し、作業者インスタンスによる実行のために、メッセージキューにジョブをポストする。【選択図】図１
2020510908.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピュータシステムであって、
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスと、
電子データストレージに保持されるデータベースと、を備え、
前記コントローラノードは、
複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されるようにすることと、を行うようプログラムされ、
前記複数の作業者インスタンスのそれぞれが、
前記対応する作業者インスタンスについて一意のメッセージキューを生成することと、
前記データベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、を行うようプログラムされ、
前記コントローラノードはさらに、
前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを取得することと、
前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、を行うようプログラムされ、
前記複数の作業者インスタンスのそれぞれが、さらに、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記読み出された少なくともひとつのデータジョブを処理するようプログラムされるクラウドコンピュータシステム。
【請求項２】
前記複数の作業者インスタンスのそれぞれが、さらに、
対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することを行うようプログラムされる請求項１に記載のクラウドコンピュータシステム。
【請求項３】
前記コントローラノードはさらに、
前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第１作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第１作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第１作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、を行うようプログラムされる請求項２に記載のクラウドコンピュータシステム。
【請求項４】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化機能中に実行される請求項１に記載のクラウドコンピュータシステム。
【請求項５】
前記コントローラノードはさらに、
前記データベースをポーリングすることによって、各対応する作業者インスタンスの前記一意のメッセージキューの前記参照がいつ該データベースに格納されたかを判定することを行うようプログラムされる請求項１に記載のクラウドコンピュータシステム。
【請求項６】
前記データジョブは、ラウンドロビンプロセスを用いて、前記一意のメッセージキューに対して発行される請求項１に記載のクラウドコンピュータシステム。
【請求項７】
前記複数の作業者インスタンスのそれぞれが、さらに、
前記生成された作業者インスタンスを一意に特定するインスタンス識別子を、前記一意のメッセージキューの前記参照に関連付けて前記データベースに格納することを行うようプログラムされる請求項１に記載のクラウドコンピュータシステム。
【請求項８】
前記複数の作業者インスタンスのうちのそれぞれは、前記分散プロセスの完了に際してシャットダウンされるかまたは破壊される請求項１に記載のクラウドコンピュータシステム。
【請求項９】
前記分散プロセスは、入力データ集合に基づいて少なくともひとつの報告を生成するプロセスである請求項８に記載のクラウドコンピュータシステム。
【請求項１０】
前記データベースが第１テーブルを含み、
新たに生成された作業者インスタンスのそれぞれは、さらに、少なくとも以下の列を伴う、前記第１テーブルの新たなレコードを生成する要求を提出するようプログラムされる請求項１に記載のクラウドコンピュータシステム：１）前記作業者インスタンスのインスタンス識別子、２）前記一意のメッセージキューの前記参照、３）前記作業者インスタンスの現在実行中のジョブに対応するジョブメッセージ、４）前記ジョブの開始時刻のタイムスタンプ、および５）前記ジョブの完了のタイムスタンプ。
【請求項１１】
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスを含むクラウドコンピュータシステムを動作させる方法であって、当該方法は、
前記コントローラノードにおいて、複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記コントローラノードにおいて、前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記コントローラノードにおいて、前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されることを要求することと、
前記コントローラノードからの前記要求に応じて実行されている前記複数の作業者インスタンスのうちのそれぞれにおいて、
（ａ）前記対応する作業者インスタンスについて一意のメッセージキューを生成することと、
（ｂ）前記クラウドコンピュータシステムのデータベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、
前記コントローラノードにおいて、前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを、前記データベースから、取得することと、
前記コントローラノードにおいて、前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、
前記複数の作業者インスタンスのそれぞれにおいて、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記少なくともひとつのデータジョブを処理することと、を含む方法。
【請求項１２】
各作業者インスタンスにおいて、少なくとも対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することをさらに含む請求項１１に記載の方法。
【請求項１３】
前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第１作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第１作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第１作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、をさらに含む請求項１２に記載の方法。
【請求項１４】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化プロセス中に実行される請求項１１に記載の方法。
【請求項１５】
前記データベースをポーリングすることによって、各対応する作業者インスタンスの前記一意のメッセージキューの前記参照がいつ該データベースに格納されたかを判定することをさらに含む請求項１１に記載の方法。
【請求項１６】
前記データジョブは、ラウンドロビンプロセスを用いて、前記一意のメッセージキューに対して発行される請求項１１に記載の方法。
【請求項１７】
前記作業者インスタンスのそれぞれにおいて、前記生成された作業者インスタンスを一意に特定するインスタンス識別子を、前記一意のメッセージキューの前記参照と共に、前記データベースに格納することをさらに含む請求項１１に記載の方法。
【請求項１８】
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスを含むクラウドコンピュータシステムで用いられるインストラクションを保持する非一時的ストレージ媒体であって、前記保持されるインストラクションは、
複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されるようにすることと、
各作業者インスタンスの一部として、前記対応する作業者インスタンスの一意のメッセージキューを生成することと、
各作業者インスタンスの一部として、前記データベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、
前記コントローラインスタンスの一部として、前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを取得することと、
前記コントローラインスタンスの一部として、前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、
各作業者インスタンスの一部として、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記読み出された少なくともひとつのデータジョブを処理することと、を行うよう構成されたインストラクションを含む非一時的ストレージ媒体。
【請求項１９】
前記保持されるインストラクションは、
対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することと、前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第１作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第１作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第１作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、を行うよう構成されたさらなるインストラクションを含む請求項１８に記載の非一時的ストレージ媒体。
【請求項２０】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化機能中に実行される非一時的ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１７年２月１６日に出願された米国特許仮出願第６２／４５９，７２２号の優先権の利益を享受する。その出願の内容の全体は、参照により本明細書に組み入れられる。本願は、２０１７年２月１６日に出願された米国特許仮出願第６２／４５９、７１１号および、本願と同じ日に出願された「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＯＦ  ＲＥＴＲＯＳＰＥＣＴＩＶＥＬＹ  ＤＥＴＥＲＭＩＮＩＮＧ  ＨＯＷ  ＳＵＢＭＩＴＴＥＤ  ＤＡＴＡ  ＴＲＡＮＳＡＣＴＩＯＮ  ＲＥＱＵＥＳＴＳ  ＯＰＥＲＡＴＥ  ＡＧＡＩＮＳＴ  Ａ  ＤＹＮＡＭＩＣ  ＤＡＴＡ  ＳＴＲＵＣＴＵＲＥ」（代理人ドケット番号４０１０−４２４）と題された出願をも、参照により組み入れる。
【０００２】
開示される技術はコンピュータプロセスのプロセスまたはタスクをスケジューリングすることに関する。特に、開示される技術は、クラウドベースのコンピュータシステムなどの分散環境におけるコンピュータプロセス、タスク、またはジョブのスケジューリングに関する。
【背景技術】
【０００３】
クラウド計算技術は、共有処理およびデータリソース（計算リソースと総称する）を提供する。この技術は、オンデマンドベースでの計算リソースの提供を可能とする。そこでは、クライアントコンピュータは１つから数千のハードウエアプロセッサを用いることができる。個人および機関は、大量の計算リソースを使用する可能性があるデータ処理を扱うために、この技術の柔軟性が魅力的であると感じている。
【０００４】
クラウド計算システムは任意の数の処理インスタンス（例えば、仮想マシンまたは物理的マシン）を提供するために使用可能であるが、そのようなリソースへのタスクの実際の提供は、典型的には、静的な動作または手作業である。例えば、気象データを解析するために５０個の異なる仮想マシンが生成された場合、それらの５０個の異なる仮想マシンが気象解析プロセスのためにどのように用いられるべきかの詳細を記述する静的設定が必要となろう。入来データおよび仮想マシンの数が比較的一定である（例えば、同じ量、同じタイプなど）ような所定の実装においては、静的設定はうまく働くが、入来データの量やタイプが（高度に）可変である場合には破綻する。言い換えると、クラウド計算環境において任意の数のインスタンスを生成することができるかもしれないが、それらのマシンを有効に活用するためには、プロセス全体が、それらの仮想マシンとどのように通信して、どのジョブを行うべきかに関してそれらのマシンにどのように命令するかを知らなくてはならない。
【０００５】
したがって、クラウド計算環境（例えば、そこでは、任意の数のサーバが利用可能でありうる）などの分散的動的環境においてタスクまたはジョブを管理またはスケジューリングする新たな技術が必要とされている。任意の数のサーバおよび／またはそれらのサーバのジョブプロセスにデータまたは情報を提供する技術も必要とされている。
【発明の概要】
【０００６】
ある例示的な実施の形態では、クラウドコンピュータシステム（システム）が提供される。システムは、電子データ通信ネットワークを介して結合された複数のコンピュータデバイスであって、複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサと電子データストレージとを有する複数のコンピュータデバイスを含む。各デバイスは少なくともひとつの仮想マシンインスタンスをホストするよう構成され、仮想マシンインスタンスのうちの少なくともひとつはコントローラインスタンス（例えばコントローラノード）として設定される。システムは、仮想マシンインスタンスのそれぞれによってアクセス可能なデータベースを含む。コントローラノードは、複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、を行うようプログラムされる。いったん決定されると、コントローラインスタンスは、複数の作業者インスタンスが複数のコンピュータデバイス上に（例えば、クラウドコンピュータシステム上に）生成されるようにする。生成された作業者インスタンスのそれぞれは、初期化プロセスの一部として、それ自身の一意のメッセージキューを生成し、データベースと通信することによって、そのメッセージキューへの参照をデータベースに格納する。コントローラノードはさらに、データベースから、メッセージキューへの参照を読み出し、メッセージキューにデータジョブを発行するようプログラムされる。
【０００７】
本概要は、以下の発明の詳細な説明でさらに説明される概念の選択を紹介するために提供される。本概要は、クレームに係る主題の主要な特徴または不可欠な特徴を識別することと、或いは、クレームに係る主題の範囲を限定するために用いられることとのいずれをも意図するものではなく、むしろ本概要は本書面で説明される主題の概観を提供することを意図するものである。したがって、上述した特徴は例示にすぎず、本明細書で説明される主題の他の特徴、態様、および利点は、後述する詳細な説明、図面、および請求項から明らかになるであろうということは理解されたい。
【図面の簡単な説明】
【０００８】
これらのおよび他の特徴ならびに利点は、図面を伴う例示的で非限定的で事例的な実施形態の以下の詳細な説明を参照することにより、よりよく完全に理解されるであろう。
【０００９】
【図１】複数の異なる処理インスタンスおよびそれらのインスタンスに対応するジョブを生成し、スケジューリングする例示的システムを示す。
【００１０】
【図２】所定の例示的な実施の形態に係る、図１のシステムがどのように初期化されるかの信号図を示す。
【００１１】
【図３】所定の例示的な実施の形態に係る、報告生成フェーズ中にジョブが作業者インスタンスにどのように提出されるかを示す。
【００１２】
【図４】本明細書で説明される特徴を実装するためにいくつかの実施の形態で使用され得る例示的な計算デバイスを示す。
【発明を実施するための形態】
【００１３】
以下の記載では、説明を目的とし、限定を目的とせず、記載の技術の理解を提供するために、特定のノード、機能エンティティ、技術、プロトコル等の具体的な詳細が説明される。他の実施の形態を、以下の詳細説明から離れて実施できることは当業者には明らかであろう。他の例では、周知の方法、デバイス、技術等の詳細説明は、不必要な詳細説明で説明を曖昧にしないために省略されている。
【００１４】
各セクションの一般的な主題について読者を方向付けるためにのみ、この詳細な説明でセクションが使用される。以下で明らかになるように、多くの特徴の説明は複数のセクションにまたがっており、表題は任意のセクションに含まれる説明の意味に影響をあたえるものとして読まれるべきではない。
概要
【００１５】
本明細書で説明される所定の例示的な実施の形態は、クラウド計算アーキテクチャおよびシステムに関する。ある例では、クラウドコンピュータシステムは、数百から数千の異なる物理的コンピュータ（例えば、図４に示される例示的なコンピュータシステム）を含む。クライアントおよびユーザがクラウドコンピュータシステムの処理リソースを用いるとき、それらは作業者インスタンス（処理インスタンスまたはインスタンスとも称される）を生成し、作業者インスタンスはユーザ／クライアントによって導かれてタスク（例えば、データを扱うジョブ、またはデータジョブ）を実行することができる。ある例では、作業者インスタンスは、クラウドコンピュータシステムの基礎にある処理リソースによって実現される仮想マシンと、それらの仮想マシンが実行するようプログラムされているタスクやジョブの集合と、の組み合わせである。仮想マシンは、システム仮想マシン（例えば、「現実の」コンピュータシステムの機能を複製するものであってしたがって完全仮想化されたもの）であってもよいし、プロセスベースの仮想マシン（例えば、プラットフォームに依存しない態様でコンピュータプログラムを実行可能なもの）であってもよい。作業者インスタンスは、新たなインスタンスが必要とされると生成され、そのインスタンスによって行われるようタスク化されたジョブが完了すると破壊されてもよい。
【００１６】
所定の例示的な実施の形態では、任意の数の作業者インスタンスを生成および破壊できるクラウドコンピュータシステムが提供される。作業者インスタンスのそれぞれには、入力データを受け、入力データを処理し、出力を（例えば、出力データや出力データの報告の形で）生成するひとつ以上のジョブが割り当てられる。所定の例示的な実施の形態では、コントローラノード（例えば、コントローラ機能でタスク化されたクラウドコンピュータシステムのインスタンス）は、入力データに基づいてジョブを行う作業者インスタンスの生成、破壊および／または制御でタスク化される。コントローラノードは、任意の数の作業者インスタンスの生成を要求するようプログラムされる。作業者インスタンスのそれぞれは、次いで、対応する入力キュー（例えば、対応する作業者インスタンスはそのキューから入力データを読み出すであろう）を生成する。各作業者インスタンスはまた、対応して生成されたキューの位置（例えば、ＵＲＬなどのそのキューへの参照）および／または作業者インスタンスへのポインタまたは他の参照を、データベースに書き込む。作業者インスタンスの生成およびその後続のデータベースとの通信は、作業者インスタンスの初期化フェーズと総称されてもよい。初期化フェーズ中、コントローラは、要求された作業者インスタンスの全てがその対応するインスタンスおよびキュー参照の詳細をうめるまでデータベースに対して周期的にクエリを行う。コントローラノードが作業者インスタンスの対応するキューへの参照（例えば、ＵＲＬ）を取得すると、それは、次いで、作業者インスタンスに関連付けられたキューにジョブを発行することによって、作業者インスタンスをジョブでタスク化してもよい。
【００１７】
図１から４の以下の説明を含むがそれに限定されない本書の多くの箇所で、ソフトウエアモジュールおよびソフトウエアモジュールによって行われる動作が説明される。これは、説明を容易にするために行われ、ソフトウエアモジュールが任意の動作を実行することが本明細書で説明されるときはいつでも、その動作は実際にはソフトウエアモジュールを構成するインストラクションに従って、基礎となるハードウエア要素（プロセッサおよびメモリデバイス）によって実行されることを理解されたい。これに関するさらなる詳細は、他の場所の中でもとりわけ、図４の説明において以下に提供される。
図１の説明：
【００１８】
図１は、複数の異なる処理インスタンス（「作業者インスタンス」または単に「インスタンス」と称される場合がある）とそれらのインスタンスに対応するジョブとを生成しスケジューリングするための例示的なクラウドコンピュータシステムを示す。クラウドコンピュータシステム１００は二つの主なコンポーネントを含む。第１のものはコントローラノード（本明細書においてコントローラインスタンスと称される場合がある）１０２であり、第２のものはコントローラノード１０２による要求に応じて動的に生成される作業者インスタンス１１６Ａ、１１６Ｂ、１１６Ｃである。
【００１９】
コントローラノード１０２は仮想マシン（または仮想コンテナ、または他の仮想環境）インスタンスであり、これは、クラウドコンピュータシステム１００のハードウエア計算リソースを構成する複数のハードウエアコンピュータノード１０３ｎのうちのひとつの上で動作する。ある例では、ハードウエアコンピュータノード１０３ｎのそれぞれは物理的なサーバまたはコンピュータ（例えば、図４に示されるようなもの）であり、これらは電子データ通信ネットワーク（例えば、ギガビットイーサネットまたは他のタイプのデータ通信技術）を介して互いに接続される。
【００２０】
コントローラノード１０２はコントローラプロセス１０８を含み、コントローラプロセス１０８は、新たな作業者インスタンスの生成を要求し、入来データを処理し、ジョブを分配し、プロセス全体の進行を制御し、クラウド計算システム１００およびそのインスタンスによって行われている各ジョブの進行を制御するための処理ロジック（例えば、コンピュータプログラム）を含む。
【００２１】
各作業者インスタンス１１６Ａ〜１１６Ｃは、仮想マシン（例えば、インスタンスまたはコンテナ）と、その仮想マシン内で実行されているプロセスやスレッド（作業者）と、の組み合わせである。したがって、インスタンスおよび実行される作業者は作業者インスタンスと称され、これは、対応するキュー１１４Ａ〜１１４Ｃにポスティングされたジョブおよびデータを処理することができる。作業者インスタンスは状態なし不変インスタンスであり、それらの対応するキュー１１４Ａ〜１１４Ｃを用いて、それらに作業（例えば、ジョブ）が割り当てられるまで待機する。所定の例示的な実施の形態では、作業はキューに、ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）オブジェクトの形で伝達される。これは、可読性があるがコンピュータによって容易にパース可能でもあるデータ互換フォーマットである。他のタイプのデータフォーマットも使用可能である。
【００２２】
例示的なクラウドコンピュータシステムは、処理要件に応じて異なるタイプのインスタンスを提供するＡｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＡＷＳ）クラウドコンピュータシステムであってもよい。ある例では、各インスタンスは、基礎にある処理リソース（例えば、図４に示されるコンピュータシステムなど）によってサポートされる。ある例では、複数の異なるインスタンスは同じ基礎にある処理リソースを共有する（例えば、同じコンピュータデバイスによって処理される）。ある例では、基礎にあるハードウエアは単一のインスタンス専用であってもよい。クラウドコンピュータシステムアーキテクチャの柔軟性は、タスクやジョブを完了するために用いられるインスタンスを処理するための多様な異なるスキームを提供することが理解されるであろう。
【００２３】
所定の例示的な実施の形態では、全てのインスタンス（例えば、作業者インスタンスおよびコントローラインスタンス）が共通システムイメージ（例えば、これはクラウドコンピュータシステムで生成される、コントローラノードを含む全ての異なるインスタンスに亘って用いられる）を共有する。それらのインスタンスのうち、コントローラノードは長期間実行されるインスタンスであり、作業者インスタンスはコントローラノードのコントローラプロセス１０８によって生成され、終了される。所定の例示的な実施の形態では、コントローラインスタンスはグループサイズ１にオートスケールされる。これにより、クラウド計算システム１００が常に実行中のコントローラインスタンスのひとつのインスタンスを有することが保証される。ある例では、新たに生成されたインスタンスが開始されると、そのインスタンスがどの役割（コントローラまたは作業者）を有すべきかを示すユーザデータがそのインスタンスに渡される（例えば、そのスタートアップの一部として）。インスタンスがコントローラノードにマークされている場合、コントローラプロセスが開始されてもよい。しかしながら、インスタンスが作業者インスタンスである場合、作業者プロセスのサービスが開始される。このタイプの展開アーキテクチャは、インスタンスのただひとつのイメージのみを生成すればよいので、展開をより容易にする。
【００２４】
コントローラノード１０２はｃｒｏｎ（クロン）ジョブ１０４を含むか保持する。これは所定の期間に（例えば、毎晩午後１１時に）実行されるよう構成されたスクリプトまたはプロセスである。この例では、ｃｒｏｎジョブ１０４はプロセスの開始を伝えるために用いられ、このプロセスは所与の日付の入力を取得し、この入力はその日付のデータの報告を生成する。ｃｒｏｎジョブは、キュー１０６を介してコントローラプロセス１０８と通信する。ある例では、キューはＡＷＳの一部であるシンプルキューサービス（ＳＱＳ）を用いて実現される。
【００２５】
システム１００と相互作用するユーザまたはクライアントの認証および承認サービスを提供するＳＱＲＬリポジトリもまた、システム１００に含まれる。ＳＱＲＬは、ウェブサイト等のための安全で素早くて信頼性の高いログイン機能のオープンスタンダードである。ＦＴＰサイト１１２は、システム１００を用いることによって生成された報告および／または他の出力を保持するためのストレージ領域である。ユーザは、次いで、ＦＴＰサイト１１２にアクセスし、データ（例えば、生成された報告）を取得する。
【００２６】
報告生成器１１８は、作業者インスタンスから処理され出力されたデータから最終的な報告を生成する他のインスタンス（またはコントローラインスタンスの一部）であってもよい。例えば、各作業者インスタンスはデータリストを返すか出力し、報告生成器１１８は、出力されたリストから、処理の結果を視覚的に示すためのチャート等を伴う報告を（例えば、ＰＤＦ形態またはウェブページで）生成してもよい。報告生成器１１８の結果および／または作業者インスタンス１１６Ａ〜１１６Ｃからの出力は、中間ストレージ１２０に格納されてもよい。データベース１２２および／または中間ストレージ１２０は、インスタンス１１６によって処理されるデータを（例えば、バルク形態で）保持するために用いられてもよい。所定の例示的な実装では、データベース１２２はｄｙｎａｍｏＤＢであり、これは、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（ＡＷＳ）によって提供されるクラウドコンピュータシステムの一部として利用可能であり、中間ストレージ１２０はＡＷＳのＳ３ストレージである。
【００２７】
データベース１２２は複数の異なるデータベーステーブルを含んでもよい。コントローラテーブル１２４Ａは、コントローラの状態と、プロセスの全体的な状態と、を記録するかまたは追跡する（例えば、報告が生成されている場合、それはその報告の全体的な状態を追跡してもよい）。テーブル１２４Ａは、以下の表１に示される以下の列を含んでもよい：
【表１】
2020510908.tif 000003
【００２８】
別のテーブル１２４Ｂ（ジョブステータステーブル）は、所定のプロセスがどのフェーズにいるかを記録するために用いられてもよい。ある例では、並行全体的プロセスについて、それは、いくつのジョブがあるか、および、いくつのジョブが完了したかを追跡してもよい。ある例では、日付および全体的プロセスごとにひとつの行がある。テーブル１２４Ｂは、以下の表２に示される以下の列を含んでもよい：
【表２】
2020510908.tif 000004
【００２９】
別のテーブル１２４Ｃ（インスタンスジョブテーブル）は、インスタンス（例えば、作業者インスタンス）がどのジョブを実行しているか、それはいつ開始したか、およびそれはいつ終了したかを記録するために用いられてもよい。テーブル１２４Ｃは、以下の表３に示される以下の列を含んでもよい：
【表３】
2020510908.tif 000005
【００３０】
例示的なジョブメッセージは以下の値を含んでもよい：１）「コマンド」：「ｒｅｐｏｒｔｃｔｌ」（コマンドパラメータはなすべき仕事のタイプを指定する）、「ｒｅｐｏｒｔ」：「ｍｏｌａ」（報告パラメータはなすべき仕事の特定のタイプを指定する）、「ｐｈａｓｅ」：「ｒｅｐｏｒｔ」（フェーズパラメータは報告が現在どのフェーズに入っているかを指定する−各報告は複数のフェーズを有しうる）、「ｐａｒｔｉｔｉｏｎ」：１（パーティションパラメータはデータがいかにスライスされるべきかを指定する）、「ｄａｔｅ」：「０７２０２０１６」（日付パラメータはデータがどの日に処理されるべきかを指定する）。
【００３１】
別のテーブル１２４Ｄは、作業者インスタンス１１６Ａ〜１１６Ｃからのハートビートを追跡してもよい。以下の表３に示されるように、以下の列が含まれてもよい：
【表４】
2020510908.tif 000006
図２の説明：
【００３２】
図２は、所定の例示的な実施の形態に係る、図１のシステムがどのように初期化されるかの信号図を示す。
【００３３】
２０２において、コントローラプロセス１０８のｉｎｉｔフェーズ２０２は、コントローラプロセス１０８に関連付けられたＳＱＳにメッセージをポストするｃｒｏｎジョブ１０２によってトリガされる。コントローラプロセスのＳＱＳにポストされる例示的なメッセージは以下のフィールドおよびデータを含んでもよい：１）「タイプ」：「ｒｅｐｏｒｔ」；および２）「ｄａｔｅ」：「０７２０２１０６」。ｃｒｏｎジョブを介したメッセージのポスティングは、プロセスの開始を自動化すると共に、作業者インスタンスおよび当該インスタンスにプッシュされるジョブの引き続く生成を自動的にトリガする。ｃｒｏｎジョブによって生成されキューにプッシュされたメッセージは、プロセス（例えば、報告プロセス）が解析するであろうデータの日付を含んでもよい。このメッセージに応じて、コントローラプロセス１０８はジョブを実行する用意のためにシステムを初期化する。本明細書で示されるように、ジョブは、例えば既存のデータセットに対する報告を生成または実行するためのものであってもよいより大きなタスクまたはプロセス（例えば、システム１００のノードに亘ってジョブの形で分散されるプロセス）の全ての部分であってもよい。
【００３４】
ジョブのひとつのタイプは、代理人ドケット番号４０１０−４２４の「ＳＹＳＴＥＭＳ  ＡＮＤ  ＭＥＴＨＯＤＳ  ＯＦ  ＲＥＴＲＯＳＰＥＣＴＩＶＥＬＹ  ＤＥＴＥＲＭＩＮＩＮＧ  ＨＯＷ  ＳＵＢＭＩＴＴＥＤ  ＤＡＴＡ  ＴＲＡＮＳＡＣＴＩＯＮ  ＲＥＱＵＥＳＴＳ  ＯＰＥＲＡＴＥ  ＡＧＡＩＮＳＴ  Ａ  ＤＹＮＡＭＩＣ  ＤＡＴＡ  ＳＴＲＵＣＴＵＲＥ」と題する同時係属中の出願に示され説明される遡及的解析プロセスを含んでもよく、その出願の全体は参照により本明細書に組み入れられる。そのようなジョブにより、クライアントは機会損失の報告を要求することができ、異なる作業者インスタンスにタスク化された個々別々のジョブは異なるティッカーシンボルに関連付けられてもよい（例えば、そこでは、作業者インスタンスによって操作されるデータは、所与のティッカーのオーダブックについて解析されるべきデータ構造を含む）。ひとつの作業者インスタンスは、ティッカーシンボルＡＡＡ用の遡及的プロセスと、ＢＢＢ用の他のプロセスと、を実行してもよい。これら複数の異なる作業者インスタンスからの出力は、（上述の同時係属出願の図５に示されるような）クライアントに見せる報告にまとめられてもよい。
【００３５】
２０４で、コントローラプロセス１０８は作業者インスタンス１０６の開始を始める。ある例では、これは、クラウド計算システム１００に対して適切なＡＰＩを呼び出すことによって要求された数の作業者インスタンスを生成することによって、なされる。ある例では、コントローラプロセス１０８はまた、達成対象のジョブによって使用されることが予想されている処理量に基づいて、生み出すべき作業者インスタンスの数を動的に決定してもい。言い換えると、コントローラの所与の実行について必要とされる作業者インスタンスの数は、ある繰り返しと別の繰り返しとの間（例えば、ある日と別の日との間）で大いに変化しうる。したがって、コントローラプロセス１０８は、所与のジョブによって使用されることが予想される仕事量に依存して、１０個（またはそれ以下）の作業者インスタンスの生成を要求するかもしれないし、１０００個（またはそれ以上）の作業者インスタンスの生成を要求するかもしれない。ある例示的な実施の形態では、設定（例えば、設定ファイル）を介してインスタンスの数が制御されてもよい。
【００３６】
作業者インスタンスの生成が開始されると（または、そのようなインスタンスを生成することの要求の受領が確認されると）、コントローラは２０６で、作業者インスタンスが生成されてしまうまで待機する。これは、コントローラプロセス１０８クエリデータベース１２２を有することによって、作業者インスタンス１１６の登録が成功したか、また成功したのはいつかを決定することを含んでもよく、これは２０８および２１０に関して説明される。
【００３７】
２０８で、新たに生成された作業者インスタンス２０８のそれぞれは、当該キューについて一意であってもよい、自身の対応する作業キュー（例えば、ＳＱＳ）を生成する。作業キュー１１４は、一般に、それぞれに対応する作業者インスタンスとどのようにデータ（例えば、ジョブ）を通信するかである。ある例では、作業キューは、クラウドコンピュータ環境内で一意のＵＲＬによって識別される。作業キュー１１４が生成され、知られると、作業者インスタンス１１６はデータベース１２２に対して書き込みかそうでなければ通信を行うことによって、対応して生成された作業キューの名称（例えば、そのキューへの参照）と対応作業者インスタンスへの参照との両方を書き込む。この情報は、２１０で、インスタンスジョブテーブル１２４Ｃに伝達される。そこでは、その情報は将来の読み出しのために格納される。
【００３８】
ある例では、２０８および２１０の処理は、作業者インスタンスの初期化フェーズ中に発生する。例えば、作業者インスタンスに伴って呼び出される「ｉｎｉｔＱ」機能がまず開始される。いずれにせよ、この期間中、コントローラプロセス１０８は２０６において待機し続ける。待機は、ジョブインスタンステーブルに対して連続的にクエリすることによって、作業者インスタンスがその対応する情報を報告したかを判定することを含んでもよい。そのような情報がジョブテーブルに書き込まれると、２１２で、コントローラプロセスは、データベース１２２に対してクエリを行うことによって、作業キューへの参照（例えば、ＵＲＬ）および／または関連する作業者インスタンスへの参照を取得する。このリストを用いて、コントローラプロセス１０８は、２１４で、作業キュー１１４に対するジョブのポスティング／提出を開始する。ある例示的な実施の形態では、作業キューへのジョブのポスティングのプロセスは、ラウンドロビン形式で行われる。
図３の説明：
【００３９】
図３は、所定の例示的な実施の形態に係る、報告生成フェーズ中にジョブが作業者インスタンスにどのように提出されるかを示す。
【００４０】
３００で、コントローラプロセス１０８は、フェーズのジョブの総数とフェーズの名称とで、データベース１２２のジョブステータステーブル１２４Ｂを更新する。
【００４１】
３０２で、コントローラプロセスは、必要に応じて、ジョブを利用可能なジョブキュー１１４に亘って分散させる（例えば、ラウンドロビンアルゴリズムを用いることによって）ことによって、ジョブを提出する。
【００４２】
３０４で、作業者インスタンスは自身の対応するキューを読み、３０６で、キューに提出されたジョブは作業者インスタンスによって実行される。３０６でジョブを開始することにしたがって、対応する作業者インスタンスは、３０８で、作業者がどのジョブを実行しているか、および、そのジョブが作業者インスタンスによっていつ開始されたか、を示すように、インスタンスジョブテーブル内のインスタンス情報を更新する。
【００４３】
３１２で、受け付けられたジョブの処理が実行される。作業者インスタンスがジョブを完了すると、それは、３１６で、ジョブステータステーブル内の対応するジョブについての終了列を更新し、ジョブインスタンステーブルにおいて終了時刻を更新するかまたは設定する。
【００４４】
ある例示的な実施の形態では、作業者インスタンスが障害を起こすと（例えば、３０秒、１分、１０分、１時間、または一日以上などのある期間の間にハートビートがない）、コントローラは、その作業者インスタンスから他のジョブキューへ全てのジョブを移送するスクリプトを実行する（かまたは追加的な作業者インスタンスを生成するプロセスを開始する）。これは、作業者インスタンスが実行していた未了のジョブだけでなく、そのインスタンスの作業キュー内の任意の係属中のジョブを含む。言い換えると、作業者インスタンスがそのハートビートを報告せずに最後の報告が所与のしきい値量の外側となると、コントローラは、そのプロセスに以前割り当てられていたジョブを別の作業者インスタンスに移送してもよい。
【００４５】
ある例示的な実施の形態では、コントローラプロセスは、ｒｅｐｏｒｔ＿ｃｏｎｔｒｏｌｌｅｒ．ｐｙと呼ばれるスクリプト（またはその中の機能）を含んでもよい。このスクリプトは、クラスタ（例えば、インスタンスの全て−コントローラインスタンスを含む）の開始および停止を制御し、ジョブを報告する。「−ｉｎ  ｉｔ」フラグを伴って呼び出されるのではない場合、以下が行われる：１）作業者インスタンスからのハートビートを検証する；２）いずれかの報告がその現在のフェーズを完了したかを検査し、もしそうなら、次のフェーズのジョブをポストする；３）全ての報告がその仕事を終わらせた場合、ジョブ発行を実行し、作業者インスタンスをシャットダウンする。
【００４６】
ある例示的な実施の形態では、以下のスクリプトが各作業者インスタンス上で実行される：ｗｏｒｋｅｒ＿ａｇｅｎｔ．ｐｙこのスクリプトは二つの機能を有する：１）作業者インスタンスが依然として生きていることを示すように、ハートビートテーブル１２４Ｄを更新するスレッドを実行する；２）ＳＱＳからメッセージを読み出し、後述のｒｅｐｏｒｔｃｔｌ．ｐｙスクリプトを用いてそれらを実行する。
【００４７】
ある例示的な実施の形態では、ｒｅｐｏｒｔｃｔｌ．ｐｙスクリプトは各作業者インスタンス上で実行され、報告ジョブの特定のフェーズおよびパーティションを実行してもよい。スクリプトは以下の引数をとってもよい：１）報告（データについて実行されるべき所与の報告を示す）；２）フェーズ（実行されるべき報告サイクルのフェーズ）；３）日付（報告を実行する日付であり、「ｍｍｄｄｙｙｙｙ」フォーマットの日付か、または現在の平日についての「今日」であり、（ｓｑｒｌｆｉｌｅ引数と相互排他的である）−スクリプトは日付がない場合はｓｑｒｌｆｉｌｅをフェッチしてもよい；４）ソース（処理する報告ファイルのソースパス）；５）ターゲット（報告フェーズによって生成されたファイルが書き込まれる先のディレクトリ）；６）ｓｑｒｌｆｉｌｅ（日付の代わりにｓｑｒｌｆｉｌｅを指定可能である）；７）パーティション（特定のパーティションの報告を実行する−パーティションは所定のシンボル範囲を表す数であり、−１はパーティショニングがないことを示すデフォルト値である）；８）シンボル（ひとつのシンボルのみについて報告を実行する−ティカーシンボルなど）；９）ｐｕｂｌｉｓｈＴｙｐｅ（どのフェーズからデータを発行するかを選択する：報告、変換、ポスト、クライアントファイル）。
図４の説明
【００４８】
図４は、いくつかの実施の形態にしたがう、例示的な計算デバイス４００（例えば、「コンピューティングデバイス」、「コンピュータシステム」、または「コンピューティングシステム」とも呼ばれ得る）のブロック図である。いくつかの実施の形態では、計算デバイス４００は、１つまたは複数のプロセッサ４０２、１つまたは複数のメモリデバイス４０４、１つまたは複数のネットワークインタフェースデバイス４０６、１つまたは複数のディスプレイインタフェース４０８、および１つまたは複数のユーザ入力アダプタ４１０のうちの１つまたは複数を含む。さらに、いくつかの実施の形態では、計算デバイス４００はディスプレイデバイス４１２に接続されるか、またはディスプレイデバイス４１２を含む。以下で説明するように、これらの要素（例えば、プロセッサ４０２、メモリデバイス４０４、ネットワークインタフェースデバイス４０６、ディスプレイインタフェース４０８、ユーザ入力アダプタ４１０、ディスプレイデバイス４１２）は、計算デバイス４００の様々な異なる機能を実行するように構成されたハードウエアデバイス（例えば、電子回路または回路の組合せ）である。
【００４９】
いくつかの実施の形態では、プロセッサ４０２の各々またはいずれかは、例えば、シングルコアまたはマルチコアプロセッサ、マイクロプロセッサ（例えば、中央処理装置またはＣＰＵと呼ばれ得る）、デジタル信号プロセッサ（ＤＳＰ）、ＤＳＰコアに関連するマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、またはシステムオンチップ（ＳＯＣ）（例えば、ＣＰＵと、メモリ、ネットワーキングインタフェースなどの他のハードウエア構成要素とを含む集積回路）であるか、またはそれらを含む。および／または、いくつかの実施の形態では、プロセッサ４０２のそれぞれまたはいずれかは、ｘ８６またはＡＲＭ（Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅ）などのインストラクションセットアーキテクチャを使用する。本明細書で説明される場合、複数のコンピュータシステムは合わせてクラウドコンピュータシステムを形成してもよく、コンピュータシステムのそれぞれはひとつ以上の仮想マシン（これらは本明細書においてインスタンスとも称される）をホストするよう構成される。
【００５０】
いくつかの実施の形態では、メモリデバイス４０４の各々またはいずれかは、ランダムアクセスメモリ（ＲＡＭ）（ダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）など）、フラッシュメモリ（例えば、ＮＡＮＤまたはＮＯＲ技術に基づく）、ハードディスク、光磁気媒体、光媒体、キャッシュメモリ、レジスタ（例えば、インストラクションを保持する）、またはデータおよび／またはインストラクションの揮発性または不揮発性保持を実行する他のタイプのデバイス（例えば、プロセッサ４０２上でまたはプロセッサ４０２によって実行されるソフトウエア）であるか、またはそれらを含む。メモリデバイス４０４は、電子データストレージおよび／または非一時的コンピュータ可読ストレージ媒体の一例である。
【００５１】
いくつかの実施の形態では、ネットワークインタフェースデバイス４０６のそれぞれまたはいずれかは、１つまたは複数の回路（ベースバンドプロセッサおよび／または有線または無線トランシーバなど）を含み、１つまたは複数の有線通信技術（イーサネット（ＩＥＥＥ  ８０２．３）など）および／または無線通信技術（ブルートゥース、ＷｉＦｉ（ＩＥＥＥ  ８０２．１１）、ＧＳＭ、ＣＤＭＡ２０００、ＵＭＴＳ、ＬＴＥ、ＬＴＥ−Ａｄｖａｎｃｅｄ（ＬＴＥ−Ａ）、および／または他の短距離、中距離、および／または長距離無線通信技術など）のためのレイヤ１、レイヤ２、および／またはより高次のレイヤを実装する。トランシーバは、送信機および受信機のための回路を備えることができる。送信機および受信機は共通の筐体を共有することができ、送信および受信を実行するために筐体内の回路のいくつかまたはすべてを共有することができる。いくつかの実施の形態では、トランシーバの送信機および受信機は、いかなる共通の回路も共有しなくてもよく、および／または同じまたは別個のハウジング内にあってもよい。
【００５２】
いくつかの実施の形態では、ディスプレイインタフェース４０８の各々またはいずれかは、プロセッサ４０２からデータを受信し、受信したデータに基づいて対応する画像データを（例えば、ディスクリートＧＰＵ、組み込みＧＰＵ、グラフィック処理を実行するＣＰＵなどを介して）生成し、および／または生成された画像データを画像データを表示するディスプレイデバイス４１２に出力する（例えば、高精細度マルチメディアインターフェース（ＨＤＭＩ）、ディスプレイポートインタフェース、ビデオグラフィックスアレイ（ＶＧＡ）インタフェース、デジタルビデオインタフェース（ＤＶＩ）など）、１つまたは複数の回路であるか、またはそれらを含む。代替的にまたは追加的に、いくつかの実施の形態では、ディスプレイインタフェース４０８の各々またはいずれかは、例えば、ビデオカード、ビデオアダプタ、またはグラフィックス処理ユニット（ＧＰＵ）であるか、またはそれらを含む。
【００５３】
いくつかの実施の形態では、ユーザ入力アダプタ４１０のそれぞれまたはいずれかは、計算デバイス４００に含まれ、それに取り付けられ、またはそれと通信する１つまたは複数のユーザ入力デバイス（図４には示されていない）からユーザ入力データを受信し、処理し、受信した入力データに基づいてプロセッサ４０２にデータを出力する１つまたは複数の回路であるか、またはそれを含む。代替的にまたは追加的に、いくつかの実施の形態では、ユーザ入力アダプタ４１０の各々またはいずれかは、例えば、ＰＳ／２インタフェース、ＵＳＢインタフェース、タッチスクリーンコントローラなどであるか、またはそれらを含み、および／またはユーザ入力アダプタ４１０は例えば、キーボード、マウス、トラックパッド、タッチスクリーンなどのユーザ入力デバイス（図４には図示せず）からの入力を容易にする。
【００５４】
いくつかの実施の形態では、ディスプレイデバイス４１２は、液晶ディスプレイ（ＬＣＤ）ディスプレイ、発光ダイオード（ＬＥＤ）ディスプレイ、または他のタイプのディスプレイデバイスとすることができる。ディスプレイデバイス４１２が計算デバイス４００の構成要素である（例えば、計算デバイスおよびディスプレイデバイスが統合ハウジングに含まれる）実施の形態では、ディスプレイデバイス４１２は、タッチスクリーンディスプレイまたは非タッチスクリーンディスプレイとすることができる。ディスプレイデバイス４１２が計算デバイス４００に接続される（例えば、計算デバイス４００の外部にあり、有線および／または無線通信技術を介して計算デバイス４００と通信する）実施の形態では、ディスプレイデバイス４１２は例えば、外部モニタ、プロジェクタ、テレビジョン、ディスプレイ画面である。
【００５５】
様々な実施の形態では、計算デバイス４００は、上述の要素（例えば、プロセッサ４０２、メモリデバイス４０４、ネットワークインタフェースデバイス４０６、ディスプレイインタフェース４０８、およびユーザ入力アダプタ４１０）の各々またはいずれかの１つ、２つ、または３つ、４つ、またはそれ以上を含む。代替的にまたは追加的に、いくつかの実施の形態では、計算デバイス４００は、プロセッサ４０２を含む処理システム、メモリデバイス４０４を含むメモリまたはストレージシステム、およびネットワークインタフェースデバイス４０６を含むネットワークインタフェースシステムのうちの１つまたは複数を含む。
【００５６】
計算デバイス４００は様々な実施の形態において、多くの異なる方法で構成されうる。単なる一例として、計算デバイス４００は、プロセッサ４０２が：マルチ（または単一）コアプロセッサと、第１ネットワークインタフェースデバイス（これは例えばＷｉＦｉやブルートゥースやＮＦＣなどで実装される）と、１つ以上のセルラ通信技術（例えば３Ｇ、４Ｇ  ＬＴＥ、ＣＤＭＡなど）を実施する第２ネットワークインタフェースデバイスと、メモリまたはストレージデバイス（例えばＲＡＭ、フラッシュメモリ、またはハードディスク）と、を含むように構成されうる。プロセッサ、第一のネットワークインタフェースデバイス、第二のネットワークインタフェースデバイス、およびメモリデバイスは、同一のＳＯＣ（例えば１つの集積回路チップ）の一部として統合されうる。別の例として、コンピューティングデバイスは、プロセッサ４０２が２、３、４、５つ、またはそれより多いマルチコアプロセッサを含み、ネットワークインタフェースデバイス４０６がＥｔｈｅｒｎｅｔを実施する第一のネットワークインタフェースデバイスとＷｉＦｉおよび／またはＢｌｕｅｔｏｏｔｈを実施する第二のネットワークインタフェースデバイスとを含み、並びにメモリデバイス４０４がＲＡＭおよびフラッシュメモリもしくはハードディスクを含むよう構成されうる。
【００５７】
既述の通り、ソフトウェアモジュールまたはソフトウェアプロセスが任意の動作を実行すると本書で記載されている場合はいつでも、当該動作は実際は、当該ソフトウェアモジュールを備えるインストラクションに従い基礎となるハードウェアエレメントによって実行される。前述と一致して、種々の実施の形態では、コントローラノード／インスタンス１０２、作業者インスタンス１１６、コントローラプロセス１０８、データベース１２２、クラウドコンピュータシステム１００、ハードウエアコンピュータノード１０３ｎ、作業キュー１１４のそれぞれは、この段落の残りの部分において明確性のために個々に「コンポーネント」と呼ばれるが、それらのコンポーネントのそれぞれまたは任意の組み合せは、図４の計算デバイス４００（または複数のそのようなデバイス）の例を使用して実装される。そのような実施の形態では、各コンポーネントに対して以下が適用される：（ａ）図４に示す計算デバイス４００のエレメント（すなわち、１つ以上のプロセッサ４０２、１つ以上のメモリデバイス４０４、１つ以上のネットワークインタフェースデバイス４０６、１つ以上のディスプレイインタフェース４０８、および１つ以上のユーザ入力アダプタ４１０）または前述のものの適切な組み合わせもしくはサブセットは、コンポーネントによっておよび／またはコンポーネント内に含まれるとして本明細書で説明される任意のソフトウェアモジュールによって実行されるとして本明細書で説明される動作、行動、もしくは特徴のそれぞれもしくは任意の組み合わせを実施するように構成され、適応され、および／またはプログラムされる、（ｂ）代替的または付加的に、１つ以上のソフトウェアモジュールがコンポーネント内に存在し、いくつかの実施形態では、（ソフトウェアモジュールによって扱われおよび／または使用されるとして本明細書で説明された任意のデータとともに）そのようなソフトウェアモジュールはメモリデバイス４０４（例えば様々な実施形態では、ＲＡＭのような揮発性メモリデバイス、命令レジスタ、および／またはフラッシュメモリもしくはハードディスクのような不揮発メモリデバイス）に格納され、ソフトウェアモジュールによって行われるとして本明細書で説明される全ての動作は、計算デバイス４００（すなわちネットワークインタフェースデバイス４０６、ディスプレイインタフェース４０８、ユーザ入力アダプタ４１０、および／またはディスプレイデバイス４１２）の中および／またはそれに接続される、他のエレメントと適切に連動するプロセッサ４０２によって実行されることが本明細書である程度説明される、（ｃ）代替的または付加的に、コンポーネントはデータを処理し、および／またはさもなければ扱い、いくつかの実施形態では、そのようなデータは、メモリデバイス４０４（例えばいくつかの実施形態では、ＲＡＭのような揮発性メモリデバイスおよび／またはフラッシュメモリもしくはハードディスクのような不揮発メモリデバイス）に格納され、および／または他のエレメントと適切に連動し、および／または計算デバイス４００（すなわちネットワークインタフェースデバイス４０６、ディスプレイインタフェース４０８、ユーザ入力アダプタ４１０、および／またはディスプレイデバイス４１２）に接続されるプロセッサ４０２によって処理され／扱われることが本明細書である程度説明される、（ｄ）代替的または付加的に、いくつかの実施の形態では、プロセッサ４０２によって実行される場合に、コンポーネントによっておよび／またはコンポーネント内に含まれるとして、本明細書で説明された任意のソフトウエアモジュールによって実行されるとして、本明細書で説明された動作のそれぞれまたは任意の組み合わせを、プロセッサ４０２に、計算デバイス４００内のおよび／またはそれに接続された他のエレメント（すなわち、メモリデバイス４０４、ネットワークインタフェースデバイス４０６、ディスプレイインタフェース４０８、ユーザ入力アダプタ４１０および／またはディスプレイデバイス５１２）と適切な場合には連携して、行わせるインストラクションをメモリデバイス４０２が格納する。
【００５８】
上の段落と齟齬はない形で、一例として、計算デバイス４００のインスタンスがコントローラノード１０２を実現するために用いられる実施の形態では、メモリデバイス４０４はコントローラプロセスに関連付けられたファイルをロードすることができ、および／または本明細書において処理されたものとして、および／またはそうでなければ作業キュー１１４に渡されたものとして説明されたデータを保持することができる。プロセッサ４０２は、コントローラプロセス１０８を動作させるために用いられうる。
【００５９】
図４に示され、上記で説明されたハードウエア構成は例として提供され、本明細書で説明された主題は様々な異なるハードウエアアーキテクチャおよび要素と併せて利用され得る。例えば、本明細書の多くの図では、個々の機能／アクションブロックが示され；様々な実施の形態では、これらのブロックの機能は（ａ）個々のハードウエア回路を使用して、（ｂ）記載された機能／アクションを実行するように特に構成された特定用途向け集積回路（ＡＳＩＣ）を使用して、（ｃ）記載された機能／アクションを実行するように特に構成された１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）を使用して、（ｄ）図４を参照して上述したハードウエア構成を使用して、（ｅ）他のハードウエア構成、アーキテクチャ、および構成を介して、および／または（ａ）〜（ｅ）に記載された技術の組み合わせを介して、実装され得る。
説明された主題の技術的利点
【００６０】
クラウドベース環境で作業する場合、所与の時点で必要とされる負荷（例えば、負荷は日々劇的に変化しうる）に応じて、所与のタスクまたはプロセスを動的にスケールアップまたはスケールダウンすることができる技術があると、そのような技術は有利であろう。
そのような技術はまた、処理のある時点で作業者ノードのひとつに障害が発生した場合にデータを再処理することができれば有利であろう。特に、クラウドシステムのあるノードに障害が発生した場合、そのノードの未解決の（または未完の）作業は他のノードに再分配されるべきである。
【００６１】
ある例示的な実施の形態では、本明細書で説明される主題は、クラウドコンピュータシステムにおいて可変のコンピュータベース処理要件を処理する動的で柔軟な技術を提供する。典型的なシナリオでは、設定ファイルまたはそのようなものが可能な作業者インスタンスのリスト（およびその対応するメッセージキュー）を維持する。しかしながら、実行されるべき処理の性質が日々変化するのであれば、その同じ設定ファイルを（通常は手作業で）更新することで、処理に利用可能なインスタンスの利用可能性の変化に対処する必要がある。ある例示的な実施の形態では、コントローラインスタンスによって作業者インスタンスが開始されると、作業者インスタンスはデータベースに自己を登録する。コントローラインスタンスは、それが生み出した作業者インスタンスの全てが準備完了であることを（例えば、データベースに問い合わせることによって）見いだしてもよい。コントローラインスタンスは、個々の作業者インスタンス用のメッセージキューに対する参照を取得し、キューに対するジョブの発行を開始してもよい。これにより、コントローラは、任意の数の作業者インスタンスを生成することができるだけでなく、作業者インスタンスのそれぞれ用のキューへの参照を手作業で設定する必要なく、それらのインスタンスにジョブを自動的に提出ことができる。
【００６２】
本明細書で説明される技術的特徴は、クラウドまたは分散計算コンテキストにおける大規模および可変処理課題を扱う際の信頼性および柔軟性を改善する。
＜選択された用語＞
【００６３】
本書面では、「いくつかの実施形態」、「様々な実施形態」、「特定の実施形態」、「特定の例示的な実施形態」、「いくつかの例示的な実施形態」、「例示的な実施形態」に所定のアイテムが示されることが説明されるときはいつでも、または任意の他の類似の言葉が用いられるときはいつでも、所与のアイテムは少なくとも１つの実施形態に示されてはいるが、全ての実施形態に示される必要はないことは理解されたい。上述と整合して、本書では、動作が実行され「てもよく」、「ることができ」、もしくは「うる」ことと、機能、エレメント、もしくは構成要素が所与のコンテキストに含まれ「てもよく」、「ることができ」、もしくは「うる」、または適用可能なことと、所与のアイテムが所与の特性を有し「てもよく」、「ることができ」、もしくは「うる」こととが説明されるときはいつでも、または「〜てもよい」、「〜できる」もしくは「〜しうる」という用語を含む任意の類似の語句が使用されるときはいつでも、所与の動作、特徴、エレメント、構成要素、特性、などが少なくとも１つの実施形態に示されているが、全ての実施形態に示される必要はないことが理解されたい。本書で使用される用語と語句、およびそれらの変形は、特に明記しない限り、限定的ではなく包含的に解釈されるべきである。先の例としては、「および／または」は、関連して挙げられたアイテムのうちの１つ以上の任意のまたは全ての組み合わせ（例えば、ａおよび／またはｂは、ａ、ｂ、またはａとｂを意味する）を含み、単数形「ａ」、「ａｎ」および「ｔｈｅ」は「少なくとも１の」、「１つ以上の」、または類似のものを意味するとして読まれるべきであり、「例」という用語は議論中の主題の例を提供するためにもちいられるがそれの網羅的なものでも限定的リストでもなく、「備える」と「含む」（および他の活用とそれらの他の変形）は関連する挙げられたアイテムの存在を特定するが、１つ以上の他のアイテムの存在または追加を排除するものではなく、アイテムが「随意に（ｏｐｔｉｏｎａｌ）」と説明される場合、そのような説明は他のアイテムが随意ではないことを示すものと理解されるべきではない。
【００６４】
本明細書で使用されるように、「非一時的のコンピュータ可読ストレージ媒体」は、レジスタ、キャッシュメモリ、ＲＯＭ、（Ｄ−ＲＡＭ、Ｓ−ＲＡＭ、または他のＲＡＭのような）半導体メモリ装置、フラッシュメモリといった磁気記録媒体、ハードディスク、光磁気記録媒体、ＣＤ−ＲＯＭ、ＤＶＤ、もしくはＢｌｕ−Ｒａｙディスクといった光学記録媒体、または非一時的の電子データストレージのための他のタイプの装置、を含む。「非一時的のコンピュータ可読ストレージ媒体」は一時的な伝搬する電磁信号は含まない。
＜説明された主題の付加的な応用＞
【００６５】
限定的でなく図１から図３を参照して含まれるような処理ステップ、アルゴリズムあるいはその類が特定の順序で記載またはクレームされている場合があるが、このような処理は、異なる順序で動作するように構成設定することができる。換言すれば、本明細書で明示されるかクレームされるいかなるシーケンスあるいはステップの順序も、そのステップがその順序で実行される必要性を示すものでは必ずしもなく、本明細書で説明される処理ステップは任意の可能な順序で実行されてもよい。また、いくつかのステップは、非同時的に発生するように記載されているあるいは暗示されているが（例えば、あるステップは、他のステップの後に記載されているからである）、同時に（または並行して）実行されうる。さらに、図面における図示による処理の説明は、図示される処理が他の変形や変更について排他的であることを暗示しているのではなく、また、図示される処理あるいはその任意のステップが必要であることを暗示しているのではなく、また、図示される処理が好ましいことを暗示しているのでもない。
【００６６】
様々な実施形態が詳細に示され、説明されたが、請求項は特定の実施形態または例の何れにも限定されない。上記の説明の何れもが、任意の特定のエレメント、ステップ、範囲、または機能が必要不可欠であることを暗示するとして読まれるべきではない。上述の実施の形態の要素に対する構造的および機能的等価物のうち当業者に既知のものは全て、明示的に本明細書に参照により組み入れられており、包含されることが意図されている。さらに、本発明に包含されるために、デバイスや方法が、本発明により解決されるべきおのおの全ての課題を指向する必要はない。本書の実施形態、特徴、構成要素、コンポーネント、またはステップは、公に供することを意図されていない。
【図１】
2020510908.tif 000007
【図２】
2020510908.tif 000008
【図３】
2020510908.tif 000009
【図４】
2020510908.tif 000010
【国際調査報告】
2020510908.tif 000011
2020510908.tif 000012
2020510908.tif 000013
2020510908.tif 000014