(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-13
(45)【発行日】2022-04-21
(54)【発明の名称】分散システムにおいてコンピュータプロセスまたはタスクをスケジューリングする方法およびシステム
(51)【国際特許分類】
G06F 11/30 20060101AFI20220414BHJP
G06F 11/07 20060101ALI20220414BHJP
G06F 9/50 20060101ALI20220414BHJP
G06F 11/20 20060101ALI20220414BHJP
【FI】
G06F11/30 155
G06F11/30 140A
G06F11/07 140A
G06F11/07 157
G06F9/50 150
G06F11/20 633
(21)【出願番号】P 2019542697
(86)(22)【出願日】2018-02-16
(86)【国際出願番号】 SE2018050152
(87)【国際公開番号】W WO2018151661
(87)【国際公開日】2018-08-23
【審査請求日】2021-02-10
(32)【優先日】2017-02-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-02-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508364093
【氏名又は名称】ナスダック テクノロジー エービー
(74)【代理人】
【識別番号】100076428
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【氏名又は名称】下山 治
(72)【発明者】
【氏名】ノルディン, ヨナス
【審査官】松崎 孝大
(56)【参考文献】
【文献】特開2005-202631(JP,A)
【文献】特開2011-076604(JP,A)
【文献】特開2011-123881(JP,A)
【文献】特開2016-126426(JP,A)
【文献】国際公開第2011/148563(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/30
G06F 11/07
G06F 9/50
G06F 11/20
(57)【特許請求の範囲】
【請求項1】
クラウドコンピュータシステムであって、
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスと、
電子データストレージに保持されるデータベースと、を備え、
前記コントローラノードは、
複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されるようにすることと、を行うようプログラムされ、
前記複数の作業者インスタンスのそれぞれが、
前記対応する作業者インスタンスについて一意のメッセージキューを生成することと、
前記データベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、を行うようプログラムされ、
前記コントローラノードはさらに、
前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを取得することと、
前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、を行うようプログラムされ、
前記複数の作業者インスタンスのそれぞれが、さらに、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記読み出された少なくともひとつのデータジョブを処理するようプログラムされるクラウドコンピュータシステム。
【請求項2】
前記複数の作業者インスタンスのそれぞれが、さらに、
対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することを行うようプログラムされる請求項1に記載のクラウドコンピュータシステム。
【請求項3】
前記コントローラノードはさらに、
前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第1作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第1作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第1作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、を行うようプログラムされる請求項2に記載のクラウドコンピュータシステム。
【請求項4】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化機能中に実行される請求項1に記載のクラウドコンピュータシステム。
【請求項5】
前記コントローラノードはさらに、
前記データベースをポーリングすることによって、各対応する作業者インスタンスの前記一意のメッセージキューの前記参照がいつ該データベースに格納されたかを判定することを行うようプログラムされる請求項1に記載のクラウドコンピュータシステム。
【請求項6】
前記データジョブは、ラウンドロビンプロセスを用いて、前記一意のメッセージキューに対して発行される請求項1に記載のクラウドコンピュータシステム。
【請求項7】
前記複数の作業者インスタンスのそれぞれが、さらに、
前記生成された作業者インスタンスを一意に特定するインスタンス識別子を、前記一意のメッセージキューの前記参照に関連付けて前記データベースに格納することを行うようプログラムされる請求項1に記載のクラウドコンピュータシステム。
【請求項8】
前記複数の作業者インスタンスのうちのそれぞれは、前記分散プロセスの完了に際してシャットダウンされるかまたは破壊される請求項1に記載のクラウドコンピュータシステム。
【請求項9】
前記分散プロセスは、入力データ集合に基づいて少なくともひとつの報告を生成するプロセスである請求項8に記載のクラウドコンピュータシステム。
【請求項10】
前記データベースが第1テーブルを含み、
新たに生成された作業者インスタンスのそれぞれは、さらに
、少なくとも以下の列:1)前記作業者インスタンスのインスタンス識別子、2)前記一意のメッセージキューの前記参照、3)前記作業者インスタンスの現在実行中のジョブに対応するジョブメッセージ、4)前記ジョブの開始時刻のタイムスタンプ、および5)前記ジョブの完了のタイムスタンプ
、を伴う、前記第1テーブルの新たなレコードを生成する要求を提出するようプログラムされる請求項1に記載のクラウドコンピュータシステム。
【請求項11】
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスを含むクラウドコンピュータシステムを動作させる方法であって、当該方法は、
前記コントローラノードにおいて、複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記コントローラノードにおいて、前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記コントローラノードにおいて、前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されることを要求することと、
前記コントローラノードからの前記要求に応じて実行されている前記複数の作業者インスタンスのうちのそれぞれにおいて、
(a)前記対応する作業者インスタンスについて一意のメッセージキューを生成することと、
(b)前記クラウドコンピュータシステムのデータベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、
前記コントローラノードにおいて、前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを、前記データベースから、取得することと、
前記コントローラノードにおいて、前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、
前記複数の作業者インスタンスのそれぞれにおいて、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記少なくともひとつのデータジョブを処理することと、を含む方法。
【請求項12】
各作業者インスタンスにおいて、少なくとも対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することをさらに含む請求項11に記載の方法。
【請求項13】
前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第1作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第1作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第1作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、をさらに含む請求項12に記載の方法。
【請求項14】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化プロセス中に実行される請求項11に記載の方法。
【請求項15】
前記データベースをポーリングすることによって、各対応する作業者インスタンスの前記一意のメッセージキューの前記参照がいつ該データベースに格納されたかを判定することをさらに含む請求項11に記載の方法。
【請求項16】
前記データジョブは、ラウンドロビンプロセスを用いて、前記一意のメッセージキューに対して発行される請求項11に記載の方法。
【請求項17】
前記作業者インスタンスのそれぞれにおいて、前記生成された作業者インスタンスを一意に特定するインスタンス識別子を、前記一意のメッセージキューの前記参照と共に、前記データベースに格納することをさらに含む請求項11に記載の方法。
【請求項18】
電子データ通信ネットワークを介して互いに結合された複数のコンピュータデバイスであって、前記複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサとストレージシステムとを有し、前記複数のコンピュータデバイスのうちの少なくともひとつがコントローラノードとして設定される、複数のコンピュータデバイスを含むクラウドコンピュータシステムで用いられるインストラクションを保持する非一時的ストレージ媒体であって、前記保持されるインストラクションは、
複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、
前記複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、
前記決定された数の作業者インスタンスについて、複数の作業者インスタンスが前記複数のコンピュータデバイス上に生成されるようにすることと、
各作業者インスタンスの一部として、前記対応する作業者インスタンスの一意のメッセージキューを生成することと、
各作業者インスタンスの一部として、前記データベースへの格納のために前記データベースに、前記対応する作業者インスタンスについて生成された前記一意のメッセージキューに対する参照を提出することと、
前記コントローラインスタンスの一部として、前記複数の生成された作業者インスタンスの前記一意のメッセージキューに対する前記参照のそれぞれを取得することと、
前記コントローラインスタンスの一部として、前記一意のメッセージキューに対する前記参照を用いることによって、前記一意のメッセージキューのうちの対応するメッセージキューに対して前記複数のデータジョブを発行することと、
各作業者インスタンスの一部として、対応する一意のメッセージキューに含まれる少なくともひとつのデータジョブを読み出し、前記読み出された少なくともひとつのデータジョブを処理することと、を行うよう構成されたインストラクションを含む非一時的ストレージ媒体。
【請求項19】
前記保持されるインストラクションは、
対応するデータジョブの処理中に、前記対応する作業者インスタンスが動作していることを示すハートビート信号を前記データベースに報告することと、前記複数の作業者インスタンスの保持されるハートビート信号に基づいて、第1作業者インスタンスの前記ハートビート信号の直近の更新がしきい値時間よりも長いと判定することと、
前記第1作業者インスタンスがそのハートビート信号をまだ更新していないとの判定に応じて、前記第1作業者インスタンスの前記一意のメッセージキューに対して発行された前記データジョブを、別の作業者インスタンスに関連付けられた別の一意のメッセージキューに発行することと、を行うよう構成されたさらなるインストラクションを含む請求項18に記載の非一時的ストレージ媒体。
【請求項20】
前記一意のメッセージキューの前記生成および前記参照の前記提出は両方とも、各対応する作業者インスタンスの初期化機能中に実行される
請求項18に記載の非一時的ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2017年2月16日に出願された米国特許仮出願第62/459,722号の優先権の利益を享受する。その出願の内容の全体は、参照により本明細書に組み入れられる。本願は、2017年2月16日に出願された米国特許仮出願第62/459、711号および、本願と同じ日に出願された「SYSTEMS AND METHODS OF RETROSPECTIVELY DETERMINING HOW SUBMITTED DATA TRANSACTION REQUESTS OPERATE AGAINST A DYNAMIC DATA STRUCTURE」(代理人ドケット番号4010-424)と題された出願をも、参照により組み入れる。
【0002】
開示される技術はコンピュータプロセスのプロセスまたはタスクをスケジューリングすることに関する。特に、開示される技術は、クラウドベースのコンピュータシステムなどの分散環境におけるコンピュータプロセス、タスク、またはジョブのスケジューリングに関する。
【背景技術】
【0003】
クラウド計算技術は、共有処理およびデータリソース(計算リソースと総称する)を提供する。この技術は、オンデマンドベースでの計算リソースの提供を可能とする。そこでは、クライアントコンピュータは1つから数千のハードウエアプロセッサを用いることができる。個人および機関は、大量の計算リソースを使用する可能性があるデータ処理を扱うために、この技術の柔軟性が魅力的であると感じている。
【0004】
クラウド計算システムは任意の数の処理インスタンス(例えば、仮想マシンまたは物理的マシン)を提供するために使用可能であるが、そのようなリソースへのタスクの実際の提供は、典型的には、静的な動作または手作業である。例えば、気象データを解析するために50個の異なる仮想マシンが生成された場合、それらの50個の異なる仮想マシンが気象解析プロセスのためにどのように用いられるべきかの詳細を記述する静的設定が必要となろう。入来データおよび仮想マシンの数が比較的一定である(例えば、同じ量、同じタイプなど)ような所定の実装においては、静的設定はうまく働くが、入来データの量やタイプが(高度に)可変である場合には破綻する。言い換えると、クラウド計算環境において任意の数のインスタンスを生成することができるかもしれないが、それらのマシンを有効に活用するためには、プロセス全体が、それらの仮想マシンとどのように通信して、どのジョブを行うべきかに関してそれらのマシンにどのように命令するかを知らなくてはならない。
【0005】
したがって、クラウド計算環境(例えば、そこでは、任意の数のサーバが利用可能でありうる)などの分散的動的環境においてタスクまたはジョブを管理またはスケジューリングする新たな技術が必要とされている。任意の数のサーバおよび/またはそれらのサーバのジョブプロセスにデータまたは情報を提供する技術も必要とされている。
【発明の概要】
【0006】
ある例示的な実施の形態では、クラウドコンピュータシステム(システム)が提供される。システムは、電子データ通信ネットワークを介して結合された複数のコンピュータデバイスであって、複数のコンピュータデバイスのそれぞれが少なくともひとつのハードウエアプロセッサと電子データストレージとを有する複数のコンピュータデバイスを含む。各デバイスは少なくともひとつの仮想マシンインスタンスをホストするよう構成され、仮想マシンインスタンスのうちの少なくともひとつはコントローラインスタンス(例えばコントローラノード)として設定される。システムは、仮想マシンインスタンスのそれぞれによってアクセス可能なデータベースを含む。コントローラノードは、複数のデータジョブを含む分散プロセスを開始することを求める要求を受け付けることと、複数のコンピュータデバイスに亘って生成する作業者インスタンスの数を決定することと、を行うようプログラムされる。いったん決定されると、コントローラインスタンスは、複数の作業者インスタンスが複数のコンピュータデバイス上に(例えば、クラウドコンピュータシステム上に)生成されるようにする。生成された作業者インスタンスのそれぞれは、初期化プロセスの一部として、それ自身の一意のメッセージキューを生成し、データベースと通信することによって、そのメッセージキューへの参照をデータベースに格納する。コントローラノードはさらに、データベースから、メッセージキューへの参照を読み出し、メッセージキューにデータジョブを発行するようプログラムされる。
【0007】
本概要は、以下の発明の詳細な説明でさらに説明される概念の選択を紹介するために提供される。本概要は、クレームに係る主題の主要な特徴または不可欠な特徴を識別することと、或いは、クレームに係る主題の範囲を限定するために用いられることとのいずれをも意図するものではなく、むしろ本概要は本書面で説明される主題の概観を提供することを意図するものである。したがって、上述した特徴は例示にすぎず、本明細書で説明される主題の他の特徴、態様、および利点は、後述する詳細な説明、図面、および請求項から明らかになるであろうということは理解されたい。
【図面の簡単な説明】
【0008】
これらのおよび他の特徴ならびに利点は、図面を伴う例示的で非限定的で事例的な実施形態の以下の詳細な説明を参照することにより、よりよく完全に理解されるであろう。
【0009】
【
図1】複数の異なる処理インスタンスおよびそれらのインスタンスに対応するジョブを生成し、スケジューリングする例示的システムを示す。
【0010】
【
図2】所定の例示的な実施の形態に係る、
図1のシステムがどのように初期化されるかの信号図を示す。
【0011】
【
図3】所定の例示的な実施の形態に係る、報告生成フェーズ中にジョブが作業者インスタンスにどのように提出されるかを示す。
【0012】
【
図4】本明細書で説明される特徴を実装するためにいくつかの実施の形態で使用され得る例示的な計算デバイスを示す。
【発明を実施するための形態】
【0013】
以下の記載では、説明を目的とし、限定を目的とせず、記載の技術の理解を提供するために、特定のノード、機能エンティティ、技術、プロトコル等の具体的な詳細が説明される。他の実施の形態を、以下の詳細説明から離れて実施できることは当業者には明らかであろう。他の例では、周知の方法、デバイス、技術等の詳細説明は、不必要な詳細説明で説明を曖昧にしないために省略されている。
【0014】
各セクションの一般的な主題について読者を方向付けるためにのみ、この詳細な説明でセクションが使用される。以下で明らかになるように、多くの特徴の説明は複数のセクションにまたがっており、表題は任意のセクションに含まれる説明の意味に影響をあたえるものとして読まれるべきではない。
概要
【0015】
本明細書で説明される所定の例示的な実施の形態は、クラウド計算アーキテクチャおよびシステムに関する。ある例では、クラウドコンピュータシステムは、数百から数千の異なる物理的コンピュータ(例えば、
図4に示される例示的なコンピュータシステム)を含む。クライアントおよびユーザがクラウドコンピュータシステムの処理リソースを用いるとき、それらは作業者インスタンス(処理インスタンスまたはインスタンスとも称される)を生成し、作業者インスタンスはユーザ/クライアントによって導かれてタスク(例えば、データを扱うジョブ、またはデータジョブ)を実行することができる。ある例では、作業者インスタンスは、クラウドコンピュータシステムの基礎にある処理リソースによって実現される仮想マシンと、それらの仮想マシンが実行するようプログラムされているタスクやジョブの集合と、の組み合わせである。仮想マシンは、システム仮想マシン(例えば、「現実の」コンピュータシステムの機能を複製するものであってしたがって完全仮想化されたもの)であってもよいし、プロセスベースの仮想マシン(例えば、プラットフォームに依存しない態様でコンピュータプログラムを実行可能なもの)であってもよい。作業者インスタンスは、新たなインスタンスが必要とされると生成され、そのインスタンスによって行われるようタスク化されたジョブが完了すると破壊されてもよい。
【0016】
所定の例示的な実施の形態では、任意の数の作業者インスタンスを生成および破壊できるクラウドコンピュータシステムが提供される。作業者インスタンスのそれぞれには、入力データを受け、入力データを処理し、出力を(例えば、出力データや出力データの報告の形で)生成するひとつ以上のジョブが割り当てられる。所定の例示的な実施の形態では、コントローラノード(例えば、コントローラ機能でタスク化されたクラウドコンピュータシステムのインスタンス)は、入力データに基づいてジョブを行う作業者インスタンスの生成、破壊および/または制御でタスク化される。コントローラノードは、任意の数の作業者インスタンスの生成を要求するようプログラムされる。作業者インスタンスのそれぞれは、次いで、対応する入力キュー(例えば、対応する作業者インスタンスはそのキューから入力データを読み出すであろう)を生成する。各作業者インスタンスはまた、対応して生成されたキューの位置(例えば、URLなどのそのキューへの参照)および/または作業者インスタンスへのポインタまたは他の参照を、データベースに書き込む。作業者インスタンスの生成およびその後続のデータベースとの通信は、作業者インスタンスの初期化フェーズと総称されてもよい。初期化フェーズ中、コントローラは、要求された作業者インスタンスの全てがその対応するインスタンスおよびキュー参照の詳細をうめるまでデータベースに対して周期的にクエリを行う。コントローラノードが作業者インスタンスの対応するキューへの参照(例えば、URL)を取得すると、それは、次いで、作業者インスタンスに関連付けられたキューにジョブを発行することによって、作業者インスタンスをジョブでタスク化してもよい。
【0017】
図1から4の以下の説明を含むがそれに限定されない本書の多くの箇所で、ソフトウエアモジュールおよびソフトウエアモジュールによって行われる動作が説明される。これは、説明を容易にするために行われ、ソフトウエアモジュールが任意の動作を実行することが本明細書で説明されるときはいつでも、その動作は実際にはソフトウエアモジュールを構成するインストラクションに従って、基礎となるハードウエア要素(プロセッサおよびメモリデバイス)によって実行されることを理解されたい。これに関するさらなる詳細は、他の場所の中でもとりわけ、
図4の説明において以下に提供される。
図1の説明:
【0018】
図1は、複数の異なる処理インスタンス(「作業者インスタンス」または単に「インスタンス」と称される場合がある)とそれらのインスタンスに対応するジョブとを生成しスケジューリングするための例示的なクラウドコンピュータシステムを示す。クラウドコンピュータシステム100は二つの主なコンポーネントを含む。第1のものはコントローラノード(本明細書においてコントローラインスタンスと称される場合がある)102であり、第2のものはコントローラノード102による要求に応じて動的に生成される作業者インスタンス116A、116B、116Cである。
【0019】
コントローラノード102は仮想マシン(または仮想コンテナ、または他の仮想環境)インスタンスであり、これは、クラウドコンピュータシステム100のハードウエア計算リソースを構成する複数のハードウエアコンピュータノード103nのうちのひとつの上で動作する。ある例では、ハードウエアコンピュータノード103nのそれぞれは物理的なサーバまたはコンピュータ(例えば、
図4に示されるようなもの)であり、これらは電子データ通信ネットワーク(例えば、ギガビットイーサネットまたは他のタイプのデータ通信技術)を介して互いに接続される。
【0020】
コントローラノード102はコントローラプロセス108を含み、コントローラプロセス108は、新たな作業者インスタンスの生成を要求し、入来データを処理し、ジョブを分配し、プロセス全体の進行を制御し、クラウド計算システム100およびそのインスタンスによって行われている各ジョブの進行を制御するための処理ロジック(例えば、コンピュータプログラム)を含む。
【0021】
各作業者インスタンス116A~116Cは、仮想マシン(例えば、インスタンスまたはコンテナ)と、その仮想マシン内で実行されているプロセスやスレッド(作業者)と、の組み合わせである。したがって、インスタンスおよび実行される作業者は作業者インスタンスと称され、これは、対応するキュー114A~114Cにポスティングされたジョブおよびデータを処理することができる。作業者インスタンスは状態なし不変インスタンスであり、それらの対応するキュー114A~114Cを用いて、それらに作業(例えば、ジョブ)が割り当てられるまで待機する。所定の例示的な実施の形態では、作業はキューに、JavaScript Object Notation(JSON)オブジェクトの形で伝達される。これは、可読性があるがコンピュータによって容易にパース可能でもあるデータ互換フォーマットである。他のタイプのデータフォーマットも使用可能である。
【0022】
例示的なクラウドコンピュータシステムは、処理要件に応じて異なるタイプのインスタンスを提供するAmazon Web Services(AWS)クラウドコンピュータシステムであってもよい。ある例では、各インスタンスは、基礎にある処理リソース(例えば、
図4に示されるコンピュータシステムなど)によってサポートされる。ある例では、複数の異なるインスタンスは同じ基礎にある処理リソースを共有する(例えば、同じコンピュータデバイスによって処理される)。ある例では、基礎にあるハードウエアは単一のインスタンス専用であってもよい。クラウドコンピュータシステムアーキテクチャの柔軟性は、タスクやジョブを完了するために用いられるインスタンスを処理するための多様な異なるスキームを提供することが理解されるであろう。
【0023】
所定の例示的な実施の形態では、全てのインスタンス(例えば、作業者インスタンスおよびコントローラインスタンス)が共通システムイメージ(例えば、これはクラウドコンピュータシステムで生成される、コントローラノードを含む全ての異なるインスタンスに亘って用いられる)を共有する。それらのインスタンスのうち、コントローラノードは長期間実行されるインスタンスであり、作業者インスタンスはコントローラノードのコントローラプロセス108によって生成され、終了される。所定の例示的な実施の形態では、コントローラインスタンスはグループサイズ1にオートスケールされる。これにより、クラウド計算システム100が常に実行中のコントローラインスタンスのひとつのインスタンスを有することが保証される。ある例では、新たに生成されたインスタンスが開始されると、そのインスタンスがどの役割(コントローラまたは作業者)を有すべきかを示すユーザデータがそのインスタンスに渡される(例えば、そのスタートアップの一部として)。インスタンスがコントローラノードにマークされている場合、コントローラプロセスが開始されてもよい。しかしながら、インスタンスが作業者インスタンスである場合、作業者プロセスのサービスが開始される。このタイプの展開アーキテクチャは、インスタンスのただひとつのイメージのみを生成すればよいので、展開をより容易にする。
【0024】
コントローラノード102はcron(クロン)ジョブ104を含むか保持する。これは所定の期間に(例えば、毎晩午後11時に)実行されるよう構成されたスクリプトまたはプロセスである。この例では、cronジョブ104はプロセスの開始を伝えるために用いられ、このプロセスは所与の日付の入力を取得し、この入力はその日付のデータの報告を生成する。cronジョブは、キュー106を介してコントローラプロセス108と通信する。ある例では、キューはAWSの一部であるシンプルキューサービス(SQS)を用いて実現される。
【0025】
システム100と相互作用するユーザまたはクライアントの認証および承認サービスを提供するSQRLリポジトリもまた、システム100に含まれる。SQRLは、ウェブサイト等のための安全で素早くて信頼性の高いログイン機能のオープンスタンダードである。FTPサイト112は、システム100を用いることによって生成された報告および/または他の出力を保持するためのストレージ領域である。ユーザは、次いで、FTPサイト112にアクセスし、データ(例えば、生成された報告)を取得する。
【0026】
報告生成器118は、作業者インスタンスから処理され出力されたデータから最終的な報告を生成する他のインスタンス(またはコントローラインスタンスの一部)であってもよい。例えば、各作業者インスタンスはデータリストを返すか出力し、報告生成器118は、出力されたリストから、処理の結果を視覚的に示すためのチャート等を伴う報告を(例えば、PDF形態またはウェブページで)生成してもよい。報告生成器118の結果および/または作業者インスタンス116A~116Cからの出力は、中間ストレージ120に格納されてもよい。データベース122および/または中間ストレージ120は、インスタンス116によって処理されるデータを(例えば、バルク形態で)保持するために用いられてもよい。所定の例示的な実装では、データベース122はdynamoDBであり、これは、Amazon Web Services(AWS)によって提供されるクラウドコンピュータシステムの一部として利用可能であり、中間ストレージ120はAWSのS3ストレージである。
【0027】
データベース122は複数の異なるデータベーステーブルを含んでもよい。コントローラテーブル124Aは、コントローラの状態と、プロセスの全体的な状態と、を記録するかまたは追跡する(例えば、報告が生成されている場合、それはその報告の全体的な状態を追跡してもよい)。テーブル124Aは、以下の表1に示される以下の列を含んでもよい:
【表1】
【0028】
別のテーブル124B(ジョブステータステーブル)は、所定のプロセスがどのフェーズにいるかを記録するために用いられてもよい。ある例では、並行全体的プロセスについて、それは、いくつのジョブがあるか、および、いくつのジョブが完了したかを追跡してもよい。ある例では、日付および全体的プロセスごとにひとつの行がある。テーブル124Bは、以下の表2に示される以下の列を含んでもよい:
【表2】
【0029】
別のテーブル124C(インスタンスジョブテーブル)は、インスタンス(例えば、作業者インスタンス)がどのジョブを実行しているか、それはいつ開始したか、およびそれはいつ終了したかを記録するために用いられてもよい。テーブル124Cは、以下の表3に示される以下の列を含んでもよい:
【表3】
【0030】
例示的なジョブメッセージは以下の値を含んでもよい:1)「コマンド」:「reportctl」(コマンドパラメータはなすべき仕事のタイプを指定する)、「report」:「mola」(報告パラメータはなすべき仕事の特定のタイプを指定する)、「phase」:「report」(フェーズパラメータは報告が現在どのフェーズに入っているかを指定する-各報告は複数のフェーズを有しうる)、「partition」:1(パーティションパラメータはデータがいかにスライスされるべきかを指定する)、「date」:「07202016」(日付パラメータはデータがどの日に処理されるべきかを指定する)。
【0031】
別のテーブル124Dは、作業者インスタンス116A~116Cからのハートビートを追跡してもよい。以下の表3に示されるように、以下の列が含まれてもよい:
【表4】
図2の説明:
【0032】
図2は、所定の例示的な実施の形態に係る、
図1のシステムがどのように初期化されるかの信号図を示す。
【0033】
202において、コントローラプロセス108のinitフェーズ202は、コントローラプロセス108に関連付けられたSQSにメッセージをポストするcronジョブ102によってトリガされる。コントローラプロセスのSQSにポストされる例示的なメッセージは以下のフィールドおよびデータを含んでもよい:1)「タイプ」:「report」;および2)「date」:「07202106」。cronジョブを介したメッセージのポスティングは、プロセスの開始を自動化すると共に、作業者インスタンスおよび当該インスタンスにプッシュされるジョブの引き続く生成を自動的にトリガする。cronジョブによって生成されキューにプッシュされたメッセージは、プロセス(例えば、報告プロセス)が解析するであろうデータの日付を含んでもよい。このメッセージに応じて、コントローラプロセス108はジョブを実行する用意のためにシステムを初期化する。本明細書で示されるように、ジョブは、例えば既存のデータセットに対する報告を生成または実行するためのものであってもよいより大きなタスクまたはプロセス(例えば、システム100のノードに亘ってジョブの形で分散されるプロセス)の全ての部分であってもよい。
【0034】
ジョブのひとつのタイプは、代理人ドケット番号4010-424の「SYSTEMS AND METHODS OF RETROSPECTIVELY DETERMINING HOW SUBMITTED DATA TRANSACTION REQUESTS OPERATE AGAINST A DYNAMIC DATA STRUCTURE」と題する同時係属中の出願に示され説明される遡及的解析プロセスを含んでもよく、その出願の全体は参照により本明細書に組み入れられる。そのようなジョブにより、クライアントは機会損失の報告を要求することができ、異なる作業者インスタンスにタスク化された個々別々のジョブは異なるティッカーシンボルに関連付けられてもよい(例えば、そこでは、作業者インスタンスによって操作されるデータは、所与のティッカーのオーダブックについて解析されるべきデータ構造を含む)。ひとつの作業者インスタンスは、ティッカーシンボルAAA用の遡及的プロセスと、BBB用の他のプロセスと、を実行してもよい。これら複数の異なる作業者インスタンスからの出力は、(上述の同時係属出願の
図5に示されるような)クライアントに見せる報告にまとめられてもよい。
【0035】
204で、コントローラプロセス108は作業者インスタンス106の開始を始める。ある例では、これは、クラウド計算システム100に対して適切なAPIを呼び出すことによって要求された数の作業者インスタンスを生成することによって、なされる。ある例では、コントローラプロセス108はまた、達成対象のジョブによって使用されることが予想されている処理量に基づいて、生み出すべき作業者インスタンスの数を動的に決定してもい。言い換えると、コントローラの所与の実行について必要とされる作業者インスタンスの数は、ある繰り返しと別の繰り返しとの間(例えば、ある日と別の日との間)で大いに変化しうる。したがって、コントローラプロセス108は、所与のジョブによって使用されることが予想される仕事量に依存して、10個(またはそれ以下)の作業者インスタンスの生成を要求するかもしれないし、1000個(またはそれ以上)の作業者インスタンスの生成を要求するかもしれない。ある例示的な実施の形態では、設定(例えば、設定ファイル)を介してインスタンスの数が制御されてもよい。
【0036】
作業者インスタンスの生成が開始されると(または、そのようなインスタンスを生成することの要求の受領が確認されると)、コントローラは206で、作業者インスタンスが生成されてしまうまで待機する。これは、コントローラプロセス108クエリデータベース122を有することによって、作業者インスタンス116の登録が成功したか、また成功したのはいつかを決定することを含んでもよく、これは208および210に関して説明される。
【0037】
208で、新たに生成された作業者インスタンス208のそれぞれは、当該キューについて一意であってもよい、自身の対応する作業キュー(例えば、SQS)を生成する。作業キュー114は、一般に、それぞれに対応する作業者インスタンスとどのようにデータ(例えば、ジョブ)を通信するかである。ある例では、作業キューは、クラウドコンピュータ環境内で一意のURLによって識別される。作業キュー114が生成され、知られると、作業者インスタンス116はデータベース122に対して書き込みかそうでなければ通信を行うことによって、対応して生成された作業キューの名称(例えば、そのキューへの参照)と対応作業者インスタンスへの参照との両方を書き込む。この情報は、210で、インスタンスジョブテーブル124Cに伝達される。そこでは、その情報は将来の読み出しのために格納される。
【0038】
ある例では、208および210の処理は、作業者インスタンスの初期化フェーズ中に発生する。例えば、作業者インスタンスに伴って呼び出される「initQ」機能がまず開始される。いずれにせよ、この期間中、コントローラプロセス108は206において待機し続ける。待機は、ジョブインスタンステーブルに対して連続的にクエリすることによって、作業者インスタンスがその対応する情報を報告したかを判定することを含んでもよい。そのような情報がジョブテーブルに書き込まれると、212で、コントローラプロセスは、データベース122に対してクエリを行うことによって、作業キューへの参照(例えば、URL)および/または関連する作業者インスタンスへの参照を取得する。このリストを用いて、コントローラプロセス108は、214で、作業キュー114に対するジョブのポスティング/提出を開始する。ある例示的な実施の形態では、作業キューへのジョブのポスティングのプロセスは、ラウンドロビン形式で行われる。
図3の説明:
【0039】
図3は、所定の例示的な実施の形態に係る、報告生成フェーズ中にジョブが作業者インスタンスにどのように提出されるかを示す。
【0040】
300で、コントローラプロセス108は、フェーズのジョブの総数とフェーズの名称とで、データベース122のジョブステータステーブル124Bを更新する。
【0041】
302で、コントローラプロセスは、必要に応じて、ジョブを利用可能なジョブキュー114に亘って分散させる(例えば、ラウンドロビンアルゴリズムを用いることによって)ことによって、ジョブを提出する。
【0042】
304で、作業者インスタンスは自身の対応するキューを読み、306で、キューに提出されたジョブは作業者インスタンスによって実行される。306でジョブを開始することにしたがって、対応する作業者インスタンスは、308で、作業者がどのジョブを実行しているか、および、そのジョブが作業者インスタンスによっていつ開始されたか、を示すように、インスタンスジョブテーブル内のインスタンス情報を更新する。
【0043】
312で、受け付けられたジョブの処理が実行される。作業者インスタンスがジョブを完了すると、それは、316で、ジョブステータステーブル内の対応するジョブについての終了列を更新し、ジョブインスタンステーブルにおいて終了時刻を更新するかまたは設定する。
【0044】
ある例示的な実施の形態では、作業者インスタンスが障害を起こすと(例えば、30秒、1分、10分、1時間、または一日以上などのある期間の間にハートビートがない)、コントローラは、その作業者インスタンスから他のジョブキューへ全てのジョブを移送するスクリプトを実行する(かまたは追加的な作業者インスタンスを生成するプロセスを開始する)。これは、作業者インスタンスが実行していた未了のジョブだけでなく、そのインスタンスの作業キュー内の任意の係属中のジョブを含む。言い換えると、作業者インスタンスがそのハートビートを報告せずに最後の報告が所与のしきい値量の外側となると、コントローラは、そのプロセスに以前割り当てられていたジョブを別の作業者インスタンスに移送してもよい。
【0045】
ある例示的な実施の形態では、コントローラプロセスは、report_controller.pyと呼ばれるスクリプト(またはその中の機能)を含んでもよい。このスクリプトは、クラスタ(例えば、インスタンスの全て-コントローラインスタンスを含む)の開始および停止を制御し、ジョブを報告する。「-in it」フラグを伴って呼び出されるのではない場合、以下が行われる:1)作業者インスタンスからのハートビートを検証する;2)いずれかの報告がその現在のフェーズを完了したかを検査し、もしそうなら、次のフェーズのジョブをポストする;3)全ての報告がその仕事を終わらせた場合、ジョブ発行を実行し、作業者インスタンスをシャットダウンする。
【0046】
ある例示的な実施の形態では、以下のスクリプトが各作業者インスタンス上で実行される:worker_agent.pyこのスクリプトは二つの機能を有する:1)作業者インスタンスが依然として生きていることを示すように、ハートビートテーブル124Dを更新するスレッドを実行する;2)SQSからメッセージを読み出し、後述のreportctl.pyスクリプトを用いてそれらを実行する。
【0047】
ある例示的な実施の形態では、reportctl.pyスクリプトは各作業者インスタンス上で実行され、報告ジョブの特定のフェーズおよびパーティションを実行してもよい。スクリプトは以下の引数をとってもよい:1)報告(データについて実行されるべき所与の報告を示す);2)フェーズ(実行されるべき報告サイクルのフェーズ);3)日付(報告を実行する日付であり、「mmddyyyy」フォーマットの日付か、または現在の平日についての「今日」であり、(sqrlfile引数と相互排他的である)-スクリプトは日付がない場合はsqrlfileをフェッチしてもよい;4)ソース(処理する報告ファイルのソースパス);5)ターゲット(報告フェーズによって生成されたファイルが書き込まれる先のディレクトリ);6)sqrlfile(日付の代わりにsqrlfileを指定可能である);7)パーティション(特定のパーティションの報告を実行する-パーティションは所定のシンボル範囲を表す数であり、-1はパーティショニングがないことを示すデフォルト値である);8)シンボル(ひとつのシンボルのみについて報告を実行する-ティカーシンボルなど);9)publishType(どのフェーズからデータを発行するかを選択する:報告、変換、ポスト、クライアントファイル)。
図4の説明
【0048】
図4は、いくつかの実施の形態にしたがう、例示的な計算デバイス400(例えば、「コンピューティングデバイス」、「コンピュータシステム」、または「コンピューティングシステム」とも呼ばれ得る)のブロック図である。いくつかの実施の形態では、計算デバイス400は、1つまたは複数のプロセッサ402、1つまたは複数のメモリデバイス404、1つまたは複数のネットワークインタフェースデバイス406、1つまたは複数のディスプレイインタフェース408、および1つまたは複数のユーザ入力アダプタ410のうちの1つまたは複数を含む。さらに、いくつかの実施の形態では、計算デバイス400はディスプレイデバイス412に接続されるか、またはディスプレイデバイス412を含む。以下で説明するように、これらの要素(例えば、プロセッサ402、メモリデバイス404、ネットワークインタフェースデバイス406、ディスプレイインタフェース408、ユーザ入力アダプタ410、ディスプレイデバイス412)は、計算デバイス400の様々な異なる機能を実行するように構成されたハードウエアデバイス(例えば、電子回路または回路の組合せ)である。
【0049】
いくつかの実施の形態では、プロセッサ402の各々またはいずれかは、例えば、シングルコアまたはマルチコアプロセッサ、マイクロプロセッサ(例えば、中央処理装置またはCPUと呼ばれ得る)、デジタル信号プロセッサ(DSP)、DSPコアに関連するマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、またはシステムオンチップ(SOC)(例えば、CPUと、メモリ、ネットワーキングインタフェースなどの他のハードウエア構成要素とを含む集積回路)であるか、またはそれらを含む。および/または、いくつかの実施の形態では、プロセッサ402のそれぞれまたはいずれかは、x86またはARM(Advanced RISC Machine)などのインストラクションセットアーキテクチャを使用する。本明細書で説明される場合、複数のコンピュータシステムは合わせてクラウドコンピュータシステムを形成してもよく、コンピュータシステムのそれぞれはひとつ以上の仮想マシン(これらは本明細書においてインスタンスとも称される)をホストするよう構成される。
【0050】
いくつかの実施の形態では、メモリデバイス404の各々またはいずれかは、ランダムアクセスメモリ(RAM)(ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)など)、フラッシュメモリ(例えば、NANDまたはNOR技術に基づく)、ハードディスク、光磁気媒体、光媒体、キャッシュメモリ、レジスタ(例えば、インストラクションを保持する)、またはデータおよび/またはインストラクションの揮発性または不揮発性保持を実行する他のタイプのデバイス(例えば、プロセッサ402上でまたはプロセッサ402によって実行されるソフトウエア)であるか、またはそれらを含む。メモリデバイス404は、電子データストレージおよび/または非一時的コンピュータ可読ストレージ媒体の一例である。
【0051】
いくつかの実施の形態では、ネットワークインタフェースデバイス406のそれぞれまたはいずれかは、1つまたは複数の回路(ベースバンドプロセッサおよび/または有線または無線トランシーバなど)を含み、1つまたは複数の有線通信技術(イーサネット(IEEE 802.3)など)および/または無線通信技術(ブルートゥース、WiFi(IEEE 802.11)、GSM、CDMA2000、UMTS、LTE、LTE-Advanced(LTE-A)、および/または他の短距離、中距離、および/または長距離無線通信技術など)のためのレイヤ1、レイヤ2、および/またはより高次のレイヤを実装する。トランシーバは、送信機および受信機のための回路を備えることができる。送信機および受信機は共通の筐体を共有することができ、送信および受信を実行するために筐体内の回路のいくつかまたはすべてを共有することができる。いくつかの実施の形態では、トランシーバの送信機および受信機は、いかなる共通の回路も共有しなくてもよく、および/または同じまたは別個のハウジング内にあってもよい。
【0052】
いくつかの実施の形態では、ディスプレイインタフェース408の各々またはいずれかは、プロセッサ402からデータを受信し、受信したデータに基づいて対応する画像データを(例えば、ディスクリートGPU、組み込みGPU、グラフィック処理を実行するCPUなどを介して)生成し、および/または生成された画像データを画像データを表示するディスプレイデバイス412に出力する(例えば、高精細度マルチメディアインターフェース(HDMI)、ディスプレイポートインタフェース、ビデオグラフィックスアレイ(VGA)インタフェース、デジタルビデオインタフェース(DVI)など)、1つまたは複数の回路であるか、またはそれらを含む。代替的にまたは追加的に、いくつかの実施の形態では、ディスプレイインタフェース408の各々またはいずれかは、例えば、ビデオカード、ビデオアダプタ、またはグラフィックス処理ユニット(GPU)であるか、またはそれらを含む。
【0053】
いくつかの実施の形態では、ユーザ入力アダプタ410のそれぞれまたはいずれかは、計算デバイス400に含まれ、それに取り付けられ、またはそれと通信する1つまたは複数のユーザ入力デバイス(
図4には示されていない)からユーザ入力データを受信し、処理し、受信した入力データに基づいてプロセッサ402にデータを出力する1つまたは複数の回路であるか、またはそれを含む。代替的にまたは追加的に、いくつかの実施の形態では、ユーザ入力アダプタ410の各々またはいずれかは、例えば、PS/2インタフェース、USBインタフェース、タッチスクリーンコントローラなどであるか、またはそれらを含み、および/またはユーザ入力アダプタ410は例えば、キーボード、マウス、トラックパッド、タッチスクリーンなどのユーザ入力デバイス(
図4には図示せず)からの入力を容易にする。
【0054】
いくつかの実施の形態では、ディスプレイデバイス412は、液晶ディスプレイ(LCD)ディスプレイ、発光ダイオード(LED)ディスプレイ、または他のタイプのディスプレイデバイスとすることができる。ディスプレイデバイス412が計算デバイス400の構成要素である(例えば、計算デバイスおよびディスプレイデバイスが統合ハウジングに含まれる)実施の形態では、ディスプレイデバイス412は、タッチスクリーンディスプレイまたは非タッチスクリーンディスプレイとすることができる。ディスプレイデバイス412が計算デバイス400に接続される(例えば、計算デバイス400の外部にあり、有線および/または無線通信技術を介して計算デバイス400と通信する)実施の形態では、ディスプレイデバイス412は例えば、外部モニタ、プロジェクタ、テレビジョン、ディスプレイ画面である。
【0055】
様々な実施の形態では、計算デバイス400は、上述の要素(例えば、プロセッサ402、メモリデバイス404、ネットワークインタフェースデバイス406、ディスプレイインタフェース408、およびユーザ入力アダプタ410)の各々またはいずれかの1つ、2つ、または3つ、4つ、またはそれ以上を含む。代替的にまたは追加的に、いくつかの実施の形態では、計算デバイス400は、プロセッサ402を含む処理システム、メモリデバイス404を含むメモリまたはストレージシステム、およびネットワークインタフェースデバイス406を含むネットワークインタフェースシステムのうちの1つまたは複数を含む。
【0056】
計算デバイス400は様々な実施の形態において、多くの異なる方法で構成されうる。単なる一例として、計算デバイス400は、プロセッサ402が:マルチ(または単一)コアプロセッサと、第1ネットワークインタフェースデバイス(これは例えばWiFiやブルートゥースやNFCなどで実装される)と、1つ以上のセルラ通信技術(例えば3G、4G LTE、CDMAなど)を実施する第2ネットワークインタフェースデバイスと、メモリまたはストレージデバイス(例えばRAM、フラッシュメモリ、またはハードディスク)と、を含むように構成されうる。プロセッサ、第一のネットワークインタフェースデバイス、第二のネットワークインタフェースデバイス、およびメモリデバイスは、同一のSOC(例えば1つの集積回路チップ)の一部として統合されうる。別の例として、コンピューティングデバイスは、プロセッサ402が2、3、4、5つ、またはそれより多いマルチコアプロセッサを含み、ネットワークインタフェースデバイス406がEthernetを実施する第一のネットワークインタフェースデバイスとWiFiおよび/またはBluetoothを実施する第二のネットワークインタフェースデバイスとを含み、並びにメモリデバイス404がRAMおよびフラッシュメモリもしくはハードディスクを含むよう構成されうる。
【0057】
既述の通り、ソフトウェアモジュールまたはソフトウェアプロセスが任意の動作を実行すると本書で記載されている場合はいつでも、当該動作は実際は、当該ソフトウェアモジュールを備えるインストラクションに従い基礎となるハードウェアエレメントによって実行される。前述と一致して、種々の実施の形態では、コントローラノード/インスタンス102、作業者インスタンス116、コントローラプロセス108、データベース122、クラウドコンピュータシステム100、ハードウエアコンピュータノード103n、作業キュー114のそれぞれは、この段落の残りの部分において明確性のために個々に「コンポーネント」と呼ばれるが、それらのコンポーネントのそれぞれまたは任意の組み合せは、
図4の計算デバイス400(または複数のそのようなデバイス)の例を使用して実装される。そのような実施の形態では、各コンポーネントに対して以下が適用される:(a)
図4に示す計算デバイス400のエレメント(すなわち、1つ以上のプロセッサ402、1つ以上のメモリデバイス404、1つ以上のネットワークインタフェースデバイス406、1つ以上のディスプレイインタフェース408、および1つ以上のユーザ入力アダプタ410)または前述のものの適切な組み合わせもしくはサブセットは、コンポーネントによっておよび/またはコンポーネント内に含まれるとして本明細書で説明される任意のソフトウェアモジュールによって実行されるとして本明細書で説明される動作、行動、もしくは特徴のそれぞれもしくは任意の組み合わせを実施するように構成され、適応され、および/またはプログラムされる、(b)代替的または付加的に、1つ以上のソフトウェアモジュールがコンポーネント内に存在し、いくつかの実施形態では、(ソフトウェアモジュールによって扱われおよび/または使用されるとして本明細書で説明された任意のデータとともに)そのようなソフトウェアモジュールはメモリデバイス404(例えば様々な実施形態では、RAMのような揮発性メモリデバイス、命令レジスタ、および/またはフラッシュメモリもしくはハードディスクのような不揮発メモリデバイス)に格納され、ソフトウェアモジュールによって行われるとして本明細書で説明される全ての動作は、計算デバイス400(すなわちネットワークインタフェースデバイス406、ディスプレイインタフェース408、ユーザ入力アダプタ410、および/またはディスプレイデバイス412)の中および/またはそれに接続される、他のエレメントと適切に連動するプロセッサ402によって実行されることが本明細書である程度説明される、(c)代替的または付加的に、コンポーネントはデータを処理し、および/またはさもなければ扱い、いくつかの実施形態では、そのようなデータは、メモリデバイス404(例えばいくつかの実施形態では、RAMのような揮発性メモリデバイスおよび/またはフラッシュメモリもしくはハードディスクのような不揮発メモリデバイス)に格納され、および/または他のエレメントと適切に連動し、および/または計算デバイス400(すなわちネットワークインタフェースデバイス406、ディスプレイインタフェース408、ユーザ入力アダプタ410、および/またはディスプレイデバイス412)に接続されるプロセッサ402によって処理され/扱われることが本明細書である程度説明される、(d)代替的または付加的に、いくつかの実施の形態では、プロセッサ402によって実行される場合に、コンポーネントによっておよび/またはコンポーネント内に含まれるとして、本明細書で説明された任意のソフトウエアモジュールによって実行されるとして、本明細書で説明された動作のそれぞれまたは任意の組み合わせを、プロセッサ402に、計算デバイス400内のおよび/またはそれに接続された他のエレメント(すなわち、メモリデバイス404、ネットワークインタフェースデバイス406、ディスプレイインタフェース408、ユーザ入力アダプタ410および/またはディスプレイデバイス512)と適切な場合には連携して、行わせるインストラクションをメモリデバイス402が格納する。
【0058】
上の段落と齟齬はない形で、一例として、計算デバイス400のインスタンスがコントローラノード102を実現するために用いられる実施の形態では、メモリデバイス404はコントローラプロセスに関連付けられたファイルをロードすることができ、および/または本明細書において処理されたものとして、および/またはそうでなければ作業キュー114に渡されたものとして説明されたデータを保持することができる。プロセッサ402は、コントローラプロセス108を動作させるために用いられうる。
【0059】
図4に示され、上記で説明されたハードウエア構成は例として提供され、本明細書で説明された主題は様々な異なるハードウエアアーキテクチャおよび要素と併せて利用され得る。例えば、本明細書の多くの図では、個々の機能/アクションブロックが示され;様々な実施の形態では、これらのブロックの機能は(a)個々のハードウエア回路を使用して、(b)記載された機能/アクションを実行するように特に構成された特定用途向け集積回路(ASIC)を使用して、(c)記載された機能/アクションを実行するように特に構成された1つまたは複数のデジタル信号プロセッサ(DSP)を使用して、(d)
図4を参照して上述したハードウエア構成を使用して、(e)他のハードウエア構成、アーキテクチャ、および構成を介して、および/または(a)~(e)に記載された技術の組み合わせを介して、実装され得る。
説明された主題の技術的利点
【0060】
クラウドベース環境で作業する場合、所与の時点で必要とされる負荷(例えば、負荷は日々劇的に変化しうる)に応じて、所与のタスクまたはプロセスを動的にスケールアップまたはスケールダウンすることができる技術があると、そのような技術は有利であろう。
そのような技術はまた、処理のある時点で作業者ノードのひとつに障害が発生した場合にデータを再処理することができれば有利であろう。特に、クラウドシステムのあるノードに障害が発生した場合、そのノードの未解決の(または未完の)作業は他のノードに再分配されるべきである。
【0061】
ある例示的な実施の形態では、本明細書で説明される主題は、クラウドコンピュータシステムにおいて可変のコンピュータベース処理要件を処理する動的で柔軟な技術を提供する。典型的なシナリオでは、設定ファイルまたはそのようなものが可能な作業者インスタンスのリスト(およびその対応するメッセージキュー)を維持する。しかしながら、実行されるべき処理の性質が日々変化するのであれば、その同じ設定ファイルを(通常は手作業で)更新することで、処理に利用可能なインスタンスの利用可能性の変化に対処する必要がある。ある例示的な実施の形態では、コントローラインスタンスによって作業者インスタンスが開始されると、作業者インスタンスはデータベースに自己を登録する。コントローラインスタンスは、それが生み出した作業者インスタンスの全てが準備完了であることを(例えば、データベースに問い合わせることによって)見いだしてもよい。コントローラインスタンスは、個々の作業者インスタンス用のメッセージキューに対する参照を取得し、キューに対するジョブの発行を開始してもよい。これにより、コントローラは、任意の数の作業者インスタンスを生成することができるだけでなく、作業者インスタンスのそれぞれ用のキューへの参照を手作業で設定する必要なく、それらのインスタンスにジョブを自動的に提出ことができる。
【0062】
本明細書で説明される技術的特徴は、クラウドまたは分散計算コンテキストにおける大規模および可変処理課題を扱う際の信頼性および柔軟性を改善する。
<選択された用語>
【0063】
本書面では、「いくつかの実施形態」、「様々な実施形態」、「特定の実施形態」、「特定の例示的な実施形態」、「いくつかの例示的な実施形態」、「例示的な実施形態」に所定のアイテムが示されることが説明されるときはいつでも、または任意の他の類似の言葉が用いられるときはいつでも、所与のアイテムは少なくとも1つの実施形態に示されてはいるが、全ての実施形態に示される必要はないことは理解されたい。上述と整合して、本書では、動作が実行され「てもよく」、「ることができ」、もしくは「うる」ことと、機能、エレメント、もしくは構成要素が所与のコンテキストに含まれ「てもよく」、「ることができ」、もしくは「うる」、または適用可能なことと、所与のアイテムが所与の特性を有し「てもよく」、「ることができ」、もしくは「うる」こととが説明されるときはいつでも、または「~てもよい」、「~できる」もしくは「~しうる」という用語を含む任意の類似の語句が使用されるときはいつでも、所与の動作、特徴、エレメント、構成要素、特性、などが少なくとも1つの実施形態に示されているが、全ての実施形態に示される必要はないことが理解されたい。本書で使用される用語と語句、およびそれらの変形は、特に明記しない限り、限定的ではなく包含的に解釈されるべきである。先の例としては、「および/または」は、関連して挙げられたアイテムのうちの1つ以上の任意のまたは全ての組み合わせ(例えば、aおよび/またはbは、a、b、またはaとbを意味する)を含み、単数形「a」、「an」および「the」は「少なくとも1の」、「1つ以上の」、または類似のものを意味するとして読まれるべきであり、「例」という用語は議論中の主題の例を提供するためにもちいられるがそれの網羅的なものでも限定的リストでもなく、「備える」と「含む」(および他の活用とそれらの他の変形)は関連する挙げられたアイテムの存在を特定するが、1つ以上の他のアイテムの存在または追加を排除するものではなく、アイテムが「随意に(optional)」と説明される場合、そのような説明は他のアイテムが随意ではないことを示すものと理解されるべきではない。
【0064】
本明細書で使用されるように、「非一時的のコンピュータ可読ストレージ媒体」は、レジスタ、キャッシュメモリ、ROM、(D-RAM、S-RAM、または他のRAMのような)半導体メモリ装置、フラッシュメモリといった磁気記録媒体、ハードディスク、光磁気記録媒体、CD-ROM、DVD、もしくはBlu-Rayディスクといった光学記録媒体、または非一時的の電子データストレージのための他のタイプの装置、を含む。「非一時的のコンピュータ可読ストレージ媒体」は一時的な伝搬する電磁信号は含まない。
<説明された主題の付加的な応用>
【0065】
限定的でなく
図1から
図3を参照して含まれるような処理ステップ、アルゴリズムあるいはその類が特定の順序で記載またはクレームされている場合があるが、このような処理は、異なる順序で動作するように構成設定することができる。換言すれば、本明細書で明示されるかクレームされるいかなるシーケンスあるいはステップの順序も、そのステップがその順序で実行される必要性を示すものでは必ずしもなく、本明細書で説明される処理ステップは任意の可能な順序で実行されてもよい。また、いくつかのステップは、非同時的に発生するように記載されているあるいは暗示されているが(例えば、あるステップは、他のステップの後に記載されているからである)、同時に(または並行して)実行されうる。さらに、図面における図示による処理の説明は、図示される処理が他の変形や変更について排他的であることを暗示しているのではなく、また、図示される処理あるいはその任意のステップが必要であることを暗示しているのではなく、また、図示される処理が好ましいことを暗示しているのでもない。
【0066】
様々な実施形態が詳細に示され、説明されたが、請求項は特定の実施形態または例の何れにも限定されない。上記の説明の何れもが、任意の特定のエレメント、ステップ、範囲、または機能が必要不可欠であることを暗示するとして読まれるべきではない。上述の実施の形態の要素に対する構造的および機能的等価物のうち当業者に既知のものは全て、明示的に本明細書に参照により組み入れられており、包含されることが意図されている。さらに、本発明に包含されるために、デバイスや方法が、本発明により解決されるべきおのおの全ての課題を指向する必要はない。本書の実施形態、特徴、構成要素、コンポーネント、またはステップは、公に供することを意図されていない。