数百または数千もの同時に発生するデータのプロデューサならびにコンシューマを扱うよう設計された大規模データストリームの生成、記憶、検索、と処理を管理する方法及び装置の種々の実施形態について説明する。本明細書で使用される「データストリーム」という言葉は、1つまたは複数のデータプロデューサによって生成されて、1つまたは複数の消費者によってアクセスされるデータ記録の連続のことを言い、そこでは個々のデータ記録を変更不可能なバイトの連続であると仮定する。ストリーム管理サービス(SMS)は、いくつかの実施形態では、プログラムインターフェース(例えば、アプリケーションプログラミングインターフェース(API)、ウェブページまたはウェブサイト、グラフィカルユーザインターフェース、あるいはコマンドラインツール)をストリームの作成、構成、及び削除ならびにストリームデータ記録の提出、記憶、検索のために提供することができる。SMS制御構成要素を備える相互作用を含むストリーム動作のいくつかのタイプ(ストリーム作成または削除、あるいは以下に説明する動的再パーティション分割の動作類)は、ここでは「制御プレーン」動作と呼ぶが、一方で、一般に(例えば正常動作状況下で)制御構成要素を備える相互作用を必要としないデータ記録提出、記憶及び検索などの動作は、ここではデータプレーン動作と呼んでもよい。動的に提供される数組の計算、記憶及びネットワーキング資源は、例えば、種々のパーティション分割方針に基づいて、いくつかの実施形態でそのサービスを実装するために使用されてもよい。その結果、以下にさらに詳細を説明するがストリーム管理の作業負荷を拡張性に優れた形式で多数のサービス構成要素間に広めることができるようになる。ここで使用される頭文字SMSは、ストリームマネジメントサービスのことを言い、またストリームマネジメントサービスを実装するために使用される仮想資源及び/または物理的資源の収集を含むストリームマネジメントシステムのことを言う。
一部のSMSの顧客は種々の実施形態で、SMSのプログラムインターフェースを直接呼び出すアプリケーションを開発できる。しかし、少なくともいくつかの実施形態では、SMSインターフェースに加えて、より高いレベルの抽出またはアプリケーションレベルの加工フレームワークを顧客に提供することで、SMSが直接サポートする低いレベルのストリームマネジメント機能を使用してアプリケーションを開発したくないクライアント用に加工する種々のストリームの態様を簡単にすることができる。そのようなフレームワークは独自のプログラムインターフェース(例えば、SMSのインターフェースの上に作られた)を提供するので、顧客が低いレベルのストリームマネジメント動作上より、ストリーム記録を使用して実装されるもビジネスロジック上により集中できるようになる。一部の実施形態では、より高いレベルのフレームワークを、独自の制御プレーン及びデータプレーン構成要素を備えるストリームプロセシングサービス(SPS)として実装してもよく、SPSは、ストリーム処理用の自動資源プロビジョニング、処理ノードの自動フェールオーバー、任意のストリーム処理ワークフローグラフを構成する能力、一時的ストリーム支援、作業負荷変更または他のトリガー条件に基づく動的再パーティション分割などの進んだ機能を提供できる。少なくともいくつかの実施形態では、ストリーム管理サービス、ストリーム処理サービスまたは両方のサービスのいずれかを、仮想化環境でマルチテナント管理型ネットワークアクセス可能サービスとして実装してもよい。すなわち、種々の物理資源(コンピュータサーバまたはコンピュータホスト、記憶デバイス、ネットワークデバイスなど)は、少なくとも一部のケースで、そのような実施形態では、どのように資源が共有されているか正確に顧客に知らせる必要はなく、むしろ顧客に所与の資源が皆に共有されているとまったく知らせず、異なる顧客のストリーム間で共有されてもよい。管理されたマルチテナントストリーム管理の制御構成要素及び/または処理管理型サービスは、そのいくつかはクライアントが選択可能な、種々の適用可能なポリシーに基づき特定のストリームに使用されるノードまたは資源を動的に追加、削除、または再構成してもよい。さらに、制御構成要素はまた、様々なタイプのセキュリティプロトコル(例えば、たとえ双方のクライアントが少なくともいくつかのハードウェアとソフトウェアを共有していても、一方のクライアントのストリームアプリケーションは他方のクライアントのデータに確実にアクセスできないようにすること)の実装、課金のための資源使用状態の監視、監査またはデバッグ用に使用されるログ情報の発行、などを透明な形で行う役割を持つことができる。管理型マルチテナントサービスのクライアントの観点から、サービスが実装する制御/管理機能は大規模ストリーミングアプリケーションに対応することに伴う多くの複雑さをなくす可能性がある。一部のシナリオでは、そのようなマルチテナントサービスの顧客は、少なくともストリームに関する一部の動作の種類について資源の共有を望まないと示すことができるかもしれない。その場合、物理資源の一部は少なくとも一時的にそれらの種類の動作をシングルテナントと指定することができる(すなわち、1人の顧客またはクライアントのために実行される動作に制限する)。
種々の実施形態で、SMS及び/またはSPSの制御プレーンとデータプレーンの動作の実施に対して複数の異なるアプローチを採ることができる。例えば、制御プレーン動作に関して、いくつかの実施形態では制御サーバまたはノードの冗長グループを立ててもよい。冗長グループは複数の制御サーバを含み、あるサーバは種々のストリームに関する管理要求に応答する役割の主サーバとして指定されるが、別のサーバは現行の主サーバでの故障(または、接続問題)などトリガー条件のイベントの場合、主サーバとして引き継ぐよう指定されてもよい。他の実施形態では、ネットワークアクセス可能データベースサービスで生成された1つまたは複数のテーブルが種々のストリームの制御プレーンメタデータ(パーティションマップなど)を保存するために使用されてもよい。種々の取得、記憶または検索ノードは、データプレーン動作を要求するメタデータのいくつかのサブセットを取得することが必要な時、テーブルにアクセスすることができてもよい。異なる実施形態のSPSとSMSデータプレーンと制御プレーン機能の様々な態様に関する詳細は以下で説明する。ストリーム管理サービスが実装されている実施形態のいくつかでは、高いレベルのプリミティブを提供するストリーム処理サービスを実装する必要はないかもしれないことに留意されたい。他の実施形態では、ストリーム処理サービスの高いレベルのプログラムインターフェースだけが顧客の目に触れ、顧客の使用する低いレベルのストリーム管理インターフェースはクライアントに対して入手可能になされていない。
いくつかの実施形態では、ストリーム管理システムは複数の独立して構成可能なサブシステムを備え、主としてデータ記録を取得または収集する役割を持つ記録取得サブシステム、主として適用可能な持続性または耐久性方針にしたがってデータ記録内容を保存する役割を持つ記録記憶サブシステム、及び主として保存記録向けの読み出し要求に応答する役割を持つ記録検索サブシステムを含む。また、制御サブシステムは、一部の実施形態で実装されて、例えば、各取得、記憶、及び検索サブシステムの要求された数のノードを仮想サーバまたは物理サーバなど選択資源で動的に決定及び/または初期化することにより、残りのサブシステムを構成する役割を持つ1つまたは複数の管理構成要素または制御構成要素を備える。各取得、記憶、検索及び制御サブシステムはそれぞれ複数のハードウェア及び/またはソフトウェア構成要素を使用して実装され、それら構成要素は総称してサブシステムの「ノード」またはサブシステムの「サーバ」と呼ばれる。したがってSMSの種々の資源は論理上、取得、記憶、検索及び制御の4つのカテゴリの1つに属すると言われる。いくつかの実施形態では、各セットの制御構成要素を他のサブシステムそれぞれに対して設定してもよく、例えば、独立の取得制御サブシステム、記憶制御サブシステム及び/または検索制御サブシステムを実装してもよい。そのような各制御サブシステムは対応するサブシステムの他のノードに使用される資源を特定する役割及び/またはクライアントまたは他のサブシステムからの管理クエリに応答する役割を持ってもよい。いくつかの実施形態では、種々のタイプのSMS及び/またはSPS機能を実行することができるノードのプールが事前に設置されて、このプールの選択されたメンバは必要に応じて新しいストリームまたは新しい処理段階に割り当てられてもよい。
ストリームのパーティション分割方針及び関連のマッピングは、例えば、異なる取得ノード、記憶ノード、検索ノード及び/または制御ノードのセット間でデータ記録のサブセットを配布するため、少なくとも一部の実施形態で実装されてもよい。例えば、特定のデータストリーム用に選択されたパーティション分割方針ならびに記録取得レート及び/または検索レートの期待などの他の要素に基づいて、制御構成要素は、取得、記憶、及び検索用にいくつのノード(例えば、プロセスまたはスレッド)を最初(すなわち、ストリーム生成時)に設定すべきかを決定し、これらのノードを仮想及び/または物理機械装置に如何にマッピングさせるかを決めてもよい。時間とともに、所与のストリームに関する作業負荷は増加または減少してよいが、作業負荷の増減は(他のトリガー条件の中で)ストリームの再パーティション分割につながる可能性がある。そのような再パーティション分割は、記録のパーティション、使用されるパーティション分割キー、パーティションの総数、取得ノードの数、記憶ノードの数、もしくは検索ノードの数、あるいは異なる物理または仮想資源上のノードの配置を決定するために使用される関数などの種々のパタメータの変更を含んでもよい。少なくともいくつかの実施形態では、以下に詳細を説明する手法を用いて、再パーティション分割をデータ記録の流れを中断することなく動的に実装することができる。異なるパーティション分割スキーム及び再パーティション分割トリガー基準は、いくつかの実施形態では、例えば、クライアント提供のパラメータまたはSMS制御ノードの発見的問題解決に基づいて、異なるデータストリームに使用されてもよい。いくつかの実施形態では、例えば、クライアントの選好、ストリームの期待されるライフタイム、または他の要因に基づいて、再パーティション分割の数及び/または頻度を制限してもよい。
複数の異なる記録取得方針とインターフェースが異なる実施形態で実装されてもよい。例えば、いくつかの実施形態では、クライアント(例えば、SMSの顧客の代わりにSMSのプログラムインターフェースを呼び出すように構成される実行可能な構成要素またはモジュール)は、インライン提出インターフェースまたは参照提出インターフェースを利用してもよい。インライン提出にとって、データ記録のコンテンツまたは主要部はその実施形態の提出要求の一部に含まれてもよい。一方で、参照提出要求ではアドレス(記憶装置アドレス、データベース記録アドレスまたはURL(Uniform record Locator))が提供されて、データ記録のコンテンツまたは主要部を取得できる。いくつかの実施形態では、ハイブリッド提出インターフェースにもまた、あるいは代わりに対応して、データ記録の最初のNバイトまでをインラインに含み、残りのバイト(もしあれば)は参照により提供される。そのような状況では、短い記録(主部がNバイトより短い)は提出要求により完全に特定されるが、長い記録の部分は対応するアドレスから取得されなければならないことがある。
取得の間、記録の内容を特定する異なる代替手段に加えて、いくつかの実施形態では、様々な承認または重複排除に関連する取得方針も実装されてよい。例えば、一部のストリームアプリケーションでは、クライアントは各データ及びすべてのデータを確実にSMSに取得してほしいと望む場合がある。大規模分散型ストリーム管理環境では、経路の途中、データプロデューサと取得ノード間で随時、パケットが紛失する、または種々の障害が発生する可能性があり、結果、一部の提出データが紛失することがあり得る。したがって、いくつかの実施形態では、肯定承認を取得サブシステムから受信するまで、記録サブミッタが1度または複数回、同じ記録を提出するということにしたがって、SMSは、1度は取得の方針を実装してもよい。通常の動作条件では、記録を一度提出すると、受信取得ノードが取得して記録を保管した後、サブミッタは承認を受信することができる。承認が紛失または遅延した場合、または記録提出要求自体が紛失した場合、最終的に承認を受信するまで、サブミッタは同じデータ記録を1度または複数回再提出してもよい。取得ノードは例えば、二重であるなしにかかわらず、サブミッタが承認を受信していれば記録は再提出されないという予想に基づいて、各提出に対して承認を発生してもよい。しかし、取得ノードは、少なくとも一部の実施形態では、同じデータ記録が複数回提出されたことを認識し、不要な重複データの新しい部数の保存を避ける役割を持つことができる。一実施形態では、1度は取得方針の少なくとも2つのバージョンに対応することができる。一方は(「少なくとも1度取得、重複不許可」、と呼んでもよい)SMSがデータ記録の重複排除の役割を持ち(すなわち1組の2回以上の提出の1つだけに応答してデータを確実にSMS記憶サブシステムに保存する)、他方は、SMSにより重複したデータ記録の保存が許可される(「少なくとも1度、重複許可」、と呼んでもよい)。少なくとも1度、重複許可のアプローチは、ストリームアプリケーションにとって有益であるかもしれず、データ記録の重複、及び/または、それ自体が重複を消去するストリームアプリケーションに対する否定的な帰結はほとんどない。ベストエフォート型取得方針など承認が提出されたすべてのデータ記録に対して必要ではない他の取得方針もまた、支持されてよい。ベストエフォート型取得方針が少なくとも一部の実施形態で実施されている場合、少しのデータ記録紛失は受け入れられてもよい。クライアントは種々の実施形態の中で種々のストリーム用にどの取得方針を使用したいかを選択してよい。
ストリーム記録の記憶に関して、少なくともいくつかの実施形態では複数の代替方針にも対応することができる。例えば、クライアントはSMSが対応するいくつかの中から持続性方針を選択することができてもよく、SMSはそのような記録の記憶の態様を、保存すべき所与のデータ記録複写の数、複写に用いられるべき記憶技術のタイプ(例えば、揮発性または不揮発性RAM、回転ディスク型記憶、ソリッドステートデバイス(SSD)、ネットワーク接続記憶装置など)など、として管理する。例えば、クライアントがディスク型の記憶へのN個の複製の持続性方針を選択した場合、データ記録提出は、N部の記録の複写がN個の各ディスクデバイスに無事に書き込まれた時点で、初めて完了すると考えることができる。ディスク型の記憶装置が使用されている少なくともいくつかの実施形態では、SMS記憶サブシステムは所与のパーティションに入ってくるデータ記録を、例えばディスクシークの性能への影響を避けるため、順次ディスクに書き込んでもよい。シーケンス番号は、例えば、取得時間に基づいて順序付けされた記録の検索を可能にするタイムスタンプ型技術を含む、以下で説明する種々の技術を用いてデータ記録に生成する(保存する)ことができる。所与のパーティションのデータ記録は、いくつかの実施形態では、例えば、ディスク上に近接して、他のパーティションのデータ記録と別にして、一緒に保存されてもよい。一部の実施形態では、保持の方針(クライアントまたはSMSが選択する)、または重複排除時間ウィンドウの方針(いずれかの所定のデータ記録の提出後、たとえ複製が提出されても、その所定のデータ記録の複製がSMSの記憶サブシステムに保存されないようSMSに要求する期間を示す)の期間にしたがって、少なくとも一部のデータ記録を異なるタイプの記憶サービスにアーカイブする、及び/または所与の時間後SMSから削除することができる。そのような削除動作はここではストリーム「トリミング」と呼ぶことができる。クライアントは、いくつかの実施形態では、ストリームトリミング要求を提出してもよい。例えば、指定したデータ記録はもはや必要なく、そのためクライアントの見通しから削除してもよいことをトリミングの要求を提出してSMSに知らせるか、または、はっきりと指定のデータ記録の削除を要求してよい。多数のクライアントが所与のストリームのデータ記録を消費するというシナリオでは、すべての興味を持つコンシューマがアクセスする前に、SMSは所与のデータが削除されていない、または早まってトリムされることがないことを確実にする役割を持つことができる。いくつかの実施形態では、もし所与のストリームのNデータコンシューマがいる場合、ストリームの所与の記録Rを削除する前に、SMSはすべてのNデータコンシューマがRを読んだ、またはRを処理したと決定するまで、待つことができる。SMSは、Rは消費者からの各トリミング要求に基づいて、例えば、ストリーム内でどれだけ遠くまでデータコンシューマが進んだかという各表示に基づいて、すべての消費者がRを読んだと決定してもよい。一部の実施形態では、データコンシューマの一部のタイプ(テストに関連するアプリケーションなど)は、少なくとも小さな1つのサブセットのデータ記録の削除を、それらにアクセスしていなくても承諾することがある。したがって、少なくとも一部の実施形態では、アプリケーションはデータ削除の受諾に関して検索より前にSMSに通知することができ、SMSはその通知にしたがい、削除の予定を立ててもよい。いくつかの実施形態では、例えば、データ保持方針の一部として、例えば、ストリームデータ記録が複写されるべき記憶装置のタイプ、またはそのような複写に使用される日程計画方針を示して、アーカイブ方針を実装してもよい。
少なくともいくつかの実施形態では、複数のプログラムインターフェースも記録検索のために対応されてもよい。一実施形態では、反復子型アプローチが用いられて、あるプログラムインターフェース(例、getIterator)をインスタンス化のために使用し、反復子またはカーソルを、ストリームのパーティション内の指定した論理オフセットに配置してもよい(例えば、シーケンス番号またはタイムスタンプに基づき)。異なるプログラムインターフェース(getNextRecordsなど)は、現在の反復子の位置から初めて順次、指定された番号のデータ記録を読み込むために使用されてもよい。反復子のインスタンス化は、事実上、ストリームのパーティション内の記録検索のため、クライアントが任意のまたはランダムな開始位置を指定することができてもよい。クライアントが、そのような実施形態でランダムなアクセスパターンでデータ記録を読み出したい場合、そのクライアントは繰り返し新しい反復子を作成しなくてはならない。回転ディスク型記憶システムでは、頻繁にランダムアクセスを要求するディスクシークのためにI/O応答時間に与える影響が大きくなる恐れがある。したがって、ランダムより順次ストリームデータ記録を読み込むクライアントの奨励のため、少なくともいくつかの実施形態で、順次読み出しアクセスよりランダム読み出しアクセスに、異なる(例えば、高い)課金レートが課せられることがある。このように、例えば、クライアントはgetIteratorの呼び出し毎にX通貨単位、getNextRecordsを介して検索した記録毎にY通貨単位課金されてもよく、いくつかの実施形態では、XがYより多い場合がある。代替のクライアントのインターフェースが他の動作のカテゴリ(取得など)に対応する場合、少なくともいくつかの実施形態では、代替の課金レートまたは金額は異なる可能性がある。例えば、順次読み出しよりランダム読み出しに多く課金されたように、あるクライアントは参照提出要求の方がオンライン提出要求より多く課金される可能性がある。データ記録のサイズ、書き込み対読み出しの配分、選択の持続性方針などの他の要因もまた種々の実施形態において課金に影響を与える可能性がある。
いくつかの実施形態によれば、ストリーム処理サービス(SPS)ではクライアントが多くの処理段階を含む、複雑な処理作業を任意に指定することができ、所与の段階で実行される処理の出力がゼロ以上の他の段階で入力として使用されてもよい。パーティション分割方針(取得、保存及び検索データ記録用のSMSの説明と同様)は、いくつかの実施形態では、処理作業負荷を様々な段階の複数のワーカーノード間でパーティション分割して使用してもよい。そのような一実施形態では、プログラムSPSインターフェースが実装されて、例えば、クライアントが、その段階用(例えば、ストリーム用のパーティション分割方針と共に、データ記録が検索されるべき1つまたは複数のストリーム)の入力データソース、その段階で実行される処理動作、及びその段階からの出力もしくは結果送出用の記述子または仕様(例えば、異なるストリームの形で、出力が記録位置に保存されるか、ネットワーク終点に送信されるか、または1つまたは複数の処理段階に供給されるかどうか)を含むいずれの所与の段階にも様々な構成セッティングを指定できるようにしてもよい。少なくともいくつかの実施形態では、SPS段階に指定される処理動作は冪等であってもよい。すなわち、所与の処理動作が同じ入力データで複数回実行された場合、動作の結果は、動作が一度であった場合に得られる結果と同じである。障害からのリカバリ(例えば、SPS段階でのワーカーノード障害)は処理動作が冪等である場合、下記に詳細を説明するように単純化されてもよい。いくつかの実施形態によれば、冪等でない処理動作を一部またはすべてのSPS段階で行うことは可能である。
入力ストリームパーティション分割方針及びSPSプログラムインターフェースを介して受領した処理動作の性質など少なくとも構成情報の一部に基づいて、種々の実施形態では、SPS制御サーバはいくつのワーカーノードを、最初に、処理ワークフローの種々の段階用に設置すべきかを決定してもよい。ワーカーノードに使用される資源の実行能力(例えば、使用する仮想または物理機械装置)は、 ワーカーノードの初期数値及び配置を決定する際に考慮に入れてもよい。選択の数のワーカーノード(いくつかの実施形態では、それぞれが実行可能なスレッドまたは実行可能プロセスを含んでよい)がインスタンス化されてもよい。各ワーカーノードは、例えば、適切な入力ソースから(例えば、1つまたは複数のストリームパーティションの検索ノードから)データ記録を取得するよう構成されて、データ記録上で指定された処理動作を実行して、処理の結果を指定された出力先に送信する。さらに、いくつかの実施形態ではチェックポイントスキームが実装されて、それにしたがって、パーティション記録が順次処理されているという仮定で、所与のワーカーノードが、進行記録またはそのワーカーノードで処理されたパーティションの一部を示すチェックポイントを保存するよう構成されてもよい。例えば、ワーカーノードはいくつかの実施形態では定期的に、及び/またはSPS制御サーバからのチェックポイント要求に応答して、進行記録を持続性記憶に書き込んでもよい(例えば、N秒間に1回またはRデータ記録の処理毎)。
進行記録はいくつかの実施形態では、ワーカーノード障害からの急速リカバリに使用されてもよい。例えば、SPS制御サーバは様々なワーカーノードのヘルス状態を例えば、ハートビート機構を用いて及び/または資源使用率レベル(CPU使用率、I/Oデバイス使用率またはネットワーク使用率レベルなど)を監視することで、長期にわたり監視してもよい。特定のワーカーノードは望ましくないまたは不健康状態にあるというSPS制御サーバによる決定に応答して、交換ワーカーノードがインスタンス化されて、特定のワーカーノードの役割を引き継いでよい。交換ワーカーノードは、交換されたワーカーノードにより保存された最新の進行記録にアクセスして、交換ワーカーノードが処理すべき1組のデータ記録を特定することができる。処理動作が冪等である実施形態では、一部の動作が繰り返された場合でも(例えば、最新の進行記録が交換ワーカーのインスタンス化よりいくらか前に書き込まれたため)、処理の全体の結果は障害及び交換によって影響を受けないであろう。いくつかの実施形態では、処理されたサブセットの所与のストリームまたはパーティションを示す進行記録の保存に加えて、ワーカーノードも蓄積したアプリケーション状況情報を保存するよう構成されてもよい。例えば、ストリーム処理ワークフローが、サービス使用基準を示すストリーミングデータ記録の解析に基づいて、特定のサービスに対するクライアントの請求額を決定する役割を持つ場合、ワーカーノードは定期的に様々なクライアントに対して決定した累積請求額を保存してもよい。
少なくともいくつかの実施形態では、SPS制御サーバは、種々の段階の入力ストリームの動的再パーティション分割など他の行動を開始することによる作業負荷レベルの変更または検出された作業負荷の不均衡(例えば、あるパーティションの取得レートが他に比べて異様に高い場合)など種々の他のトリガーに応答するよう構成されて、所与の段階で所与のパーティションに割り当てられるワーカーノードの数を変更し、より高い能力のワーカーノードを一部の段階に割り当て、またはワーカーノードをある物理資源から異なる性能能力を備える他の物理資源へ移動することができる。いくつかの実施形態では、例えば、ベストエフォート型のリカバリ方針が所与の段階用にはチェックポイント型のリカバリ方針より実装されるSPS制御サーバによる決定に応答して、上記に記載の型の進行記録が、少なくともいくつかのSPS段階のワーカーノードによっては保存されることがないかもしれない。そのようなベストエフォート型のリカバリ方針のいくつかの実施形態では、交換ワーカーノードは新しいデータ記録を受信したように単純に処理するだけで進行記録へのアクセスを要求することはない可能性がある。いくつかの実施形態では、クライアントがSPS段階でベストエフォート型リカバリ方針を実装したい場合、その段階で実施されるストリーム処理動作は冪等である必要はない。冪等でない処理動作がSPS段階でのストリーム記録で実行されるいくつかの実施形態では、チェックポイント型のリカバリに対応できないが、ベストエフォート型のリカバリなどの異なるリカバリスキームを用いることができる。少なくとも一実施形態では、冪等であるストリーム処理動作だけがSPS段階で許可されてもよい。
一部のストリームのデータ記録は、要注意または機密扱いの情報を含み、またはSPS段階で実行される処理動作は独自のアルゴリズムを使用することを含んでいるので、競合にそれを見つかることは問題になる恐れがある。このようにクライアントは特にクライアント自身がすべてを制御していないプロバイダ網データセンタにある資源を用いて動作を実行する場合に、様々な種類のストリーム管理及び処理動作の安全を懸念している。インターネット及び/または分散型クライアントのセットに対する他のネットワークを介してアクセス可能な1つまたは複数のネットワークアクセス可能サービス(種々のタイプのクラウド型データベース、コンピューティングまたは記憶サービスなど)を提供する会社または公共部門組織などの団体によるネットワーク設立は、ここではプロバイダ網と呼んでもよい。いくつかの実施形態では、クライアントは、それらの複数のデータストリーム用に複数のセキュリテティ関連のオプションの中から選択することができてもよい。上記に記載のように、組み合わせたSPSとSMSの組み合わせ構成は、SMS及び/またはSPS用の制御ノード、SMS取得ノード、SMS記憶ノード、SMS検索ノード、及びSPS処理またはワーカーノードなど、複数の異なる機能カテゴリに属するノードを備えることができる。クライアントが入手可能なセキュリティ関連の選択は、いくつかの実施形態では、種々のタイプのノードの配置または位置用のオプションを含んでもよい。例えば、一実施形態では、ストリーム記録が最初はプロバイダ網に配置された資源を用いて収集及び/または保存されたとしても、クライアントは、1つまたは複数のストリームワークフローの処理段階用のSPSワーカーノードをクライアント自身の設備上に配置されたコンピューティング装置で実装するよう要求する可能性がある。そのような配置の要求に答えて、所与のストリームの異なる機能のカテゴリのノードは異なるセキュリティの特性またはプロファイルを備えるそれぞれの資源のセットで、インスタンス化されてもよい。
資源のセットは、異なる実施形態では、例えば、物理的位置、使用される物理的セキュリティプロトコル(例えば、誰が資源への物理的アクセスを有するか)、ネットワーク隔離レベル(例えば、資源のネットワークアドレスが様々な団体の目に見える範囲)、マルチテナント機能対単一テナント機能など、様々なセキュリティ関連の特性が互いに異なる可能性がある。一部の実施形態では、クライアントはプロバイダ網内に隔離仮想網(IVN)を設立し、所与のクライアントがクライアントのIVN内に含まれる様々なデバイスのネットワーキング構成を、実質制御することができる。特に、クライアントは、それらのIVN内の様々なサーバまたは計算事例に割り当てるネットワークアドレス(例えばインターネットプロトコルまたはIPアドレス)へのアクセスを制限することができる可能性がある。そのような実施形態では、クライアントはSMSまたはSPSノードの所定のサブセットを指定のIVN内でインスタンス化することを要求してもよい。仮想化インスタンスホスト(一般にマルチテナントホストとして構成されてもよい)などのプロバイダ網資源がSMSまたはSPSノードの種々のカテゴリ用に使用されている実施形態では、クライアントは、数セットのノードを、そのクライアントだけに属する事例を実装することに限られるインスタンスホストにインスタンス化するよう要求してもよい(すなわち、あるSMSまたはSPSのノードは単一テナントホストとして構成されるインスタンスホストで実装されてもよい)。
いくつかの実施形態では、他のセキュリティ関連のオプションとして、クライアントは、特定のストリームのデータ記録が暗号化された後で、ネットワークリンクに送信されることを要求してもよい。例えば、暗号化された後で、取得サブシステムと記憶サブシステム間で、記憶サブシステムと検索サブシステム間で、検索サブシステムとSPSワーカーノード間で、及び/またはワーカーノードとSPS出力先間で、SMSで取得される。クライアントは使用される暗号化アルゴリズムをいくつかの実施形態では、指定してもよい。一実施形態では、TLS(Transport Layer Security)またはSSL(secure sockets layer)プロトコルがデータ記録送信及び/またはSPS処理結果を送信するために使用されてもよい。
データストリーム概念及び概要
図1は少なくともいくつかの実施形態による、データストリームの概念の簡略化した概観である。表示の通り、ストリーム100は、DR110A、110B、110C、110D及び110Eなどの複数のデータ記録(DR)110を含む。データプロデューサ120A及び120Bなどの1つまたは複数のデータプロデューサ120(データソースと言ってもよい)は、書き込み動作151をストリーム100のデータ記録の内容を生成するため実行してもよい。複数の異なるタイプのデータプロデューサが、例えば、携帯電話またはタブレットコンピュータのアプリケーション、センサアレイ、ソーシャルメディアプラットフォーム、ログアプリケーションまたはシステムログ構成要素、種々の監視代理人など異なる実施形態でデータのストリームを生成してもよい。1つまたは複数のデータコンシューマ130(データコンシューマ130A及び130Bなど)は、読み出し動作152を実行してデータプロデューサ120が生成したデータ記録のコンテンツにアクセスする。データコンシューマ130は例えば、いくつかの実施形態では、ストリーム処理段階のワーカーノードを備える。
少なくともいくつかの実施形態では、SMSに保存されている所与のデータ記録110は、データ部分101(例えば、DR110A、110B、110C、110D及び110Eそれぞれのデータ部分101A、101B、101C、101D及び101E)及びシーケンス番号SN102(例えば、DR110A、110B、110C、110D及び110Eそれぞれの、SN102A、102B、102C、102D及び102E)を備えてもよい。シーケンス番号102は順序を示していて、図示した実施形態ではDRをストリーム管理システム(またはストリーム管理システムの特定のノードで)で受信することができる。データ部分101は、いくつかの実施形態では、変更不能な未解釈のバイトのシーケンスを含んでもよい。すなわち、書き込み動作152が完了したら、DRの内容は、書き込みの結果、SMSにより変更できないとして生成されて、また一般にSMSはデータの意味に気付くことができない。いくつかの実施形態では、所与のストリーム100の異なるデータ記録は異なるデータ量を含んでもよいが、他の実施形態では、所要のストリームのすべてのデータ記録は、同じサイズの場合がある。少なくともいくつかの実施では、SMSのノード(例えば、取得サブシステムのノード及び/または記憶サブシステムのノード)は、SN102を生成する役割を持つことができる。下記でさらに詳細を説明するように、データ記録のシーケンス番号は常に連続していなくてもよい。ある実施形態では、クライアントまたはデータプロデューサ120は、書き込み要求の一部として、対応するデータ記録に使用される最小のシーケンス番号を示してもよい。一部の実施形態では、データプロデューサ120は、例えば、そこからデータ部分が取得できる記憶デバイスのアドレスまたはネットワークアドレス(URLなど)を与えることで(例えば、デバイスの名前及びデバイス内のオフセットなど)、データ記録のデータ部分へのポインタ(またはアドレス)を含む書き込み要求を送付してもよい。
ストリーム管理サービスは、様々な実施形態で、データプロデューサ120からデータを受領し、データを保存し、データコンシューマ130が1つまたは複数のアクセスパターンでデータにアクセスできるようにする役割を持つことができる。少なくともいくつかの実施形態では、ストリーム100はパーティション分割または「シャード分割」により、データ記録の受信、保存及び検索による作業負荷を配分してもよい。そのような実施形態では、パーティションまたはシャードは、1つまたは複数のデータ記録及びパーティションに基づき特定することができるデータ記録を取得、保存または検索する特定のノードの属性に基づき、入ってくるデータ記録110用に選択されてもよい。いくつかの実施形態では、データプロデューサ120は各書き込み動作でパーティション分割の属性として働くことのできる明示的パーティション分割キーを発行してもよく、そのようなキーをパーティションの識別子に対しマップすることができる。他の実施形態では、SMSは、データプロデューサ120と一致する要素、データプロデューサのIPアドレス、または提出のデータのコンテンツに基づいて、パーティションIDを推定することができる。データストリームがパーティション分割されているいくつかの実施形態では、シーケンス番号はパーティション毎に割り当てられていてもよい。例えば、シーケンス番号が特定のパーティションのデータ記録を受領した順番を示すが、2つの異なるパーティションにあるデータ記録DR1及びDR2のシーケンス番号はDR1及びDR2を受信した相対的順序を示す必要がないかもしれない。他の実施形態では、シーケンス番号はパーティションに基づくより、ストリームワイドに割り当てられ、その結果、データ記録DR1に割り当てられたシーケンス番号SN1がデータ記録DR2に割り当てられたSN2より低い場合、DR1とDR2が属するパーティションに関係なく、DR1はSMSによりDR2より早く受領されたことを意味する。
SMSに対応する検索または読み出しインターフェースは、種々の実施形態で、データコンシューマ130がデータ記録に順次及び/またはランダムな順序でアクセスすることを可能にする。一実施形態では、1組の反復子型読み出しアプリケーションプログラムインターフェース(API)に対応することができる。データコンシューマ130は、反復子の初期位置が指定したシーケンス番号及び/またはパーティション識別子によって示される、データストリーム用の反復子を取得する要求を提出してもよい。イニシエータをインスタンス化した後、データコンシューマはデータ記録をストリーム内またはパーティション内の初期位置から初めて順次読み出す要求を提出してもよい。データコンシューマがデータ記録をあるランダムな順序で読み出したい場合、そのような実施形態で各読み出しのために新しい反復子をインスタンス化する必要がある場合がある。少なくともいくつかの実施形態では、所与のパーティションまたはストリームのデータ記録はディスク型記憶装置に、ディスクのシークを避ける順次書き込み動作を通常用いて、シーケンス番号の順で書き込んでよい。順次読み出し動作もディスクシークのオーバーヘッドを避けるであろう。したがって、いくつかの実施形態では、データコンシューマは価格インセンティブにより、ランダムな読み出しより順次読み出しを好んで実施する場合がある。例えば、反復子のインスタンス化などのランダムアクセスの読み出し動作は順次アクセス読み出し動作よりも課金レートにより高く結びつく可能性がある。
例示のシステム環境
図2は、少なくともいくつかの実施形態による、ストリーム処理段階の収集を含むストリーム管理システム(SMS)及びストリーム処理システム(SPS)の種々のサブコンポーネント間のデータの流れの概観である。図示の通り、SMS280は取得サブシステム204、記憶サブシステム206、検索サブシステム208及びSMS制御サブシステム210を備えてもよい。各SMSサブシステムは1つまたは複数のノードまたはコンポーネントを含み、下記に説明する通り、それらは、例えば、プロバイダ網(またはクライアント所有またはサードパーティの設備)の種々の資源でインスタンス化される各実行可能スレッドまたは実行可能処理を用いて実装されてもよい。取得サブシステム204のノードは、ストリーム用に使用されるパーティション分割方針に基づき、データプロデューサ120(120A,120B及び120Cなど)から特定のデータストリームのデータ記録を取得するよう構成する(例えば、SMS制御サブシステム210のノードによって)ことができる。そして、各取得ノードは受領したデータ記録を対応する記憶サブシステム206のノードに渡すことができる。記憶サブシステムのノードはデータ記録を種々のタイプの任意の記憶デバイスにストリーム用に選択された持続性方針にしたがって保存することができる。検索サブシステム208のノードは、SPS290のワーカーノードなどのデータコンシューマからの読み出し要求に答えてもよい。SPS290の段階215A、215B、215C、215Dなどのストリーム処理段階215は、SPS制御サブシステム220の助けを借りて設定することができる。各段階215は、SPS制御サブシステム220により構成された、1つまたは複数のワーカーノードを含み、受領したデータ記録毎に1組の処理動作を実行することができる。図示の通り、いくつかの段階215(215A及び215B)はデータ記録を直接SMS280から受領するが、他(215C及び215D)は入力を他の段階から受領してもよい。複数のSPS段階215はいくつかの実施形態では、並行して動作することができる。例えば、異なる処理動作を段階215A及び215Bの同じストリームから引き出したデータ記録に同時に実行することができる。特定のストリーム用に図2で示したものと同様の各サブシステム及び処理段階を他のストリーム用にもインスタンス化してもよいことに留意されたい。
少なくともいくつかの実施形態では、図2に示すサブシステム及び処理段階のノードの少なくとも一部は、プロバイダ網の資源を用いて実装されてもよい。上記で留意を促したように、1組の分散したクライアントに対してインターネット及び/または他のネットワークを介してアクセス可能な1つまたは複数のネットワークアクセス可能サービス(種々のタイプのクラウド型データベース、コンピューティングまたは記憶サービス)を提供する会社または公共部門組織などの団体によるネットワークの設立は、ここではプロバイダ網と呼んでもよい。サービスのいくつかは、より高いレベルのサービスを構築するために使用することができる。例えば、コンピューティング、記憶またはデータベースサービスはストリーム管理サービスまたはストリーム処理サービス用の基礎的要素として使用することができる。少なくともプロバイダ網のコアサービスのいくつかは、「インスタンス」と呼ばれるクライアント使用のサービス単位でパッケージ化することができる。例えば、仮想化コンピューティングサービスでインスタンス化された仮想機械装置は「コンピュートインスタンス」を表し、記憶サービスによりインスタンス化されたブロックレベルのボリュームなどの記憶デバイスは「記憶インスタンス」と呼んでもよく、データベース管理サーバは「データベースインスタンス」と呼んでもよい。種々のネットワークアクセス可能なプロバイダ網の数単位のサービスが実装されるサーバなどのコンピューティングデバイスは「インスタンスホスト」または単純に「ホスト」とここでは呼んでもよい。取得サブシステム204のノード、記憶サブシステム206、検索サブシステム208、SMS制御システム210、処理段階215及び/またはSPS制御サブシステム220は、いくつかの実施形態では、複数のインスタンスホスト上に様々なコンピュートインスタンスで実行するスレッドまたはプロセスを備えることができる。所与のインスタンスホストはいくつかのコンピュートインスタンスを備え、特定のインスタンスホストのコンピュートインスタンスの集合は1つまたは複数のクライアントの種々の異なるストリーム用ノードを実装するために使用することができる。記憶インスタンスはいくつかの実施形態では、種々のストリームのデータ記録を保存するために、またはストリーム処理段階の結果の送り先として使用されてもよい。徐々に、制御サブシステムのノードは、例えば、ノードの追加、削除、プロセス、コンピュートインスタンもしくはインスタンスホストへのノードのマッピングの変更、または所与のストリームの再パーティション分割などによる、種々のトリガー条件に応答して他のサブシステムの個体数を動的に修正することができるが、同時に、図15及び図16を参照して以下に記載の通り、受領、保存、及びデータ記録処理を継続して行うことができる。
プロバイダ網資源がストリーム関連の動作に使用されている実施形態の文脈では、「クライアント」という言葉は、所与の通信の資源または目的先として使われた時、任意のコンピューティングデバイス、プロセス、ハードウェアモジュールまたはソフトウェアモジュールのことを言ってもよく、それらは、1つの団体(複数のユーザまたは単一のユーザを有する組織、グループなど)に所有され、管理され、または配分されていて、その団体は少なくともあるプロバイダ網のネットワークアクセス可能サービスにアクセスし、また利用することができる。あるサービスのクライアントは自身を実装して他のサービスの資源を使用することができる。例えば、ストリームデータコンシューマ(ストリーム管理サービスのクライアント)はコンピュートインスタンス(仮想化したコンピューティングサービスで提供される資源)を備えることができる。
所与のプロバイダ網は、物理及び/または仮想化コンピュータサーバ、1つまたは複数の各記憶デバイスを備える記憶サーバ、ネットワーキング装置など様々な資源プールをホストし、プロバイダが提供するインフラストラクチャ及びサービスを実装し、構成し、また配布するために必要な多数のデータセンタ(いろいろな地域のいたるところに分散することができる)を含んでもよい。いくつかの異なるハードウェア及び/またはソフトウェア構成要素は、その一部は異なるデータセンタまたはいろいろな地域でインスタンス化され、または実行されて、様々な実施形態で、全体として各サービスを実行するため使用されることができる。クライアントは、クライアントが所有し、クライアントが管理する前提の、またはプロバイダ網の外のデータセンタに配置されたデバイスから、及び/またはプロバイダ網の中のデバイスから、プロバイダ網で資源及びサービスと相互に作用し合うことができる。プロバイダ網は、1つの実施例環境として働き、ここで説明する多くのストリーム管理及び処理技術が実装されてもよいが、それらの技術はプロバイダ網だけでなく他のタイプの分散型システムにも、例えば、それ独自のアプリケーション用に単一の法人が運営する大規模分散型環境などに適用することができる。
プログラム的インターフェース例
上述の通り、少なくともいくつかの実施形態では、SPSはSMSプログラムインターフェースを利用して、SPSクライアントがより簡単に使用できるより高いレベルの機能を作ることができ、それは様々なストリーム型アプリケーション用に所望のビジネスロジックを実装するものである。SPSとSMSの機能の違いを検討すると、類比が助けとなる。SPSの機能は、一般に、C++などのより高いレベルの言語内のプログラム言語の構造体に例えることができるが、SMSの機能は一般にプログラム言語の構造体をコンパイラで翻訳するアセンブリ言語命令に例えられる。アセンブリ言語命令を直接用いて同じ動作を実行することができる可能性があるが、より高いレベルの言語でプログラミングすることは通常多くのカテゴリの顧客またはユーザにとりより簡単かもしれない。同様に、SMSにより提供される基本要素を用いて種々のアプリケーションを実装することができるかもしないが、SPSの特徴を用いてそうする方が簡単かもしれない。SPS処理動作(データレコードで実施される冪等である処理動作など)は、ストリーム記録のデータ内容に実装してもよいが、SMSの動作は記録自体を取得、保存、また検索するために実行されて、通常記録の中身を検討しない。図3は、少なくともいくつかの実施形態による、SMSとSPSで実装することができるプログラムインターフェースのそれぞれのセットの例示である。いくつかの異なるアプリケーションプログラミングインターフェース(API)をSMS及びSPSの両方に実施例として示す。例示されたAPIはいずれの所定の実施においても対応するすべてを網羅するリストと考えるものではなく、またいくつかの図示したAPIはある所定の実施形態では対応しないかもしれない。
矢印350が示すように、SPSクライアント375はSPSプログラムインターフェース305を呼び出して、処理段階を構成することができる。種々のタイプのSPSプログラムインターフェース305は異なる実施形態で実装されてもよい。例えば、createStreamProcessingStage APIにより、クライアントが指定した入力ストリーム用の新しい処理段階215の構成を要求することができる。その結果、段階のワーカーノードは、インターフェースの呼び出しで指定される1組の冪等である動作を実行し、結果を出力配分記述子または方針に示される目的先へ送出するようそれぞれ構成される。createStreamProcessingStage APIの一部のバージョンまたは同等物で、クライアントは、入力ストリームの生成を要求してもよく、他のバージョンでは入力ストリームは処理段階が生成される以前に生成されなければならないかもしれない。リカバリ方針はワーカーノード用に指定されてもよく、例えば、チェックポイント型リカバリ技術を使うか、またはベストエフォート型リカバリ技術が好ましいかを示すことができる。いくつかの実施形態では、initializeWorkerNode APIに対応して、特定の段階でワーカーノードの明示的インスタンス化を要求することができる。チェックポイント型リカバリが実装される実施形態では、saveCheckpoint APIが支持されて、進行記録がワーカーノードで生成されることをクライアントが要求することができるかもしれない。
異なる実施形態では、setOutputDistrubution APIなど様々なタイプのSPS出力管理APIに対応するので、そのようなAPIにより、特定の段階で実行される処理動作の結果及び新しく生成されるストリームのために用いる特定のパーティション分割方針を用いて1つまたは複数のストリームが生成されるとクライアントは示すことができる。いくつかの処理段階は主として再パーティション分割用に構成されてもよい。例えば、記録属性セットA1に基づき、データ記録をN1パーティションにマップするあるパーティション分割機能PF1を、入力ストリームS1用に使用してもよく、処理段階は、異なるパーティション分割機能PF2を実装するために使用されてこの同じデータ記録をN2パーティションにマップしてもよい(異なる属性セットA2または同じ属性セットA1を用いて)。linkStagesなどのいくつかのSPS APIは、複数の段階を備える任意のグラフ(例えば、有向非巡回グラフ)を構成するために使用されてもよい。一部の実施形態では、サードパーティ、オープンソースストリーム処理フレームワークまたはサービスへのコネクタに対応することができる。そのような一実施形態では、SPS段階が、データ記録(例えば、段階で実施される処理動作の結果を適切にフォーマットして)を既存のサードパーティまたはオープンソースシステムによる消費用に準備するために使用されてもよい。createThirdPartyConnectorなどのAPIは、図示の実施形態では、そのようなコネクタを設定するために使用されてもよく、またSPS段階の結果をサードパーティのシステムと互換性がある形式へ適切に変換することは、createThirdPartyConnectorの革新の結果としてインスタンス化された1つまたは複数のコネクタモジュールにより実施されてもよい。
SPSはSMS API 307を呼び出して、矢印352で示すように少なくともその機能のいくつかを実行してもよい。図示の実施形態では、SMS API 307は、例えば、createStream及びdeleteStream(それぞれストリームを生成し削除する)とgetStreamInfo(所与のパーティションの役割を持つ種々のタイプのノードのネットワークアドレスなど、ストリーム用にメタデータを取得する)を含んでもよい。putRecordインターフェースはデータ記録を書き込むために使用されて、同時にgetIterator及びgetNextRecordsインターフェースは、それぞれ非連続ならびに連続読み出しのために使用されてもよい。repartitionStreamインターフェースは、いくつかの実施形態では、特定のストリームの動的再パーティション分割を要求するために使用されてもよい。そのようにしたいクライアント370は、矢印354が示す通り、SMS API 307を直接呼び出してもよい。すでに説明の通り、種々の他のSMS及び/またはSPS API は、他の実施形態でも実装されてよいが、図3に示したAPIのいくつかは、一部の実施形態では実装することができない。
様々な実施形態では、API以外のプログラムインターフェースもまた、あるいは代わりにSPSまたはSMS用に実装されてもよい。そのようなインターフェースはグラフィカルユーザインターフェース、ウェブページまたはウェブサイト、コマンドラインインターフェースなどを含んでもよい。いくつかのケースでは、ウェブベースのインターフェースまたはGUIは基礎的要素としてAPIを使用してもよく、例えば、ウェブベースの相互作用は、SMSまたはSPSの制御構成要素で1つまたは複数のAPIを呼び出すことになってもよい。図4は、いくつかの実施形態による、SPSクライアントがストリーム処理段階のグラフを生成することができるよう実装されてもよいウェブベースのインターフェースの実施例を示す。図示の通り、インターフェースはメッセージ領域402、グラフメニュー領域404及びグラフデザイン領域403を備えるウェブページ400を備える。
ユーザはメッセージ領域402でストリーム処理グラフの構造に関する一般的手順と同様にストリームの概念及び基本要素についてより学ぶために使用可能なリンクを得ることができる。いくつかのグラフィカルアイコンをメニュー領域404でストリーム処理グラフのツールセットの一部として得ることができる。例えば、クライアントは種々のSPS処理段階の入力または出力として、持続性ストリーム451、一時的ストリーム452、またはサードパーティ処理環境へのコネクタ453を示すことが許されてもよい。ウェブベースのインターフェースが実装されるSPS/SMSに関して、持続性ストリーム451はストリームとして規定され、そのデータ記録は、ディスク、非不揮発性RAMまたはSSDなどの持続記憶デバイスに保存されてもよく、一時的ストリーム452はデータ記録が持続性記憶デバイスに保存される必要がないものと規定されてもよい。一時的ストリームは、例えば、SPS段階の出力から生成されてもよく、SPS段階はベストエフォート型リカバリ方針が実装される異なるSPS段階による入力として消費されるものと期待される。
SPSグラフ作成ウェブページ400の例では2つのタイプの処理段階が支持される。それらは、チェックポイント型ワーカーノードリカバリが用いられる段階455(例えば、各ワーカーノードは進行記録を時々保存し、特定のワーカーノードで障害が発生した場合、交換ノードが故障したノードの進行記録を参照し、処理を始めるデータ記録を決定する)、及びベストエフォート型リカバリが用いられる段階456(例えば、交換ワーカーノードは進行記録を参照せず、単純に受領したように新しいデータ記録の処理を開始する)である。各段階で実行される処理動作に関する詳細には、メッセージ領域402の手順で示すように、グラフ構造領域403の対応するアイコンをクリックして入ることができる。ストリーム、コネクタ及び処理段階のアイコンに加えて、メニュー領域404はまた、サードパーティまたは外部ストリーム処理システムを示すアイコンタイプ459、及び資源が処理段階に使用されているプロバイダ網で実装されてもよい記憶サーバのノードを示すアイコンタイプ460を含む。
図4で示すシナリオの例では、クライアントは412,415及び416の3つの処理段階を備えるグラフ405をグラフデザイン領域403に作成している。処理段階412はチェックポイント型リカバリを用いるよう構成されて、持続性ストリーム411を入力として使用する。出力または段階412での処理結果は2つの宛先に、段階415の入力を形成する異なる持続性ストリーム413の形式と段階416の入力を形成する一時的ストリーム414の形式で送信される。段階415と416は両方ともベストエフォート型リカバリ方針をそのワークノードに用いる。段階415の出力は、一時的ストリームの形式で記憶サービスノード419へ送信される。段階415の出力はコネクタ417を介してサードパーティ処理システム418へ送信される。「グラフ保存」ボタン420は処理段階グラフの図示を、例えば、JSON(JavaScript(登録商標) Object Natation)、XML(Extensible Markup language)またはYAMLなどの任意に適切な形式で保存するために使用することができる。任意の複雑な処理作業フローは、種々の実施形態では、図4に示すものと同様のツールを使用して作成することができる。そのようなツールを用いて生成された作業フローはその後作動されて、例えば、図4の段階412などの処理段階用データ記録を取得するために、SMS APIを呼び出しできるようになり、getIterator及び/またはgetNextRecordsインターフェースは、ストリーム411上で呼び出すことができるようになる。
図5は、少なくともいくつかの実施形態によれば、SMSで実装することができるプログラム記録提出インターフェース及び記録検索インターフェースの実施例を図示したものである。図示されたDR110K及び110Qなどのデータ記録は、図示の実施形態では、種々のタイプのプログラム取得インターフェース510を介してSMSへ提出することができる。DR110はいくつかの実施形態では4つのタイプの要素を備えることができる。すなわち、501A(ストリームS1用)、501B(ストリームS2用)、データまたは記録の主要部の表示、オプショナルパーティションキー504(504Aまたは504B)、及びオプショナル配列優先表示506(配列優先表示506A及び506B)などのストリーム識別子である。データ自体はいくつかのデータ記録のインラインで与えられてもよく(例えば、DR110Kのインラインデータ502)、同時に他のデータ記録用には、ポインタまたはアドレス503を与えて、SMSに対してネットワークアクセス可能位置を表示する(またはネットワーク転送を必要としないローカルデバイスのアドレス)。一部の実施形態では、所与のストリームがインライン及び参照(アドレス型)データ記録提出の両方を支持してもよい。その他の実施形態では、所与のストリームはデータプロデューサを必要とするが、すべてのデータをインラインまたは参照で供給できる。いくつかの実施形態では、データ記録提出は記録に使用されるパーティション識別子を含んでもよい。
入ってくるデータ記録110は、図示の実施形態では、パーティション分割方針に基づいて、各取得及び/または記憶ノードへ向けることができる。同様に、記録検索もパーティションベースで、例えば、1つまたは複数の検索ノードは、所与のパーティションの記録宛ての読み出し要求に応答するよう指定されてもよい。いくつかのストリーム用に、データプロデューサは、各データ記録書き込み要求を有する明示のパーティションキーを与えるよう要求される場合がある。他のストリーム用には、SMSはパーティション分割スキームにしたがい、データ記録を送出することができる。パーティション分割スキームは、明示的に供給されたパーティションキー以外のメタデータまたは属性に依存して、例えば、提出データプロデューサに属する識別情報をパーティションキーとして使用することができる、または提出データプロデューサのIPアドレスの一部またはすべてを使用することができる、または提出されたデータの一部を使用することができる。いくつかの実施形態では、例えば、ハッシュ関数をパーティションキーに適用して、128ビットの整数など所定の大きさの整数値を取得することができる。その大きさ(例えば、0から2の128乗−1)の正の整数の総範囲は、N個の連続サブ範囲に分けることができ、各サブ範囲はそれぞれのパーティションを表す。したがって、そのような実施例では、データ記録用に決定したまたは供給されたいずれの所与のパーティションキーも、対応する128ビット整数に対してハッシュされて、その整数が属する128ビット整数の連続サブ範囲はデータ記録が属するパーティションを示すことができる。パーティション分割方針とその使用についてのさらなる詳細は以下図15に関して説明する。
図5に示す、特定のパーティションのデータ記録を取得または承諾し、データ記録を保存し、また特定のパーティションに対する読み出し要求に応答する役割を持つ1組のノードは、総称してパーティション用のISR(取得、記憶及び検索)ノードと呼ばれる。Sj−Pkの表記はストリームSiのk番目のパーティションを示すために使用される。図示の実施形態では、ISRノード520Aは、パーティションS1−P1の取得、保存及び検索記録用に構成され、ISRノード520BはパーティションS1−P2の記録用に設定され、ISRノード520CはパーティションS1−P3の記録用に設定され、ISRノード520KはパーティションS2−P1の記録用に設定され、ISRノード520LはパーティションS2−P2の記録用に設定される。いくつかの実施形態では、取得サブシステム、記憶サブシステムまたは検索サブシステムの所与のノードは複数のパーティション(または複数のストリームの複数のパーティション)のデータ記録を扱うよう構成されてもよい。いくつかの実施形態では、所与のストリームの単一のパーティションの記録は、複数のノードによって取得され、保存され、または検索されてもよい。所与のパーティションSj−Pk用に指定された取得ノードの数は、少なくともいくつかのケースでは、異なるパーティションSj−P1用に指定された取得ノードの数と違ってもよく、またSj−Pk用に指定された記憶ノードの数及び/またはSj−Pk用に指定された検索ノードの数と異なってもよい。取得及び/または検索に関して、SMS制御ノードは、いくつかの実施形態では、API(getStreamInfoなど)を実装して、クライアントがどのノードがどのパーティションを受け持つか決定できるようにしてもよい。データ記録とパーティション間及びパーティションとISRノード(または制御ノード)間で構成されたマッピングは、下記の動的再パーティション分割に関する検討で説明するように、時間とともに修正されてもよい。
いくつかの実施形態では、いくつかの異なるプログラムインターフェース580が所与のパーティションからストリームデータ記録を検索するまたは読み出すだめに実装されてもよい。図5に示すように、いくつかの検索インターフェース581は、getIterator(反復子のインスタンスを作成するまたは指定されたシーケンス番号を有するデータ記録をカーソルが置かれた場所で読み出しするまたはカーソルの後で読み出しする)またはgetRecord(指定されたシーケンス番号を有するデータ記録を読み出すこと)など、非順次アクセスのため実装されてもよい。他の検索インターフェース582は、getNextRecords(N個の記録が反復子の現在の位置から、小さいシーケンス番号から順に読み出されることを要求するインターフェース)などの順次の検索のために実装されてもよい。回転ディスク型記憶システムでは、すでに述べた通り、順次I/Oが多くの場合、ランダムI/Oよりずっと効率的かもしれない。というのも要求されるディスクヘッドシークのI/O当たり平均数は通常ランダムI/O用より順次I/O用が圧倒的に低いからである。多くの実施形態で、所与のパーティションのデータ記録はシーケンス番号順に書き込まれ、その結果、シーケンス番号順に基づく(例えばgetNextRecordsまたは同様のインターフェースを用いて)順次読み出し要求がランダム読み出し要求より圧倒的に効率的な可能性がある。したがって、少なくともいくつかの実施形態では、異なる課金レートが順次対非順次検索インターフェースに設定されてもよく、例えば、クライアントは、非順次読み出しにより多く請求される可能性がある。
取得サブシステム
図6は、少なくともいくつかの実施形態による、SMSの取得サブシステム204の実施例の要素を図示する。図示の実施形態では、取得動作は論理的にフロントエンドとバックエンドに分けられて、フロントエンド機能はデータプロデューサ120(例えば、120A,120Bまたは120C)との相互作用を含み、バックエンド機能はSMS記憶サブシステムとの相互作用を含む。このようなフロントエンド/バックエンドの分離は、記憶サブシステムのセキュリティを高め、データプロデューサにパーティション分割方針の詳細を提供しなければならないことを避けるなど、いくつか利点がある。SMSクライアントライブラリ602は種々のデータプロデューサ120でのインストールのために提供されて、データプロデューサはライブラリ602に含まれるプログラムインターフェースを呼び出して取得のためデータを提出する。例えば、一実施形態では、データプロデューサ120は数百または数千のプロバイダ網の物理及び/または仮想サーバでインスタンス化した記録エージェントまたは監視エージェントを備えることができる。そのようなエージェントは、種々のログメッセージ及び/または測定基準を自身の各サーバで収集し、定期的に収集したメッセージまたは測定基準を、終点を1つまたは複数のSMSの取得制御ノード660によりインスタンス化されるフロントエンドの負荷ディストリビュータ604へ提出してもよい。いくつかの実施形態では、1つまたは複数の仮想IPアドレス(VIP)を負荷ディストリビュータのために設定し、データプロデューサはストリームデータをそこへ提出することができる。ある実施形態では、ラウンドロビンDNS(ドメインネームシステム)技術をVIP用に使用し、特定の負荷ディストリビュータをいくつかの等しく構成された負荷ディストリビュータの中から選択して、それに対してデータをデータプロデューサ120が送信することができる。
受信したデータ記録を図示の実施形態では、いくつかのフロントエンドのノード606のいずれかへ(例えば、606A、606Bまたは606C)向けてもよい。少なくともいくつかの実施形態では、負荷ディストリビュータ604はデータ記録を使用する際、パーティション分割方針650に気付かない可能性がある。したがって、フロントエンドのノード606が所与のデータ記録用に選択されて、パーティション型負荷平均化よりラウンドロビン負荷平均化(またはある他の一般的な目的の負荷平均化アルゴリズム)を使用することができる。フロントエンドのノード606は種々のストリーム用のパーティション分割方針650に気付く可能性がある。そして、取得制御ノード660と相互作用して、所与のパーティションのデータ記録用に構成される特定のバックエンド取得ノード608(例えば、608A、608B、または608C)のアイデンティティを取得することができる。したがって、図示の実施形態では、フロントエンドのノード604は各データ記録をデータ記録が属する各パーティションに基づいて複数のバックエンドノード606へ送信することができる。先に確認した通り、データ記録が属するパーティションはデータプロデューサが提供するパーティションキー、データプロデューサのアイデンティティまたはアドレスなど1つまたは複数の属性、あるいはデータの内容など、種々の要素のいかなる組み合わせに基づいても決定することができる。
各バックエンドノード606は1つまたは複数のストリームの1つまたは複数のパーティションに属するデータ記録を受信し、記憶サブシステムの1つまたは複数のノードへデータ記録を送信することができる。バックエンドノードはいくつかの実施形態では、「PUTサーバ」と呼ばれ、データはHTTP(HyperText Transfer Protocol)「PUT」ウェブサービスAPI経由で提出される。所与のバックエンドノードは、クエリを制御ノード660へ提出することにより、データ記録が送信されるべき1組の記憶サブシステムノードを決定することができる。(制御ノード660は、異なるサブシステムの制御機能が分離した1組のノードにより取り扱われる実施形態では、対応するクエリを記憶サブシステムの制御ノードに提出する。)
少なくともいくつかの実施形態では、少なくとも1度取得方針またはベストエフォート型取得方針などの複数の異なる取得承認方針652に対応することができる。少なくとも1度の方針では、データプロデューサ120は提出した各データ記録に対して肯定承認を要求し、承認が得られるまで、同じデータ記録を何度も提出する可能性がある(第1の提出に対して承認が得られなかった場合)。ベストエフォート型取得方針では、少なくとも提出したいくつかのデータ記録に対しては、肯定の承認は要求できない(しかし取得サブシステムは時折承認を出す、またはデータプロデューサからの明示的な承認要求には応答する)。取得サブシステム204がデータプロデューサに承認を提示するよう要求される実施形態では、承認が発行される前、所与のデータ記録を管理するバックエンド取得ノード608は要求した数のデータ記録の複製が記憶サブシステムで生成されるまで待つことがある(例えば、ストリーム用に設定された持続性方針にしたがって)。種々の実施形態では、シーケンス番号は、例えば、同じパーティションまたはストリームの他の記録と比較してその記録の取得された順序を示し、取得サブシステムが受信した各データ記録に対して生成してもよい。そのようなシーケンス番号はデータプロデューサに承認として、または承認の一部として返信されてもよい。シーケンス番号に関するより詳細については図13a及び図13bを参照して以下で説明する。承認及び/またはシーケンス番号は、いくつかの実施では、データプロデューサにフロントエンドノード606を介して返信することができる。少なくともある実施形態では、少なくとも1度方針はフロントエンド及び取得サブシステム自身のバックエンドノード間で実装されてもよい。例えば、所与のフロントエンドのノード606はデータ記録を適正なバックエンドノード608にバックエンドノードが承認を与えるまで、繰り返し提出する可能性がある。
取得制御ノード660は、他の機能の中でも、フロントエンド及びバックエンドノードをインスタンス化する、ノードのヘルス及び作業負荷レベルを監視する、必要に応じてフェールオーバーを指揮する、どのノードが所与のパーティションを受け持つかということに関するクエリに応答するまたは方針に関連するクエリに応答する役割を持つことができ、取得に関連する構成に対して、動作はストリームの動的再パーティション分割に起因する。所与の1組の1つまたは複数のストリームに指定された取得制御ノードの数は、いくつかの実施形態では、時間とともに変わる可能性がある。例えば、1つまたは複数の主制御ノードは、必要に応じて制御ノードのプールを再構成する役割を持つことができる。冗長グループが取得フロントエンドまたはバックエンドノードに対して設定されるいくつかの実施形態では、図9及び図10を参照して以下でさらに詳細を説明する通り、制御ノード660は、どのノードが主でどれが非主かの記録を取る役割を持ち、フェールオーバーのトリガー条件を検出し、またフェールオーバーが要求されたときは交換品を選択する役割を持つことができる。図6に示す多層化取得サブシステムの構造は、いくつかの実施形態では実装することはできないことに留意されたい。例えば、単一の1組の取得ノードだけを一部のシナリオで構成することができる。
ストレージサブシステム
図7は少なくともいくつかの実施形態によるSMSの記憶サブシステムの実施例の要素を図示するものである。図示の通り、取得ノード608(例えば、フロントエンド及びバックエンド取得責任が異なるノードのセットにより扱われている実施形態でのバックエンド取得ノード)は、ストリームの1つまたは複数のパーティションのデータ記録をそれらのパーティションのために構成される各記憶ノード702へ送信することができる。例えば、パーティションS1−P1のデータ記録110Aは記憶ノード702Aへ送信され、パーティションS2−P3のデータ記録110Bは記憶ノード702B及び702Cへ送信され、パーティションS3−P7のデータ記録110Cは記憶ノード702Dへ送信され、またパーティションS4−P5のデータ記録110Dは最初に記憶ノード702Eへ送信される。記憶制御ノード780は異なるストリームのデータ記録に適用される持続性方針750を強制する役割を持ち、必要に応じて記憶ノードを構成及び再構成し、記憶ノードの状態を監視し、フェールオーバーを管理し、記憶構成クエリまたは記憶方針クエリ、及び図示の実施形態で他の種々の管理タスクに応答する役割を持つことができる。
持続性方針750は、異なる実施形態では、種々の方法で互いに異なってもよい。例えば、ストリームSjに適用される持続性方針P1は、(a)保存される各データ記録の複製の数、(b)複製が保存されるべき記憶デバイスまたはシステムのタイプ(複製が、揮発性メモリ、不揮発性キャッシュ、回転ディスク型記憶装置、ソリッドステートドライブ(SSD)、各種記憶装置、各種RAID(高価でない複数のディスクからなる冗長配列)、データベース管理システムに、プロバイダ網で実装される記憶サービスのノードで、などに保存されるべきかどうか)、(c)複製の地理的分散(例えば、異なるデータセンタに複製を配置することにより、ストリームデータが大規模障害または所定の種類の災害に対して強くなされているか)、(d)書き込み承認プロトコル(例えば、Nの複製が保存される場合、取得ノードに承認が与えられる前に何個のNの複製が正常に書き込まれなければならないか)、及び/または(e)複数のデータ記録の複製が保存される必要がある場合、複製は並行してまたは順次生成されなければならない、という条件のストリームSkに適用される方針P2と異なってもよい。複数の複製が保存される必要があるいくつかのケースでは、データ記録110Dの場合のように、所与の記憶ノードはデータ記録を他の記憶ノードへ送信してもよい(例えば、記憶ノード702Eはデータ記録110Dをさらに複製を作るため記憶ノード702Fへ送信し、記憶ノード702Fはそれを記憶ノード702Gへ送信する)。 多重複製の持続性方針が用いられる他のケースでは、2つのインメモリ複製が保存される必要があるデータ記録110Bのケースと同様に、取得ノードは並行して多重複製を始めてもよい。少なくともいくつかの実施形態では、クライアントの選択する持続性方針はストリームのデータ記録に使用される記憶場所のタイプを指定することはできないが、代わりにSMSは適切なタイプの記憶技術及び/または場所を費用、性能、データソースの近傍、耐久性要件などの様々な基準に基づいて選択することができる。一実施形態では、クライアントまたはSMSどちらかが、異なる記憶技術または記憶場所の型を所与のストリームの別のパーティションまたは別のストリームに使用することを決定できる。
図7に示す実施例では、ストリームS1に適用される持続性方針は(または少なくともストリームS1のパーティションS1−P1)、単一複製インメモリ方針であるが、ストリームS2には2個並行複製インメモリ方針が適用される。したがって、データ記録110Aのインメモリ複製704Aは、記憶ノード702Aで生成されるが、データ記録110Bに対応する2個インメモリ複製705A及び705Bは並行して記憶ノード702B及び702Cで生成される。ストリームS3のデータ記録110Cに対しては、単一オンディスク複製706Aが生成される。ストリームS4に対しては、連続3個複製オンディスク方針が適用可能で、その結果、各オンディスク複製707A、707B及び707Cは順次、記憶ノード702E,702F及び702Gで生成される。他の種々の型の持続性方針は、異なる実施形態では、データストリームに適用されてもよい。検索サブシステムのノードは、適切な記憶ノードからデータコンシューマによる種々の型の検索APIの呼び掛けに応答して、データ記録を取得することができる。
検索サブシステム及びプロセッシング段階
図8は、少なくともいくつかの実施形態による、SMSの検索サブシステムの実施例の要素及びSPSを備える検索サブシステムの相互作用の実施例を示す。図示のように、検索サブシステム206は、検索ノード802A、802B及び802Cなどの複数の検索ノード802ならびに検索制御ノード880の収集を備えてもよい。各検索ノード802は、以下で説明するように、SPSのワーカーノード840などの様々なクライアントまたはデータコンシューマ130からのストリームデータ検索要求に応答するよう構成されてもよい。先に説明した非順次及び順次検索インターフェースなどの別の実施形態では、様々なプログラム検索インターフェース802を検索ノードが実行してもよい。いくつかの実施形態では、HTTP GET要求などのウェブサービスAPIがデータ記録検索に使用されてもよく、したがって検索ノード802は、GETサーバと呼ばれてもよい。所与の検索ノード802は、図示の実施形態では、例えば、検索制御ノード880によって、記憶ノード702A及び702Bなど記憶サブシステムのノード702の適切なセットから1つまたは複数のストリームパーティションのデータ記録を取得するよう構成されてもよい。
図示の実施形態では、検索ノード802は1つまたは複数の記憶ノード702と相互に作用してもよく、また、1つまたは複数のSPSワーカーノード840から受領した検索要求に応答してもよい。例えば、パーティションS4−P5のデータ記録(例えばデータ記録110K)及びS5−P8のデータ記録(例えばデータ記録110L)は記憶ノード702Aから検索ノード802Aによって読み出されて、それぞれワーカーノード840A及び840Kに提供される。110MなどのパーティションS6−P7のデータ記録は検索ノード802Bによって、記憶ノード702Aから読み出されて、ワーカーノード840Kに提供される。パーティションS4−P7のデータ記録は検索ノード802Cによって記憶ノード702Bから読み出されて、ワーカーノード840B及び他のデータコンシューマ130(例えば、SPSを介してSMSと相互に作用する代わりにSMS検索APIを直接呼び出すデータコンシューマ)へ提供される。
少なくともいくつかの実施形態では、一部またはすべての検索ノード802は各キャッシュ804(検索ノード802Aでキャッシュ804A、検索ノード802Bでキャッシュ804B及び検索ノード802Cでキャッシュ804C)を実装して、そこで種々のパーティションのデータ記録を将来の検索要求を見越して、一時的に保管することができる。検索制御ノード880は、例えば、キャッシング方針(例えば、所与のパーティションを構成するキャッシュのサイズ、データ記録がキャッシュされる期間)、記憶ノード選択方針(データ記録の多重複製が保存されるシナリオ内の所与のデータ記録を取得するためどの特定の記憶ノードに最初にコンタクトするか)など複数の検索方針882を実装する役割を持ってもよい。 さらに、検索制御ノードは検索制御ノード802をインスタンス化し、かつ監視して、どの検索ノードがどのパーティションを受け持つかに関するクエリに応答して、再パーティション分割動作を開始または再パーティション分割動作に応答するなどの役割も持ってもよい。
図示の実施例では、SPS290は2つの処理段階215A及び215Bを含む。SPS制御ノード885は、ワーカーノード840AをパーティションS4−P5の処理記録へ、ワーカーノード840BをパーティションS4−P7の処理記録へ、またワーカーノード840KをパーティションS5−P8及びS6−P7の処理記録へなど、ワーカーノード804を種々の処理段階215でインスタンス化する役割を持ってもよい。SPS制御ノード885は、プログラムインターフェースを実装して(図3及び図4で図示したように)、SPSクライアントが処理作業フローを設計できるようにすることができる。種々のチェックポイント方針850は別の処理段階または作業フローのために実装されて、ワーカーノードがどれだけ各パーティションを処理しているか、進行記録用に使用される記憶デバイスのタイプなどを示す進行記録を保存する時または場合を示すことができる。フェールオーバー/リカバリ方針852は、異なるノードを有するワーカーノードを交換するようにするトリガー条件または閾値及び、ベストエフォート型リカバリが使用されるかまたはチェックポイント型リカバリが所与の進行段階に使用されるかを示すことができる。少なくともいくつかの実施形態では、SPS制御ノード885は、例えば、検索ノードを所与のストリームのどのデータ記録から取得するかを指定する、特定の処理作業フロー用に要求される可能性がある新しい一時的または持続性ストリームを設定するなど、様々な型のSMS制御ノードと相互作用することができる。少なくとも一実施形態では、例えば、SMS制御インターフェースを利用する代わりに、一部のクライアントはより高いレベルのSPSインターフェースのみを呼び出すことを望む場合があり、クライアントはストリームをインスタンス化するためSPS制御ノードと相互作用することができる。分散する制御ノードのセットはSMS取得、記憶及び検索サブシステム用、及びSPS段階用の図6、7、及び8で図示されるが、少なくともいくつかの実施形態では、所与の制御ノードをいくつかのサブシステム及び/またはSPS用に使用することができることを留意されたい。
ノード冗長群
少なくともいくつかの実施形態では、ノードの冗長グループが1つまたは複数のSMSのサブシステム用に構成されてもよい。すなわち、例えば、ストリームパーティションSj−Pk用のデータ記録を検索する1つの検索ノードを構成する代わりに2つ以上のノードがそのような検索用に設定されてもよく、一方のあるノードがある時点での「主な」または能動的な役割を認められ、他方のあるノードまたは複数のノードが「非主」ノードと指定される。現在の主ノードは、例えば、クライアントまたは他のサブシステムのノードのいずれかから受信した要求などの作業要求に応答する役割を持つことができる。1つの非主ノードまたは複数の非主ノードはフェールオーバーが、例えば、障害、主ノードへの接続喪失、または他のトリガー条件により、選択の非主ノードが以前の主ノードの役割を引き継ぐよう制御ノードに通知された時点など、トリガーされるまで休止状態を維持してもよい。こうして、主要な役割はフェールオーバーの間、現行の主ノードから取り消されて現行の非主ノードに与えられてもよい。いくつかの実施形態では、非主ノードは、例えば、明示的通知を要求できない、フェールオーバーが起こるという決定がなされた場合、自身を主として引き継いでもよい。このようなノードの冗長グループは、種々の実施形態で、SMSでの取得、記憶、検索及び/または制御機能用として設定することができる。また同様のアプローチを、少なくともいくつかの実施形態で、SPSでのワーカーノード用に採ることができる。いくつかの実施形態では、所与の機能のために少なくとも1つの主ノードと少なくとも1つの非主ノードを備えるこのようなグループを、「冗長グループ」または「複製グループ」と呼んでもよい。記憶ノードの冗長グループは、保存されたデータ記録の物理複写部数を独立して、実装されてもよく、例えば、データ記録の保存されるべき複写の数は持続性方針により決定されるが、対応するパーティション用に構成された記憶ノードの数は冗長グループの方針に基づいて決定することができることに留意されたい。
図9は、少なくともいくつかの実施形態によるSMSまたはSPSのノード用に設定することができる冗長グループの実施例を図示する。図示の実施形態では、所与のストリームパーティションSj−Pkに対する、各冗長グループ(RG)905、915、925及び935が取得ノード、記憶ノード、検索ノード、及び制御ノード用に設定される。制御ノード用の共通のRG935が図示の実施形態では実装されるが、いくつかの実施形態では、取得制御ノード、記憶制御ノード、または検索制御ノード用には分散するRGを実装してもよい。各RGは、主ノード(例えば、主取得ノード910A、主記憶ノード920A、主検索ノード930A及び主制御ノード940A)及び少なくとも1つの非主ノード(例えば、非主取得ノード910B、非主記憶ノード920B、非主検索ノード920C及び非主制御ノード920D)を備える。各フェールオーバー方針912(取得ノード用)、922(記憶ノード用)、932(検索ノード用)及び942(制御ノード用)にしたがって、現行の非主に対して、主要な役割を無効化及び承認してもよい。例えば、フェールオーバー方針は、主状態の中の変化へつながるトリガー条件、主または非主のヘルス状態を監視するかどうか及びどうやって監視するか、所与の冗長グループ内で構成される非主の数などを管理してもよい。少なくともいくつかの実施形態では、単一のRGを複数のパーティション用に設定することができる。例えば、RG905はパーティションSj−PkならびにSp−Pqの記録取得を設定することができる。いくつかの実施では、一方のパーティションに主として指定されたあるノードは、同時に他方のパーティションに非主として指定される可能性がある。一実施形態では、多重ノードは所与のRG内で同時に主ノードとして指定されてもよい。例えば、主で障害が起きた場合でも一方のノードを非主として指定して、所与のパーティションの取得関連の作業負荷を2つの主ノード間で分散することができる。所与のRGでインスタンス化されたノードの数は対応する機能に対して望まれる可用性レベルまたは強度レベルによって決まる可能性がある(例えば、いくつの同時または重複障害に対してグループが耐えられるようになっているか)。いくつかの実施形態では、SMSノードに追加してまたはSMSノードに使用される代わりに、冗長グループはSPS処理段階のワーカーノード用に設定されてもよい。所与のRGのメンバは、例えば、図10に示すように、いくつかのデータセンタを横切って、地理的に分散される場合があってもよい。選択された制御ノードはいくつかの実施形態では、例えば、ハートビート機構または他のヘルス監視技術を用いて、適切な非主ノードを故障した主との交換として選択し、選択した交換ノードを通知/起動することによりフェールオーバーを指揮するなど、フェールオーバートリガー条件を検出するように構成されてもよい。
いくつかの実施形態では、プロバイダ網は複数の地理的地域に組織化されて、各地域はここでは「可用性ゾーン」と呼んでもよい、1つまたは複数の可用性コンテナを含んでもよい。可用性コンテナは、1つまたは複数のまったく別の場所またはまったく別のデータセンタを備え、所与の可用性コンテナ内の資源は他の可用性コンテナの障害から隔離されるように(例えば、電源関連の装置、冷却装置、物理セキュリティ構成部品などの独立したインフラストラクチャ構成部品を備えて)設計される。1つの可用性コンテナでの障害が他の可用性コンテナでの障害の原因になってはならない。したがって、資源インスタンスまたは制御サーバの入手可能プロファイルは異なる可用性コンテナにある資源インスタンスまたは制御サーバの入手可能プロファイルと無関係になるようにしている。種々のタイプのアプリケーションは単一の場所では各可用性コンテナで複数のアプリケーションインスタンスを起動すること、または(SMS及びSPSの場合では)複数の可用性コンテナにわたって所与の冗長グループのノードを分散することにより、障害から保護されるようになる。同時に、いくつかの実施形態では、安価で低遅延のネットワーク接続を、同じ地理的地域内にある資源間(ホストまたはSMS及びSPSノードに用いられるコンピュートインスタンスなど)で得ることができ、同じ可用性コンテナの資源間のネットワーク送信速度はさらに速い可能性がある。一部クライアントは、例えば、地域レベル、可用性コンテナレベル、またはデータセンタレベルのいずれかで、自身のアプリケーションの種々の構成要素が正確にどこで実行されているか望む範囲で制御を維持するためにストリーム管理またはストリーム処理資源が確保及び/またはインスタンス化されている場所を特定したいかもしれない。他のクライアントは資源が、例えば、性能、高入手性などに対してクライアントの要求に合う限りは自身の資源が正確にどこに確保してあるかまたはインスタンス化してあるかは重要ではない。一部の実施形態では、一方の可用性コンテナに配置される制御ノード(またはデータセンタ)は、他方の可用性コンテナ(または他のデータセンタ)にある他のSMSまたはSPSノードを離れて構成することができる可能性がある、すなわち、特定の可用性コンテナまたはデータセンタがSMS/SPSノードを管理するためのローカル制御ノードを有する必要がないかもしれない。
図10は、少なくともいくつかの実施形態による、所与の冗長グループのノードを複数のデータセンタ間で分散することができるプロバイダ網環境を示す。プロバイダ網1002は、図示の実施形態では、3つの可用性コンテナ1003A、1003B及び1003Cを備える。各可用性コンテナは1つまたは複数のデータセンタの一部または全部を含む。例えば、可用性コンテナ1003Aは、データセンタ1005A及び1005Bを含み、可用性コンテナ1003Bは、データセンタ1005Cを含み、また可用性コンテナ1003Cは、データセンタ1005Dを含む。SMS及び/またはSPSのいくつかの異なる冗長グループ1012が図示されている。RG1012のいくつかを、データセンタ1005Aに配置されたRG1012Aの場合のように、完全に単一のデータセンタ内で実装することができる。他のRGは、可用性コンテナ1003Aのデータセンタ1005Aと1005Bに広がるRG1012Bなど所与の可用性コンテナ内の多重データセンタの資源を使用することができる。さらに異なる可用性コンテナを横切って広がる資源を使用して、他のRGを実装することができる。例えば、RG1012Cは、各可用性コンテナ1003A及び1003Bのデータセンタ1005B及び1005Cに配置された資源を使用し、RG1012Dは可用性コンテナ1003A、1003B、及び1003Cそれぞれにあるデータセンタ1005B、1005C及び1005Dで資源を利用する。ある実施例の展開では、RG1012が1つの主及び2つの非主ノードを備える場合、3つのノードをそれぞれ異なる可用性コンテナに配置することができるので、大規模障害イベントが2つの異なる可用性コンテナで同時に発生しても、少なくとも1つのノードが高い可能性で確実に機能したままになる。
図示の実施形態で、それぞれSMS及びSPSと関連するコンソールサービス1078及び1076は、プロバイダ網1002内のストリーム関連の設定を構成する使いやすいウェブベースのインターフェースを提供することができる。SMS及び/またはSPSが少なくともそのいくつかを使用することができる複数の追加サービスを、1つまたは複数のデータセンタにわたって、または1つまたは複数の可用性コンテナにわたって広がる資源を用いてプロバイダ網1002内で実装することができる。例えば、仮想コンピューティングサービス1072を実装すると、クライアントは、種々の異なる能力レベルのコンピュートインスタンスとしてパッケージ化した選択した量の計算能力を利用することができるようになる。そのようなコンピュートインスタンスをSMS及び/またはSPSノードを実装するために使用することができる。1つまたは複数の記憶サービス1070を実装すると、クライアントは、例えば、ブロックデバイスのボリュームインターフェースを介して、またはウェブサービスのインターフェースを介して所望のデータ持続レベルを備えたデータオブジェクトを保存またはデータオブジェクトにアクセスすることができるようになる。いくつかの実施形態では、記憶オブジェクトはサービス1072のコンピュートインスタンスに取り付け可能か、またはコンピュートインスタンスからアクセス可能であって、種々のストリーム持続性方針をSMS記憶サブシステムで実装して使用することができる。一実施形態では、高機能キーバリューデータベース管理サービス1074などの1つまたは複数のデータベースサービスまたは関係データベースサービスをプロバイダ網1002で実装して、そのようなデータベースサービスは、SMNS記憶サブシステムによりストリームデータ記録を保存するために及び/または制御サブシステム、取得サブシステム。記憶サブシステム、検索サブシステムまたは処理段階のメタデータ保存のために使用される。
ストリームセキュリティオプション
少なくともいくつかの実施形態では、SMS及び/またはSPSのユーザがデータストリーム用の複数のセキュリティ関連オプションを取得すると、クライアントは、取得、記憶、検索、処理及び/または制御など種々の機能性カテゴリに用いられる資源のセキュリティプロファイル(例えば、仮想または物理機械装置)を選択することができるようになる。そのようなオプションは、例えば、種々のノード(例えば、プロバイダ網設備を使うか、またはプロバイダ網設備と異なるセキュリティ特徴を有するクライアント保有の設備を使うか)に用いる資源の物理的場所のタイプに関する選択、ストリームデータの暗号化に関する選択及び/またはストリーム操作インフラストラクチャの種々の部分でのネットワークの分離の選択を含んでもよい。クライアントの一部は、例えば、貴重な所有者のビジネス論理またはアルゴリズムへのアクセスを得ようとする侵入者または攻撃者の可能性を懸念して、ストリーム処理ワーカーノードを実装してクライアント自身の保証内でコンピューティング装置を使用したいと思う可能性がある。1組のSMS及び/またはSPSノードを実装するために使用される資源のタイプはここではそれらノード用の「配置先タイプ」と呼ぶことができる。図11は、少なくともいくつかの実施形態による、SMSまたはSPSのノード用に選択されてもよい複数の配置先のタイプを示す。
配置先は、図示の実施形態では、一部のタイプのSMS/SPS機能カテゴリ(例えば、取得、記憶、検索、制御または処理)用にプロバイダ網1102内で、及び他のタイプのSMS/SPS機能カテゴリ用にプロバイダ網1102の外で選択することができる。プロバイダ網1102内では、コンピュートインスタンス、記憶インスタンス、またはデータベースインスタンスなどのいくつかの資源は、マルチテナントインスタンスホスト1103を使用して実装されてもよい。1つまたは複数のクライアントがインスタンス化される各SMSまたはSPSノードでのそのようなマルチテナントインスタンスホストは第1カテゴリ「A」の配置先タイプを形成することができる。他のクライアントと物理資源を共有しなければならないことを避けるため、クライアントの一部はSMS/SPSノードに単一のクライアントに限定されたインスタンスホストを使用して実装するよう要求することができる。そのようなシングルテナントインスタンスホストは配置カテゴリタイプ「B」を形成することができる。シングルテナントインスタンスホストはいくつかの理由で一部のクライアントの観点からより好まれる可能性がある。マルチテナントインスタンスホストは他のクライアントに属するコンピュートインスタンスを含むため、他のクライアントのインスタンスからのセキュリティ攻撃に合う可能性はシングルテナントインスタンスホストよりマルチテナントインスタンスホストの方が高い可能性がある。さらに、「迷惑な隣人」現象では、マルチテナントホスト上で起動中のあるクライアントのコンピュートインスタンスCI1が作業負荷の急増に合い、ホストのコンピュートサイクルまたは他の資源の大部分を消費し始めて、別のコンピュートインスタンスCI2上で起動する他のクライアントのアプリケーションの性能に影響を及ぼす可能性があり、シングルテナントインスタンスホストを使う場合、それも避けることができる。
IVN1106A及び1106Bなどの隔離型仮想ネットワーク(IVN)1106は図示の実施形態では、配置先タイプが他のカテゴリ「C」を示すことができる。IVN1106はいくつかの実施形態ではプロバイダ網のクライアントの要求で、プライベートネットワークの論理同値として生成されてもよく、プロバイダのネットワーク資源を使用して構築されるが、ネットワーク構成はクライアントによってほとんど制御される。例えば、クライアントはIVN1106内で使用するIPアドレスを決定することができ、IVNの外側ですでに使用されているかもしれないIPアドレスと重複する可能性を懸念する必要がない。図示の実施形態では、1つまたは複数のIVN内の様々なタイプのSMS及びSPSノードを実行することにより格外レベルのネットワークセキュリティをクライアントのストリームデータの管理及び/または処理に追加することが可能になる。一部のケースでは、所与のクライアントは、あるIVN1106内のSMSノード/SPSノードのある機能カテゴリ及び別のIVN内の別の機能カテゴリを配置したいと思うかもしれない。種々の実施形態で、所与のIVN1106はシングルテナントインスタンスホスト、マルチテナントインスタンスホストまたは両方のインスタンスホストのいずれかを備える。一部の実施形態では、図11には図示しないが、プロバイダ網の資源を使用する他のセットの配置先型を選択(またはセキュリティプロファイルを選択)することが少なくともクライアントの一部にはできる可能性がある。クライアントがコンピュートインスタンスをストリーム関連の動作のためにプロバイダ網の仮想化コンピューティングサービスから取得または使用することが可能な実施形態では、コンピュートインスタンスを2つのモードの一方で使用することができる。一方のモードでは、クライアントはSPSまたはSMSに、実行可能な1つまたは複数のプログラムを提供して、SPSワーカーノードとして構成されるコンピュートインスタンスで(または取得ノード、記憶ノードもしくは検索ノードで)起動させて、SMSまたはSPSにプログラムを起動させてノードを管理させることができる。この第1のモードはストリーム動作用のコンピュートインスタンスを使用する「ストリームサービス管理型」モードと呼んでもよい。他方のモードでは、クライアントは、SPSまたはSMSからあまり支援を受けずに実行プログラムを起動してコンピュートインスタンスを管理したいと思うかもしれない。この第2のモードは、ストリーム動作用のコンピュートインスタンスを使用する「クライアント管理型」モードと呼んでもよい。これら2つの動作モードはクライアントが選択可能な配置先の型またはセキュリティプロファイルに関する追加的選択を示すことができる。クライアントは、例えば、実行プログラムが、クライアントの組織の対象分野の専門家が最も活躍するデバッグ(含むシングルステップ)を要求するような場合、クライアント管理型モードを選択してもよいが、デバッグを要求しないようなより成熟したコードには、ストリームサービス管理型モードが合理的な選択かもしれない。いくつかの実施形態では、これらの2つのモードには異なる価格体系が適用される場合がある。
図11で示す実施形態では、複数の配置オプションをプロバイダ網の外側の設備でサポートすることができる。例えば、SMSライブラリ1171及び/またはSPSライブラリ1172が組み込まれたホスト1160をクライアントの設備内(例えば、クライアント所有のデータセンタまたは施設)1110Aまたは1110Bから、2つのクライアントの設備がプロバイダ網への接続の仕方が異なったまま、ストリーム管理または処理用に使用することができる。クライアントの設備1110Aはプロバイダ網1102に少なくともいくつかの共有インターネットリンク1151(すなわち、他のエンティティのネットワークトラフィックもクライアントの設備1110Aとプロバイダ網1102間のいくつかのリンク上を流れている)を介して接続される。反対に、一部のクライアントの設備(1110Bなど)をプロバイダ網に特別な非共有で専用の物理リンク1106(「ダイレクトコネクト」リンクと呼ばれることがある)を介して接続することができる。これらの2つの異なるタイプのクライアントの施設は、図11で用いられる用語でそれぞれ配置先オプション「D」及び「E」を備える。いくつかの実施形態では、SMS及び/またはSPSの部分は、サードパーティの設備(例えばデータセンタを使用するがSMS/SPSのクライアントが所有または管理していない)で実装されて、そのようなサードパーティの設備は配置先タイプ「F」と指定することができる。少なくともいくつかのクライアント及び/またはサードパーティの設備では、SMS及び/またはSPSのライブラリはプロバイダ網から取得されて、SMS/SPSノード用に使用されるホストに組み込まれなくてはいけない可能性がある。少なくとも一実施形態では、すべての異なる機能カテゴリのノードが適切なライブラリの助けを借りてプロバイダ網の外部に実装されてもよい。
いろいろな配置先のタイプは、別の実施形態では、ネットワーク隔離機能実装型、侵入検出機能対応型、物理的セキュリティ方針実装型、対応済み暗号化レベルなど種々のセキュリティ関連の態様の中で互いに異なってもよい。したがって、種々の各配置先のタイプは、それぞれのセキュリティプロファイルを有すると考えられ、1つまたは複数の方法で他の配置先のセキュリティプロファイルと頃なる可能性がある。いくつかの実施形態では、SMS及び/またはSPSのクライアントは各配置先のタイプを、例えば、図12a及び12bに記載の通り、SMSまたはSPSの1つまたは複数の制御ノードに要求を送信して、プログラムで種々のサブシステムまたはノードのセット用に選択することができる。いくつかの実施形態では、所定のタイプのストリームアプリケーションに対して、クライアントは、セキュリティの理由のためだけでなく、性能及び/または機能的な理由で配置先のタイプを制御したいと考える可能性があることに留意されたい。例えば、上述の迷惑な隣人現象は専用のクライアント施設資源またはシングルテナントインスタンスホストを用いることにより避けることができる。いくつかの実施形態では、クライアントは、SPS段階またはSMSノード用に使用したい特別目的のまたは専有のハードウェア及び/またはソフトウェアを有することができ、そのような構成要素を用いて達成可能な機能または性能レベルはプロバイダ網で簡単に複製することなどできないものであり、または単純にプロバイダ網で対応されるものでもない。クライアントは外側のデータセンタでスーパーコンピュータレベルの処理能力を備えるコンピュータサーバにアクセスすることができ、例えば、そのサーバはSPS処理を単独のプロバイダ網を使って可能な速度よりさらに高速で実行することができる。クライアントが種々のノード用に配置先を選択することができることで、そのような特別目的のデバイスまたはソフトウェアの使用が可能になる。
図12a及び12bは、少なくともいくつかの実施形態による、SPSクライアント及びSMSクライアントそれぞれが提出するセキュリティオプション要求の実施例を示す。図12aは、クライアントが、識別子1210を備える1つまたは複数の処理段階用に、段階の制御ノード(要素1212)を要求する配置先タイプ(PDT)及びワーカーノード(要素1214)を要求するPDTを表すSPSのセキュリティオプション要求1200を図示する。少なくとも一実施形態では、クライアントはまた、例えば、種々のネットワークリンクにわたって送信の前に指定のアルゴリズムまたはプロトコルを用いてデータ記録を暗号化すること、あるいは種々の制御または管理的相互作用を暗号化することを要求することにより、ストリームデータ記録またはストリームデータ記録処理結果用に暗号化設定を構成するための要求を提出することができるかもしれない。例えば、図12aでは、段階用の暗号化設定は段階処理動作の結果に適用可能な暗号化技術、及び/または段階の制御ノードと段階のワーカーノード間の通信用に使用する暗号化を示すことができる。
同様に、図12bでは、クライアントのSMSセキュリティオプション要求1250は指定の識別子1252を備える1つまたは複数のストリーム用のクライアントのセキュリティ選好を示す複数の要素を備える。取得ノード、記憶ノード、及び検索ノードに対する配置先タイプの選好はそれぞれ要素1254、1258及び1262に示される。取得制御ノード、記憶制御ノード、及び検索制御ノードに対するPDT選好は各要素1256、1260、及び1264で示される。例えば、暗号化はデータ記録が一方のノードのカテゴリから他方へ送信されるときにデータ記録について実装されるかどうか、及び/またはどのように実装されるか、といったデータ記録に対する暗号化選好は、要素1266を介して表示される。図12a及び12bで示すようなセキュリティオプション要求を用いて、クライアントは、場所(例えば、プロバイダ網内かまたはプロバイダ網の外側)、自身のストリーム管理及び処理環境の様々な部分に対する種々の他のセキュリティプロファイル構成要素を選択することができる。
いくつかの実施形態では、ノード配置先の選択をセキュリティ以外の理由で提供する場合があることに留意されたい。例えば、クライアントは一部のタイプのSMSまたはSPSのノードを性能が理由でシングルテナントホストに実装したいと思うかもしれない(例えば、以前にセキュリティの理由よりも主に示した「迷惑な隣人」問題を避けるために)。配置の選択を少なくともいくつかの実施形態では、ストリームのライフタイム中に変更することができる。例えば、クライアントは、最初にSMSノードをマルチテナントインスタンスホストでインスタンス化するようにするが、少なくともいくつかのノードのサブセットをシングルテナントインスタンスホストへ後で移動したいと考えるようになる。種々の価格体系が、少なくともいくつかの実施形態では、種々のセキュリティ関連のオプションに適用されてもよい。例えば、特定の機能カテゴリのSMSノードをIVNの外側のマルチテナントインスタンスホストよりIVNで実装する方がより費用がかかる場合がある。またはSMSノードをマルチテナントインスタンスホストよりシングルテナントインスタンスホストで実装する方がより費用がかかる場合がある。
ストリーム記録の連続記憶及び検索
ストリームアプリケーションの多くのタイプでは、データ記録をSMSで非常に速いレートで複数のデータプロデューサ120から受信していて、データコンシューマは通常保存されたデータ記録に記録が発生した順でアクセスしたいと考えるものである。特に、回転磁気ディスクがストリームデータ記録用記憶デバイスとして使用されている環境では、上述のように、連続I/Oアクセスパターン(読み出しと書き込みの両方)は、ランダムI/Oアクセスパターンより大幅に性能上の利点がある。いくつかの実施形態では、ストリーム特定のまたはパーティション特定のシーケンス番号をSMSが受信した際にデータ記録に割り当て、シーケンス番号に基づくシーケンス検索動作を支援することができる。図13aは、少なくともいくつかの実施形態による、ストリームデータプロデューサとSMSの取得システム間での相互作用を示す。ストリームデータプロデューサはデータ記録110を取得サブシステムに提出して、図示の実施形態では、取得サブシステムは、提出した記録用に選択したシーケンス番号102で応答することができる。少なくともいくつかの実施形態では、取得ノードはシーケンス番号の一部を記憶サブシステムから取得することができる。例えば、シーケンス番号102をそのような実施形態では適用可能な持続性方針にしたがって、受信したデータ記録の記憶に続いて決定してもよく、記憶サブシステムはデータ記録用に自身の数列表示を発生して、その表示を取得ノードがデータ記録に割り当てた、より大きいシーケンス番号に含ませることができる。
シーケンス番号は種々の実施形態で実装されて、安定して一貫性のある順序のデータ記録を提供し、データコンシューマによる記録のすべてにわたって再現可能な反復を可能にする。特定のパーティションのデータ記録に割り当てられたシーケンス番号は時間とともに単調に増えるが、少なくとも一部の実施形態では、連続である必要はない。種々の実施形態では、シーケンス番号は少なくとも以下の意味論のいくつかのサブセットを備えて割り当てられる。(a)シーケンス番号は、ストリームの中で固有である、すなわち、所与のストリームの2つのデータ記録には同じシーケンス番号は割り当てられない。(b)シーケンス番号はストリームのデータ記録のインデックスとして働き、所与のストリームのパーティション内でデータ記録を反復するために使用することができる。(c)いずれの所与のデータプロデューサに対しても、データプロデューサがデータ記録を提出することができた順序はデータ記録に割り当てられたシーケンス番号に反映される。(d)所与のパーティションキー値を備えるデータ記録に対するシーケンス番号の採番は、動的な再パーティション分割動作にわたり、単調に意味論を増加し続ける。例えば、再パーティション分割後にパーティションキー値K1を備えたデータ記録に割り当てられた各シーケンス番号は、動的再パーティション分割の前にパーティションキー値K1を備えたデータ記録に割り当てられたいずれのシーケンス番号より大きくなる。(動的再パーティション分割は、以下でさらに詳細に図16について説明する。)
いくつかの実施形態では、データプロデューサは、少なくともいくつかのデータ記録用に選択されたシーケンス番号102の選択に影響を与えたいと考える可能性がある。例えば、データプロデューサ120は、ストリームの割り当てられたシーケンス番号内の境界またはセパレータと境界を定めたいと考えていて、その結果、そのストリームのデータコンシューマにとって、特定のストリームのサブセットを目標にした読み出し要求を提出することはより簡単になる。いくつかの実施形態では、データプロデューサ120は、最小のシーケンス番号の表示を記録と一緒に提出することができる。そして、SMSは、上述のシーケンス番号意味論とも一致する要求した最小にしたがってシーケンス番号を選択することができる。
図13bは、少なくともいくつかの実施形態による、SMSで取得されたデータ記録用に生成されたシーケンス番号の要素の実施例を示す。シーケンス番号は4つの要素を図示の実施形態では、備える。n1ビットのSMSバージョン番号1302、n2ビットのタイムスタンプまたはエポック値1304、n3ビットサブシーケンス番号1306、及びn4ビットパーティション番号1308である。いくつかの実施形態では、128ビットのシーケンス番号は、例えば、n1、n2、n3及びn4、おそらく4、44、64及び16ビットそれぞれを使用することができる。バージョン番号1302は、単純にSMSのソフトウェアバージョンのロールアウトと交差する混乱を回避するために使用されてもよく、例えば、その結果、どのバージョンのSMSソフトウェアがシーケンス番号を発生するのに使用されたか簡単にわかる。バージョン番号1302は少なくともいくつかの実施形態では、頻繁に変更することを期待できない。タイムスタンプ値1304は、例えば、局所クロック源またはグローバルにアクセス可能なクロック源(例えば、getCurrentEpochまたはgetCurrentTime APIを実装するプロバイダ網の状態管理システム)から取得サブシステムノードにより取得することができる。少なくともいくつかの実施形態では、よく知られている時点からのずれ(例えば、協定世界時1970年1月1日00:00:00から経過した秒数、Unix(商標)ベースのオペレーティングシステムで呼び出す種々の時間に関するシステムを呼び出すことで取得可能になる)をタイムスタンプ値1304に使用してもよい。一部の実施形態では、シーケンス番号1036を記憶サブシステムが生成して、特定のパーティションのデータ記録が記憶デバイスに書き込まれる順序を示すことができる。このように、膨大なデータ記録を所与の秒間で受信し、タイムスタンプ値1304がわずか約1秒の間隔で変換する実施形態では、シーケンス番号1306は、同じ秒内に到着することがあり、同じタイムスタンプ値を割り当てられるデータ記録の記録到着(または記憶)順を示す働きをすることができる。いくつかの実施形態では、パーティション番号1308はパーティションを所与のストリーム内で独自に特定することができる。シーケンス番号のタイムスタンプが対応するデータ記録を取得したクロック時間(少なくともおよその)を示す少なくとも一部の実施形態では、シーケンス番号を所定のタイプの時間ベースの取得要求用のインデックス機構に用いることができる。例えば、クライアントは特定の日または指定した時間の範囲の期間に生成されたまたは取得されたストリーム記録を検索したいと思うかもしれない。シーケンス番号を暗に示された副次的インデックスのキーとして使用すると、適切なデータ記録のセットを検索することができる。このように少なくともいくつかの実施形態では、規則正しい記憶及び検索用タイムスタンプを含むシーケンス番号を使用すると、1組の保存されたデータ記録の一時的なインデックスとして利用できるという利点をさらに有することができる。
所与のパーティションのデータ記録は一般にシーケンス番号順に書き込まれて(ディスクに)、大規模順次書き込み動作をよく用いる。一部の実施形態では、上述の通り、反復子ベースのプログラムインターフェースが実装されて、データコンシューマがシーケンス番号順にデータ記録を読み出しできるようにする。図14は、少なくともいくつかの実施形態による、SMSでの規則正しいストリームデータ記録の記憶及び検索の実施例を示す。パーティションSj−Pk(ストリームSjのk番目のパーティション)の6個のデータ記録110A〜110Fがシーケンス番号順に保存された状態を示す。図示の通り、シーケンス番号は少なくとも一部の実施形態では、連続していない。例えば、上述した値をタイムスタンプ部分1304またはシーケンス番号1306に割り当てるやり方がこれらの要素では必ずしも連続の値にならないためである。
図14で示す実施例では、データコンシューマは、起動シーケンス番号865を指定して、反復子を生成するよう要求した。要求に応答して、SMSは反復子1を初期化して、要求された起動シーケンス番号以上の最も近いシーケンス番号を有するデータ記録に配置した。この場合、次に低いシーケンス番号(データ記録110Bに割り当てられた860)が消費者の要求の起動シーケンス番号より小さいので、シーケンス番号870を有するデータ記録110Cが反復子の起動位置として選択された。getIteratorインターフェースは、要求の論理同値にパーティション内の要求の位置にカーソルを設定させると考えることができ、getNextRecordsインターフェースは、例えば、シーケンス番号順にストリームに沿ってカーソルを移動するなどカーソルの位置から始めてデータ記録を読み出すために使用され得る。図示の実施例では、データコンシューマは、パラメータ「iterator」をIterator1に設定し「maxNumRecords」(返信のデータ記録の最大数)を3に設定して、getNextRecordsインターフェースを呼び出した。それに応じて、SMS検索サブシステムはデータ記録を110C、110D及び110Eの順でデータコンシューマへ返信する。反復子Iterator1は新しい位置に、例えば、データ記録110Fへ、移動してもよい。getNextRecordsの呼び出しが完了した後、その後getNextRecordが同じ反復子を呼び出すとデータ記録の返信は110Fで始まることになる。getIteratorの呼び出しの意味論はいくつかの実施形態で異なる可能性がある。例えば、いくつかの実施形態では、反復子を指定されたシーケンス番号以上で最も近いシーケンス番号を有するデータ記録に配置する代わりに、反復子を要求されたシーケンス番号以下の最も高いシーケンス番号を有するもっと近いデータ記録に配置してもよい。他の実施形態では、クライアントはgetIteratorの呼び出しで存在するシーケンス番号を指定しなければいけない場合がある。例えば、要求したシーケンス番号がストリーム中に存在しない場合、エラーが返信される場合がある。
パーティションマッピング
上述の通り、種々のパーティション分割方針及び再パーティション分割方針にしたがった種々の実施形態では、所与のストリームの記録の取得、記憶、検索及び処理に関する作業負荷は、細分されて、いくつかのノードに分散することができる。図15は、少なくともいくつかの実施形態による、ストリームパーティションマッピング1501及びSMS及びSPSノード用になされた構成決定に対応する実施例を図示する。例えば、クライアントのcreateStream APIの呼び出しに応答して、特定のデータストリームを生成する時または初期化した時、パーティション分割方針を、ストリームのいずれの所与のデータ記録もメンバとみなすパーティションを決定するために使用されるストリーム用に起動することができる。所与のデータ記録のための動作を実行する取得サブシステム204、記憶サブシステム206、検索サブシステム208及び任意の関連のあるSPS段階215の特定のノードは、記録パーティションに基づいて選択されてもよい。一実施形態では、所与のデータ記録のために使用される少なくとも1つのサブセットの制御ノードが同様にパーティションに基づき選択されてもよい。少なくともいくつかの実施形態では、データストリームの動的再パーティション分割は、例えば、方針に示されたトリガー条件に応答してまたは明示の要求に応答して、パーティション分割方針の一部分として支持され得る。
様々な実施形態では、所与のデータ記録のために選択されたパーティションはキーの値をデータプロデューサが直接(例えば、書き込みまたは要求のパラメータとして)または間接(例えば、識別子もしくはデータプロデューサクライアントの名前、データプロデューサのIPアドレスまたはパーティションキーとしてのデータ記録の実際のコンテンツの一部分などのメタデータをSMSが使用する)に提供する記録用のパーティション分割キーに依存する。1つまたは複数のマッピング機能1506は、図15に示す実施形態では、データ記録パーティションキーまたは属性1502に適用されて、データ記録パーティション識別子1510を決定することができる。例えば、ある実施形態では、所与のパーティション識別子1510は、128ビット整数値の空間を超える連続する範囲を表すことができ、その結果、ストリームのすべてのパーティションの範囲の結合により128ビット整数が装うことのできるすべての可能な値を覆うことができる。そのような実施例のシナリオでは、ある単純なマッピング機能1506が128ビットのハッシュ値をパーティションキー値またはデータ記録の選択の属性値から発生することができ、パーティション識別子をハッシュ値が不用意に横たわる特定の隣接する範囲に基づいて決定することができる。いくつかの実施形態では、隣接する範囲は少なくとも最初は同じ大きさであってもよく、他の実施形態では、別のパーティションは互いにサイズが異なる隣接する範囲と一致してもよい。また、再パーティション分割はある実施形態では、範囲の境界の調整という結果になる場合がある。他のパーティション分割機能106は別の実施に使用される場合がある。
データストリームが動的再パーティション分割を受ける場合(以下で詳細を説明するように)、特定のキーを備えた記録がマップされているパーティションが変化する。したがって、少なくともいくつかの実施形態では、SMS及び/またはSPS制御ノードが、ストリームのライフタイムの期間、ストリームに適用するいくつかの異なるマッピングの記録を取らなければならない可能性がある。いくつかの実施形態では、タイムスタンプの有効範囲1511またはシーケンス番号有効範囲などのメタデータは制御ノードにより各パーティションマッピングに保存することができる。例えば、タイムスタンプの有効範囲1511は特定のマッピングM1がストリームの生成時からタイムT1まで適用され、別のマッピングM2がT1からT2まで適用されることなどを示すようになる。ストリームに向けられた読み出し要求に応答する時、検索ノードはどのマッピングを使うべきかを最初に決定しなければならず(例えば、読み出し要求に示すシーケンス番号により)、その後そのマッピングを適切な記憶ノードを指定するために使用することができる。
SMS及びSPS制御ノードは少なくともいくつかの実施形態では、いくつかの異なる粒度で資源へのパーティションをマッピングする役割を持つことができる。例えば、図15の実施例1599で示すように、ある実施形態では、各取得、記憶、検索、または処理(ワーカー)ノードを各プロセスまたは各実行されたスレッドとして、Java(登録商標)Virtual Machine(JVM)またはコンピュートインスタンスなどのサーバ仮想マシン内で実装することができる。そして、各JVMまたはコンピュートインスタンスは特定の物理ホストでインスタンス化される。いくつかの実施形態では、複数のJVMはシングルコンピュートインタンス内で起動されて、資源マッピングを決定する他の層を加えることができる。したがって、所与のパーティションでは、1つまたは複数の制御ノードがどの特定の資源を取得ノード1515、記憶ノード1520、検索ノード1525、または処理段階ワーカーノード1530として使用するかを選択することができる(例えば、それぞれ段階PS1またはPS2用にノード1530Aまたは1530B)。制御ノードはまた、サーバ(取得サーバ1535、記憶サーバ1540、検索サーバ1545または処理サーバ1550など)、及びサーバとホスト間のマッピング(取得ホスト1555、記憶ホスト1560、検索ホスト1565またはSPSホスト1570A/1570B)へのこれらノードのマッピングを決定することができる。いくつかの実施形態では、パーティションマッピングは、例示された種々の資源の各粒度で(例えば、ノード、サーバ及びホスト粒度)識別情報を含む(例えば資源識別子)とみなされて、データ記録の属性の表示は機能または複数の機能1506への入力の際に使用することができ、複数の機能1506自身も同様である。制御サーバはメタデータ保存でパーティションマッピングの表示を保存し、いくつかの実施形態では、種々のAPI(getPartitionInfo APIなど)または他のプログラムインターフェースを明らかにして、マッピング情報をデータプロデューサ、データコンシューマ、またはSMSサブシステムまたはSPSのノードへ提供することができる。
パーティションへの及びパーティションから資源へのデータ記録のマッピングはいくつかの実施形態では、(a)所与のノード、サーバまたはホストが一部の実施形態では、複数のパーティションを管理するよう指定される、あるいは(b)障害または他のトリガーは新しいノード、サーバ、もしくはホストが所与の1つのパーティションまたはパーティションのセットに割り当てられることになるなど、様々な要素のためにとても複雑になっていることがある。加えて、上述しまた以下で説明する通り、所与のストリームへのパーティションマッピングは時間とともに動的に修正されるが、ストリーム記録は引き続きSMS及び/またはSPSノードにより扱われてもよい。その結果、いくつかのバージョンのメタデータのマッピングはいくつかの実施形態では、それぞれが異なる時間の期間に対応して、少なくとも一時的に所与のストリームに留めることができる。
ダイナミックストリーム再パーティション分割
図16は少なくともいくつかの実施形態による、動的ストリーム再パーティション分割の実施例を図示する。図16に示す時間帯の時間T1で、ストリームS1は生成または初期化される。パーティションマッピングPM1はストリームS1のために生成されて、期間T1からT2の間、有効状態を継続する。T1からT2間でSMSが受領する3つのデータ記録を実施例として示す。データ記録110A(DR110A)はクライアント提供のパーティションキー値「アリス」とともに提出され、DR110Bはクライアント提供のパーティションキー値「ビル」とともに提出され、またDR110Cはクライアント提供のパーティションキー値「チャーリー」とともに提出される。初期マッピングPM1では、3つのデータ記録110A、110B及び110Cのすべてが同じパーティションにパーティション識別子「P1」を備えてマップされる。P1データ記録のために、単一ノードI1が取得を扱うため構成されて、単一ノードS1が記憶を扱うために構成されて、単一ノードR1が検索を扱うために構成されて、単一ワーカーノードW1がSPS処理を扱うために構成される。マッピングPM1の有効範囲の起動タイムスタンプはT1に設定される。
時間T2では、ストリームS1は図16の実施例の時間帯で動的に再パーティション分割される。データ記録は継続して到着して、図示の実施形態では、いつ再パーティション分割が起こったかにかかわりなく、SMS及びSPSにより取り扱われている。SMSもSPSもオフラインにしなくてもよい。再パーティション分割は任意の複数の要素、例えば、取得、記憶、検索または処理ノードで過負荷条件の検出に応答する、種々のサブシステムの異なるホストでの作業負荷レベル間のゆがみまたは不均衡の検出に応答する、またはデータコンシューマまたはデータプロデューサクライアントからの要求に応答する、の結果として始まる。図示の実施形態では、PM2に示す有効範囲スタートタイムスタンプ設定が示すように、新しいマッピングPM2が時間T2で(T2のわずか後)有効になる。少なくともいくつかの実施形態では、種々のデータ記録属性のセットが、再パーティション分割前に使用された以上にパーティション分割データ記録のために使用される場合がある。一部のケースでは、追加のパーティション分割属性はデータプロデューサが提出するが(例えば、SMSの要求で)、他のケースでは追加の属性をSMS取得ノードが生成することができる。そのような追加の属性は「塩で味をつけた」属性と呼び、再パーティション用に追加の属性を使用する技術は「加塩」と呼ぶことができる。ある実施例の実施形態では、過重負荷の取得サーバはデータプロデューサに(例えば、データプロデューサが実行したSMSクライアントライブラリコードに)再パーティション分割用として、ランダムに選択した小さい整数値を以前使用したパーティションキーに追加して提供することを示す場合がある。元のパーティションキーと塩で味をつけた追加の整数の組み合わせは、その後、別の取得ノードのセット間で取得作業負荷を分散するために使用することができる。いくつかの実施形態では、検索ノード及び/またはデータコンシューマは、再パーティション分割に使用されている追加の属性に関して通知されなければならない場合がある。このような追加の属性は少なくともいくつかの実施形態では再パーティション分割に使用することができない。
図16に示す実施形態では、新しいパーティションマッピングはT2以前に同じキー用に選択したパーティションに関係する、T2後に受信した少なくともデータ記録の一部のために選択された、異なるパーティションをもたらす。DR110PはT2後にパーティションキー値「アリス」を備えて提出され、DR110QはT2後にパーティションキー値「ビル」を備えて提出され、DR110RはT2後にパーティションキー値「チャーリー」を備えて提出される。PM2マッピングを使用すると、図示の実施例のシナリオでは、DR110Pはパーティションのメンバ「P4」を示され、DR110Qはパーティションのメンバ「P5」を示され、DR110Rはパーティションのメンバ「P6」を示される。図示の実施形態では、T2後に受信されたと示される実施例のデータ記録のいずれも以前使用したパーティションメンバ「P1」を示さない。代わりにまったく新しいパーティションが再パーティション分割後に使用されることになる。いくつかの実施形態では、少なくとも以前使用したパーティションの一部が再パーティション後に引き続き使用される場合がある。それぞれの新しいパーティションP4、P5、及びP6に対しては、取得、記憶、検索、及び/または処理用に異なるノードを示してもよい。例えば、ノードI4、S4、R4及びW4はパーティションP4用に構成され、ノードI5、S5、R5及びP5はパーティションP5用に構成され、ノードI6、S6、R6及びP6はパーティションP6用に構成されてもよい。いくつかの実施形態では、同じ記憶ノードは、再パーティション前に記録に使用されていたように、再パーティション後に特定のパーティションキーまたは属性を備える記録用に使用されてよいが、そのノード内の異なる記憶場所(例えば、別のディスク、別のディスクパーティションまたは別のSSD)が再パーティション後には使用されることになる。
T2での動的再パーティション後の少なくともある期間、再パーティション分割前にSMS取得及び/または記憶サブシステムが処理したデータ記録のために検索要求は継続して検索できる。少なくともいくつかのケースでは、要求されたデータ記録は、データ記録が取得されたときに有効であったPM1マッピングに基づいて検索されなければならない。したがって、図16で示す通り、データ検索のために、PM1及びPM2両方ともT2後のある期間継続して使用することができる。少なくともいくつかの実施形態では、データ記録は古くなると結局ストリームから削除されることがあり、古いパーティションマッピングもまた、例えばすべての対応するデータ記録が削除されたとき、結局廃棄されることになる。いくつかの実施形態では、削除される代わりに(またはその前に)、ストリーム記録は別の1組の記憶場所またはデバイスにアーカイブされるので(クライアント選択のアーカイブ方針に基づき)、その結果、SMSが使用したパーティションマッピングはアーカイブ後も記録を検索することに使用することができる可能性がある。このような実施形態では、PM1及びPM2などのパーティションマッピングは、アーカイブ記憶の方へ向かう検索要求を支援する必要がある限り維持されるものでもよい。アーカイブ実施の一部では、維持されるストリームパーティションマッピングを必要としない異なる検索アプローチを使うことができる(例えば、新しいインデックスがアーカイブされたデータ記録用に生成されてもよい)。いくつかの実施形態では、P2などのパーティションは再パーティション分割の前に使用されていても、再パーティション分割後はそれに対して書き込みはもはや向かわず、再パーティション分割後のある時点で「読み出し」を辞める可能性がある。例えば、「パーティション終端に到着」と同値のエラーメッセージが検索要求に応答して発生する可能性がある。
いくつかの実施形態では、所与のデータストリームは多数のパーティションに分割することができる(例えば、数百または数千)。ストリームS1が最初に1000のパーティション、P1,P2,…,P1000に分割される場合の実施例を考えてみよう。例えば、P7というあるパーティションに該当する過重負荷条件が検出された場合、P7に対するデータ記録の初期マッピングを変更することが有益かもしれないが他のパーティションのマッピングは変更する必要がない場合がある。あるアプローチでは、2つの新しいパーティションP1001及びP1002が再パーティション分割動作を介して生成される。再パーティション分割後に受信した記録は、その属性が元は(すなわち、元のマッピングに基づいて)P7内の構成員であることに結びついていたが、再パーティション分割後はP1001とP1002のどちらかにマップすることになり、したがいP7の作業負荷を2つのパーティション間に分散することができるようになる。残りのパーティション、例えば、P1〜P6及びP8〜P1000は、修正する必要がないかもしれない。このような再パーティション分割によりほんのわずかなパーティションのサブセットが影響を受けるので、少なくともいくつかの実施形態では、パーティションエントリ(またはパーティションエントリのツリー)の有向非巡回グラフなどの複合型データ構造が生成され保存される。各エントリはパーティション分割機能出力範囲及び有効期間(エントリのパーティション分割情報が有効であると考えられる期間)を示すことができる。上記実施例では、P7を含む再パーティション分割を時間T2で実行するが、ストリームS1(及びその初期マッピング)は時間T1で生成されると仮定する。このようなシナリオでは、P7に関するエントリの有効期間はT1〜T2であろう。P1001及びP1002の有効期間は「T2以後」であり、残りのパーティションに対する有効期間は「T1以後」であろう。そのような複合データ構造を用いると、少なくともいくつかの実施形態では、パーティションマッピングメタデータに使用する記憶または保存容量が実質減少することになる恐れがある。上記実施例では、パーティションP7を2つの新しいパーティションに分割することが説明されている。少なくともいくつかの実施形態では、パーティションは再パーティション分割中に結合することも可能である。例えば、2つの隣接するパーティションのうち比較的検索要求の受信が少ない方、または比較的提出される記録が少ない方へ結合して1つのパーティションになることができる。いずれの所与の時点に対しても、データ記録が属するパーティションを、パーティション機能及び有効期間の情報を用いて明確に決定することができる。時間とともに複合データ構造はより分割及び/または結合を実行して展開するが、パーティション分割メタデータに要求される総空間(分割の頻度、及び分割が影響を及ぼすパーティション数量の平均による)は劇的に増加できない。反対に、別の実施形態では、再パーティション分割が起きる毎に、ストリーム用の変更しないメタデータの完全なセットの複製が作られて再パーティション分割により影響を受けるパーティションのエントリと結合することがある。パーティションマッピングメタデータに対する保存及び記憶の要求は、特に古いマッピングが、上述のように再パーティション分割後少なくともしばらくの期間、維持されなければならない場合、後者の実施形態でははるかに速いスピードで増える可能性がある。
タイムスタンプ値(図13bに示すタイムスタンプ値1304など)を含むシーケンス番号が使用される少なくともいくつかの実施形態では、特別なタイプのシーケンス番号の変移が動的再パーティション分割のために実装される場合がある。図13bに示すものと同様のタイムスタンプ型のシーケンス番号スキームが、新しいタイムスタンプ値がシーケンス番号に含まれるために毎秒発行されるストリームS1に使用されている実施例の方法で仮定してみよう。動的再パーティション分割に対応する少なくともいくつかの実施形態では、動的再パーティション分割後に割り当てられたシーケンス番号すべてが、動的再パーティション分割前に使用された以外の異なる1組のタイムスタンプ値(再パーティションイベントに対応する選択の初期タイムスタンプ値で始まる)を使う可能性がある。例えば、動的再パーティション分割が実行された時(すなわち有効になる)に使用されていたタイムスタンプ値がTkの場合、実行後に発行されたいずれかの新しいシーケンス番号もタイムスタンプ値Tk+1を以後使用するよう要求される可能性がある。図13bで使用されるスキームでは、シーケンス番号値は上位ビットの少なくとも一部でタイムスタンプ値をエンコードするので、説明したようにタイムスタンプの境界と一致する再パーティションイベントは、検索要求に応答して使用されるマッピングを特定することに含まれる記憶処理を確実に簡単にできる。したがって、このような実施形態では、特定のシーケンス番号を指定する検索要求を受信した場合、タイムスタンプ値はそのシーケンス番号から抽出されて、再パーティション分割後のマッピングを使うか、または再パーティション分割前のマッピングを使うべきかを簡単に決定することができる。抽出されたタイムスタンプ値が再パーティション用に選択された初期タイムスタンプより小さい場合、再パーティション分割前のマッピングが使用されて、抽出されたタイムスタンプ値が再パーティション用に選択された初期タイムスタンプ値以上の場合、再パーティション分割後のマッピングが使用されることになる。
ストリームマネジメント及びプロセッシング方法
図17は、少なくともいくつかの実施形態によるストリーム記録取得及びストリーム記録検索のためのプログラムインターフェース各セットを支援するために実行される動作の態様を示す流れ図である。要素1701に示すように、データストリームを生成するまたは初期化する要求を、例えば、SMSクライアントまたはデータプロデューサクライアントから受領する。ストリームに使用される初期パーティションマッピングを決定し(要素1704)、例えば、特定のデータ記録が属するパーティションを特定するために使用される機能及びその機能のために使用される入力パラメータをパーティション分割方針に基づいて特定することができる。上述のように、種々の実施形態では、SMSの制御構成要素はストリーム生成要求を受信し応答する役割を持ってもよい。ストリームの生成及び初期化(同様に他の制御プレーン動作も)が実行されるやり方は、実施形態によって異なってもよい。例えば、一実施形態では、制御サーバの冗長グループが設定されて、その冗長グループの第1の制御サーバがストリーム生成の要求に、適切なメタデータを持続性記憶場所に新しいストリーム用(例えば、初期パーティションマッピング、取得ノード、記憶ノード、及び検索ノードの初期セットなど)に発生させて保存することにより応答することができる。ストリームに関する後続のクエリ(例えば、所与のパーティションを担当するバックエンドノードに関するフロントエンドの取得ノードからの要求)への応答は、第1の制御サーバが保存するメタデータを使用して発生させることができる。SMS制御プレーン機能性の他の実施形態では、ストリーム構成メタデータは少なくとも取得、記憶、または検索サブシステムのノードの少なくとも一部により直接アクセス可能なデータベースに保存されていてもよい。ストリームが生成され、初期化された後、記録提出、記憶及び検索などのデータプレーン動作が始まり、通常、制御構成要素を備えた追加の相互作用なしに、対応するサブシステムの各構成要素により取り扱うことができる。
いくつかの実施形態では、データプロデューサは書き込み要求を伴う明示的パーティションキーを提出することを要求される場合があるが、他の実施形態では、パーティション分割機能に使用される入力は、データプロデューサのアイデンティティ、データ記録を受信したIPアドレス、またはデータ記録自体のコンテンツなど、書き込み要求に関連したメタデータに基づいて決定されてもよい。少なくともある実施形態では、クライアントはデータ記録提出の中のパーティション識別子を任意の方法で供給するが、そのような実施形態では、追加のパーティション分割機能を要求されることはない。
ストリームのために取得機能、記憶機能及び検索機能用のノードの初期セットを決定または構成する場合、いくつかの異なる要因を考慮に入れることができる(要素1707)。例えば、パーティションマッピング自体(ストリームを分割するパーティションの数及びパーティションの相対的期待サイズを決定することができる)、入手可能な期待取得レート及び/または検索レートについての情報、ストリームデータ記録に対する耐久性/持続性要求、及び/または種々のサブシステムに対する高い可用性要求(図9及び10に図示したものと同様の冗長グループの設定に至る)は異なるサブシステムのノードの数及び配置に影響を与える可能性がある。さらに、クライアントがノードの様々なカテゴリに対する配置先のタイプの選好を示す実施形態では(図11、12a及び12bに示すように)、そのような選好はまたSMS及び/またはSPSノードに使用される資源を決定する1つの役割を担うことができる。少なくともいくつかの実施形態では、取得機能、記憶機能及び/または検索機能を実行可能なノードの各プールが事前に設定されて、制御構成要素がそのようなプールの選択したメンバを生成された各新しいストリームに割り当てることができる。他の実施形態では、ストリームが生成または初期化された時に、少なくとも一部のケースで新しい取得ノード、記憶ノードまたは検索ノードがインスタンス化されなければならない場合がある。
図示の実施形態の取得ノードで、例えばインライン提出インターフェース(データが提出要求に含まれる)及び参照提出インターフェース(アドレスが提出要求内に提供されるので、例えば、ウェブサービス要求または他のインターフェースを用いて、そこからデータをSMS取得ノードまたはSMS記憶ノードが検索することができる)を含むデータ記録提出用に実装された任意の1組のプログラムインターフェースを介して記録を受信することができる(要素1710)。別の実施形態では、例えば、各アプリケーションプログラミングインターフェース(API)がインライン対参照提出に対応して、ウェブページまたはウェブサイトを設立し、グラフィカルユーザインターフェースを実装、またはコマンドラインツールを開発するなど、任意の複数の別のタイプのプログラムインターフェースを、記録を提出するための各方法用に提供することができる。少なくともいくつかの実施形態では、SMSはシーケンス番号を各取得記録に割り当てることができて、例えば、記録が取得されて保存された順序を示し、シーケンス番号がデータコンシューマの検索要求に使用可能になる。検索システムノードで、記録検索要求は任意の1組の実装されたプログラム検索インターフェースを介して受領することができ、要求したデータ記録のコンテンツは応答して提供される(要素1713)。非順次アクセスのために、例えば、インターフェースはGetIterator(getIterator呼び出しに示すシーケンス番号に基づいて反復子をパーティション内で選択された位置でインスタンス化するように要求する)またはgetRecordWithSequenceNumber(指定のシーケンス番号を備えたデータ記録を取得すること)を含んでもよい。順次アクセスのために、getNextRecordsなどのインターフェース(反復子の現在の位置または指定のシーケンス番号から始まる複数の記録を順番に要求する)が、実装されてもよい。少なくともいくつかの実施形態では、異なる検索インターフェースはそれらに関する異なる課金レートを有してよい。例えば、順次検索用の記録毎の課金レートは非順次検索用の記録毎の課金レートより低く設定されてもよい。また、いくつかの実施形態では、別の提出インターフェースは異なる課金レートを有することができる。例えば、参照提出はインライン提出より記録毎の費用が高くてもよい。
時間が経つに連れ、制御ノードまたは専門の課金サーバが、ストリーム管理サービス(要素1716)の様々なサブシステムで実装された別のプログラムインターフェース用の使用測定基準を収集することができる。測定基準は、例えば、異なるプログラムインターフェースの呼び出し回数、取得された記録または検索された記録の総数(1回の呼び出しで複数の記録を検索することに使用できるgetNextRecordsなど少なくともいくつかのインターフェースに対する呼び出し回数と異なる)、取得されたデータまたは検索されたデータの総量などを含むことができる。ストリームを所有するクライアント、またはデータを生成するクライアント及び/またはストリームからのデータを消費するクライアントに課金される請求額は、少なくとも一部、使用測定基準及びプログラムインターフェースに関連する各課金レート(要素1719)に基づいて任意の方法で発行されてもよい。少なくともいくつかの実施形態では、課金作業はストリームの取得動作/検索動作に対して非同期でもよい。例えば、請求書は月中に収集された測定基準に基づき毎月の請求期間の終わりに発行されてよい。
図18aは、少なくともいくつかの実施形態によりストリーム処理段階(SPS)を構成するよう実行される動作の態様を示す流れ図である。要素1801に示すように、プログラムインターフェースは、クライアントがストリームデータ記録の処理段階の数を構成することができるよう実装されてもよい。例えば、特定の段階を構成するために、クライアントは段階でパーティション分割されたストリームデータ記録上で実行されるべき処理動作、処理動作の出力のための分散方針、ならびに処理すべきデータを取得すべき入力ストリームのアイデンティティなどの他のパラメータを示すことができる。いくつかの実施形態では、SPS段階での処理動作は冪等であることを要求できる。他の実施形態では、冪等でない動作も少なくとも一部の段階でサポートされてもよい。所与の段階で実行されるべき処理が冪等でない場合でも、クライアントはいくつかの実施形態で、定期的に動作の出力をある持続性の外部の場所に向けて洗い流すようにワーカーノードを構成し、その洗い流し操作が記録検索シーケンスに対して実行される場合に記録し、また後にリカバリ中の洗い流し操作を再現するよう交換ワーカーノードを構成することにより、リカバリ関連の冪等性の利点を得ることができる。少なくとも一部の実施形態では、並行してストリームデータで動作しているいくつかの異なる状態及び一部の段階の結果を他の段階のための入力ストリームとして使用して、クライアントが有向非巡回グラフ(DAG)または他の処理段階のグラフを構成することができてもよい。一部の実施形態では、例えば、ある段階からのデータ記録出力は異なる段階へ入力として与えられるまでは持続性記憶デバイスに保存される必要がなく、持続性ストリームよりは1つまたは複数の一時的ストリームが、異なる段階間で生成されてもよいことがある。
任意の複数の異なるリカバリ方針はいくつかの実施形態では、例えば、チェックポイント型リカバリ方針またはベストエフォートリカバリ方針を含んでSPS段階で実装されてもよい。一実施形態では、クライアントは異なるSPS段階用にリカバリ方針を選択するためにプログラムインターフェースを使用してもよい。チェックポイント型リカバリが使用される段階では、ワーカーノードが、ストリームのパーティション内でどこまで到達したかを示す(例えば、最近処理された記録のシーケンス番号が進行の表示として保存される)間隔毎に、進行記録またはチェックポイントを保存するよう構成されてもよい。進行記録は、図19を参照して以下で説明するように、故障後、後のリカバリ動作中に使用される。ベストエフォートリカバリ方針では、進行記録は保存される必要がなく、障害に応答して構成された交換ワーカーノードが単純に新しいデータ記録を受信した際に処理することでよい。所与のSPS段階グラフまたは作業フローでは、いくつかの実施形態で異なるリカバリ方針が異なる段階に適用されることがある。
SPS制御サーバは、例えば、要素1801に示す1つのプログラムインターフェース経由で、出力分散記述子DDesc1にしたがって分散されるべき処理の結果を備え(要素1804)、パーティション分割方針PPol1にしたがってストリームS1の特定の段階PS1で実行される冪等動作Op1の表示を受信することができる。状態PS1用に構成されるワーカーノードの数及びノードに必要な仮想または物理資源は、Ppol1、冪等動作Op1の複雑さ及びワーカーノード用に使用される資源の性能(要素1807)などの様々な要因に基づいて、決定される。
ワーカーノードは例えば、選択の仮想または物理機械装置資源でのプロセスまたはスレッドとして、インスタンス化されてもよく、また構成されてもよい(要素1810)。例えば、ある単純な実施形態では、あるワーカーノードが初期にS1の各パーティションに割り当てられてもよい。所与のワーカーノードは、(a)データ記録をS1の検索ノードの適切なサブセットから受信する、(b)受信したデータ記録上でOp1を実行する、(c)任意の方法で、例えばPS1に対するリカバリ方針に基づいて、どのセットのパーティション記録が処理されたかを示す進行記録/チェックポイントを保存する、(d)出力をDDesc1が示す先へ送信する(例えば、持続性ストリームまたは一時的ストリームの間へ、または直接、他の処理段階または記憶システムへ入力するように)よう構成されてもよい。少なくとも一部の実施形態では、SPS処理が、継続的に他の場所へ送信されなければならない出力を発生する必要はないかもしれないことに留意されたい。例えば、いくつかのSPSアプリケーションは単純に一時的なデータ記録の保存場所として働き、及び/またはユーザがデータ記録を見るようにできるクエリインターフェースを実装することができる。そのようなアプリケーションはそれ自体の出力を管理することができ、例えば、出力は分散記述子にしたがってではなく受信したクエリに応答して発生される。ログ関連のSPSアプリケーションは、大規模分散システムから取得した最後の日のログ記録を維持することができ、例えば、クライアントがデバッグまたは解析目的でログデータを見ることができるようにする。したがって、一部の実施形態では、出力分散記述子は少なくともSPSの一部の段階、少なくとも一部のストリーム、または少なくとも一部のパーティションでは特定される必要がない。そして、ワーカーノードはデータ記録の検索及び処理を各構成の設定毎に開始することができる(要素1813)。SPS制御ノードはワーカーノードのヘルス状態(例えばハートビートプロトコルなど応答性チェックを使って)ならびに少なくとも一部の実施形態でワーカーノードに使用されている資源で資源利用率レベルなどの様々な他の測定基準(要素1816)を監視することができる。ワーカーノードから収集される情報は、例えば、ワーカーノードを交換して、以下で説明するリカバリ方針を実装する場合、フェールオーバーが必要かどうかを決定することに使用することができる。
いくつかの実施形態では、インストール可能なSPSクライアントライブラリを、クライアント所有の施設で及び/またはクライアント選定のプロバイダ網の資源でSPSワーカーノードを実装したいクライアントに提供してもよい。また、クライアントライブラリはSPSクライアントが、ヘルス監視機能、自動作業負荷監視及び調整、セキュリティ管理、動的再パーティション分割などのSPS管理型サービスの様々な制御プレーン機能を使用したい範囲を選択できるようにすることができる。図18bは少なくともいくつかの実施形態による、ストリーム処理ワーカーノードの構成用にクライアントライブラリの構成要素の呼び出しに応答して実行される動作の態様を示す流れ図である。要素1851に示すように、SPSクライアントライブラリを提供することができる(例えば、図18aに示す種類の操作を実行するよう構成可能なマルチテナントSPS管理型サービスのウェブサイトからのダウンロードを介して)。ライブラリは複数の実行可能な構成要素及び/またはクライアントのアプリケーションとつながることができる構成要素を含んでもよい。一部のライブラリ構成要素は,クライアントが、1つまたは複数のSPS段階のストリーム処理動作が実行される種々のワーカーノードを選択し、SPS管理型サービスに登録し、または所望のプロパティを指定することができるようにする。例えば、一方のクライアントはワーカーノード用にプロバイダ網の仮想コンピューティングサービスを実装する自身が所有するコンピュートインスタンスのセットを使用したいと思う可能性があるが、他方のクライアントはストリーム記録を処理するためにクライアントが所有するデータセンタ(プロバイダ網に対応していない特別目的装置など)に配置されているコンピューティング装置を使用したいと思う可能性がある。クライアントはワーカーノードを自身が所有する施設で必要に応じてオンラインにつなぐ、または希望通りに、仮想コンピューティングサービスのコンピュートインスタンスを使用することができる。そのようなワーカーノードのオンデマンドインスタンス化に追加してまたは代わりに、いくつかの実施形態では、クライアントは必要な時に展開可能な将来再利用可能なワーカーノードのプールを事前設定することができる。いくつかの実施形態では、ライブラリ構成要素は実行されてまたは呼び出されて、クライアントが、SPS管理型サービスに、指定の段階のワーカーノードとしてクライアントにインスタンス化された特定のプロセスまたはスレッドを登録できるようにして、後続の制御プレーン動作をSPS管理型サービスにより取り扱うことができるようにする。一実施形態では、クライアントは、種々のレベルの制御プレーンの中からワーカーノード用SPS管理型サービスにより扱われる役割を選択することができる。例えば、一方のクライアントは自身が所有する特別注文のモジュールをワーカーノードのヘルスを監視するために使用したいと考える可能性があるが、他方のクライアントはSPS管理型サービスを利用してワーカーノードのヘルスを監視して障害を検出した場合、適切な作業を取れるようにしたいと考える可能性がある。
SPS管理型サービスは特定のクライアントが、ワーカーノード及び/または特定のSPS段階PS1の制御プレーン動作を構成するクライアントライブラリを使いたいと思う兆候を受け取ることができる(要素1854)。(PS1自体はライブラリに含まれるプログラムインターフェースを使用する、または図4に示すウェブベースインターフェースと同様のSPS管理型サービスにより公開されたプログラムインターフェースを使用する目的で作成されたものでもよい。)クライアントは、またストリームのデータがPS1による入力として使用するため検索されるべきであると示す。少なくともいくつかの実施形態では、任意の方法で、クライアントはPS1用の制御プレーンの設定、例えば、クライアントがノード用サービスのヘルス監視機能を使いたいかどうか、または特別注文のヘルス監視ツールを使いたいと思っているかどうか(要素1857)を示す。クライアントが示した選好により、クライアントの使用に合わせて構成されるSMS及び/またはSPSの1つまたは複数のノードを決定することができる(要素1860)。ネットワーク接続性がクライアントのワーカーノードとSMS/SPSノード間で設定され、及び/または他の構成操作が所望通りにデータ記録の流れ及び処理結果ができるよう実行される。データ記録は検索要求を受信後SP1ワーカーノードに提供されて、所望の制御プレーン動作(何かクライアントが要求した場合)は、必要に応じて実行される。少なくともいくつかの実施形態では、クライアントがSMS管理型サービスの種々のサブシステムの制御プレーンの機能を使いたいと思う範囲を制御できるようにする同様のアプローチがまた、または代わりに実装されることに留意されたい。
図19は、少なくともいくつかの実施形態によるストリーム処理のための1つまたは複数のリカバリ方針を実装するよう実行される動作の態様を示す流れ図である。要素1901に示すように、SPS制御ノードは、例えば、ワーカーノードが無反応または不健康になる、現在のノードの作業負荷レベルがフェールオーバーの閾値に到達する、ワーカーノードで検出されるエラーの数が閾値を超える、またはある別の予期しないワーカーノードの状態が確認されたなどにより、特定のワーカーノードを交換するトリガー基準を満たしたと判定してもよい。交換ワーカーノードは特定されるまたはインスタンス化されてもよい(要素1904)。いくつかの実施形態では、可用性ワーカースレッドのプールが設定されると、例えば、そこから1つが交換用として選定されるか、または新しいスレッドもしくはプロセスが起動されてもよい。
ベストエフォートリカバリ方針が、特定のワーカーノードが稼働中(要素1907で決定したように)のSPS段階で使用される場合、交換ワーカーノードは単純に追加のデータ記録が入手可能になり次第それを処理し始め(要素1916)、例えば、交換済みワーカーノードの進行状況の記録を調査する必要はない。チェックポイント型リカバリ方針を使用する場合、交換ワーカーノードが交換済みワーカーノードにより保存された進行記録にアクセスする場所の表示(例えば、記憶装置のアドレスまたはURL)が提供される(要素1910)交換ワーカーノードは、交換済みノードが保存した最近の進行記録を検索して、進行記録を使って交換ワーカーノードが段階の冪等性動作を実行すべき1組のデータ記録を決定することができる(要素1913)。そのようなチェックポイント型リカバリ方針では、最後の進行記録と交換ワーカーノードがインスタンス化される時間との間の期間と同様に交換済みワーカーノードが保存された進行記録に続く追加の記録を処理したレートによっても一部のデータ記録が2回以上処理される可能性がある。実行された動作が冪等である場合、そのような反復動作は少なくともいくつかの実施形態では負の効果を与えることはない。交換ワーカーノードが早期に保存された進行記録に基づいた反復リカバリ動作を実行した後で、少なくともいくつかの実施形態では交換ワーカーノードのスレッドはリカバリが完了したことを示す自身の進行記録を保存して、通常のワーカースレッド動作を新しく受信したデータ記録上で始めることができる(要素1916)。
図20は、少なくともいくつかの実施形態によるデータストリーム用の複数のセキュリティオプションを実装するために実行される動作の態様を示す流れ図である。要素2001に示すように、クライアントが、例えば異なる機能カテゴリのノード用(例えば、取得、記憶、検索、処理または制御ノード)の配置先タイプのオプションを含むデータストリーム管理及び処理用の種々のセキュリティオプションから選択することができる1つまたは複数のプログラムインターフェースを実装することができる。配置先タイプはそのセキュリティプロファイルの種々の態様の中で互いに異なる。SMSまたはSPSノードに使用される資源の物理場所はいくつかの実施形態では配置先タイプ毎に異なってもよい。例えば、プロバイダ網のデータセンタに配置されたインスタンスホストなどの資源、クライアント所有の施設にある資源、またはサードパーティ資源はノード用に使用されてもよい。ネットワーク隔離レベルまたは他のネットワーキング特性は少なくともいくつかの実施形態では、配置先タイプ毎に異なってもよい。例えば、SMSまたはSPSノードの一部は隔離された仮想ネットワーク内、または専用の隔離された物理リンクを介してプロバイダ網に接続されたクライアント所有の施設でインスタンス化されてもよい。一実施形態では、クライアントは所定のタイプのSMSまたはSPSノードを、入手可能なマルチテナントインスタンスホストを使用する代わりに、プロバイダ網のシングルテナントインスタンスホストで設定すべきことを示す可能性がある。少なくともいくつかの実施形態では、種々のタイプの暗号化オプションもセキュリティ関連のプログラムインターフェースを介して選択可能であってもよい。
ストリームS1用の1つまたは複数の機能カテゴリのノードに関するクライアントのセキュリティプロファイルの選択または選好はセキュリティ関連のプログラムインターフェースを介して受領することができる。例えば、クライアントは機能カテゴリFC1(例えば、クライアントはクライアント所有の施設でSPSワーカーノードを実装したいと思う可能性がある)のノード用のあるセキュリティプロファイル及び別の機能カテゴリFC2(例えば、クライアントはプロバイダ網のデータセンタでSMS取得ノードまたは記憶ノードを実装したいと思う可能性がある)のノード用の別のセキュリティプロファイルを選択することができる(要素2004)。一部のケースでは、クライアントは同じセキュリティプロファイルを備える種々の機能カテゴリのすべてのノードを設定することを決定してもよい。SMS及び/またはSPSはいくつかの実施形態では、種々の機能カテゴリのための初期設定の配置先タイプを画成することができる。例えば、特にクライアントが示さない限り、すべての機能カテゴリのノードはプロバイダ網の隔離された仮想ネットワーク内で設定されてもよい。
様々な機能カテゴリのノードはセキュリティプロファイル及び/または場所に対するクライアントの選好に基づいて構成されてもよい(またはクライアントが選好を示さない機能カテゴリ用の初期設定に基づいて)(要素2007)。例えば、構成は適切な物理ホストまたは機械装置を選択すること、適切なコンピュートインスタンス、仮想機械装置、プロセス及び/またはスレッドを種々の機能カテゴリのノード用にインスタンス化すること、及びノード間の適切なネットワーク接続を設立することを含んでもよい。いくつかの実施形態では、異なるストリーム管理及び処理機能用の実行可能ライブラリ構成要素が構成の一部分としてプロバイダ網の外にあるホストで設置用に提供されてもよい。
少なくともいくつかの実施形態では、暗号化モジュールを、例えば、クライアントが示した暗号化の選好にしたがって、または暗号化初期設定に基づいて1つまたは複数のノードのカテゴリで起動することができる(要素2010)。種々の機能カテゴリのノードを起動すると、その結果、ストリームデータがクライアントの所望の通り取得、保存、検索及び/または処理される(要素2013)。
図21は、少なくともいくつかの実施形態による、データストリームのパーティション分割方針を実装するために実行される動作の態様を示す流れ図である。要素2101に示すように、パーティション分割方針をデータストリーム用に決定することができる。方針は、例えば、データプロデューサが提供するキーまたは提出されたデータ記録の様々な属性に基づいたパーティションに対するデータ記録の初期マッピングならびにデータストリームを再パーティション分割するための1つまたは複数のトリガー基準を含んでもよい。一部の実施形態では、例えば、ハッシュ機能を1つまたは複数のパーティションキーに適用して、128ビットの整数ハッシュ値を生じることができる。考えられる128ビットハッシュの範囲をN個の連続するサブ範囲に分割すると、それぞれがストリームのN個のパーティションの1つを示すことができる。パーティションの数及び/またはサブ範囲の比較サイズはいくつかの実施形態では、ストリーム毎に異なる可能性がある。少なくともいくつかの実施形態では、クライアントを代表するストリームが構成されていてそのクライアントが、例えば、所望のパーティションの数、または使用されるパーティション機能の所望の特性など使用されるパーティションスキームに関する入力を提供してもよい。少なくとも一実施形態では、クライアントはパーティション識別子、またはサブセットの一部、または提出されたデータ記録のすべての名前を提供することができる。
ストリームのデータ記録を受信すると、提供のキー及び/または他の属性に基づいてその各パーティションを決定して、適切な取得、記録及び検索ノードのセットを指定されたパーティションに選択することができる(要素2104)。少なくともいくつかの実施形態では、各シーケンス番号を、例えば、所与のパーティションの記録を受信した順序を示すデータ記録用に生成する(要素2107)。いくつかの実施形態では、シーケンス番号はタイムスタンプ値(例えば、既知の紀元、協定世界時1970年1月1日00:00:00から経過した秒数)、記憶サブシステムから取得したサブシーケンス値、SMSソフトウェアのバージョン番号、及び/またはパーティションの識別子などの複数の要素を含んでもよい。いくつかの実施形態では、シーケンス番号を、例えば、提供されたデータ記録をうまく取得したことを知らせるためにデータプロデューサに供給してもよい。いくつかの実施形態では、シーケンス番号をデータコンシューマが使用して、ストリームまたはパーティションのデータ記録を取得順に検索することができる。
少なくともいくつかの実施形態では、データ記録は、パーティション分割方針に基づいてデータ記録を誘導する記憶ノードでシーケンス番号順に保存されてもよい(要素2110)。回転磁気ディスク記憶装置を用いる実施形態では、一般に順次書き込みを使用して受信データ記録をディスクに保存するので、ディスクのシーク遅れを回避することができる。少なくともいくつかの実施形態では、記録をディスクに保存する前に、例えば、ディスクシークの可能性をさらに減らすため、不揮発性バッファをライトキャッシュとして使うことができる。シーケンス番号順に並べられた多数のデータ記録の読み出し要求に応答して(例えば、getNextRecordsまたは同様のインターフェースの呼び出し)、記憶装置からの順次読み出しを使ってデータ記録を後で読み出すことができる(要素2113)。
図22は、少なくともいくつかの実施形態によるデータストリームの動的再パーティション分割を実装するために実行される動作の態様を示す流れ図である。要素2201に示すように、ストリームは動的に再パーティション分割されるという決定がなされる(例えば、SMSまたはSPSの制御構成要素で)。1つまたは複数の取得、記憶、検索、処理または制御ノードでの過重負荷の検出、または、異なるノードの作業負荷レベルの不均衡、またはクライアント(例えば、データプロデューサまたはデータコンシューマ)から受領した再パーティション分割の要求など複数の種々のトリガー条件によりストリームを再パーティション分割する決定がなされる。クライアントの再パーティション分割要求は、いくつかの実施形態では、生成される修正されたマッピングの種々のパラメータなど(例えば、追加されるまたは削除されるパーティションの数、どの特定のパーティションを結合するべきかまたは分割するべきか、など)要求された再パーティション分割の特定の詳細を含んでもよい。ある実施形態では、クライアントの再パーティション分割要求はクライアントが解決したい問題状態(負荷不均衡など)を示してもよく、SMSまたはSPSは問題状態の記述を適切な再パーティション分割動作へ変換する役割を持つことができる。いくつかのケースでは、再パーティション分割の要求または問題状態の記述の代わりに、クライアントは再パーティション分割のために使用されるトリガー基準を特定することができる。いくつかの実施形態では、例えば、ストリーム記録用の異なる1組の記憶装置または異なる記憶技術の選択につながるデータストリームのデータ耐久性要求への変更の決定は再パーティション分割のきっかけとなる可能性がある。データストリームの使用パターンに対する変化の検出(例えば、データ記録が生産されまたは消費されるレート)もまた、いくつかのケースでは、再パーティション分割をもたらし、また変更した使用パターンのためにより適切な別の記憶技術の使用または別の1組の記憶装置の使用ももたらす。例えば、再パーティションの決定は、所与のパーティションまたはストリーム全体に対する期待する読み出し及び書き込みのレートに対して、SSDが回転磁気ディスクよりも適切な記憶技術であるという決定に基づいていてもよい。予定されたまたは差し迫ったソフトウェア及び/またはハードウェアのバージョン変更が一実施形態では、再パーティション分割のきっかけとなる可能性がある。いくつかのケースでは、異なるパーティション分割アプローチまたは異なる記憶へのアプローチを使用することでより効果的に予算制約が満たされることをクライアントが示すことが、価格または請求の懸念も再パーティション分割のきっかけとなる可能性がある。変更した性能目標もまた少なくともいくつかの実施形態では再パーティション分割のきっかけとなる可能性がある。図22で図示する実施形態では、再パーティション分割後割り当てられたシーケンス番号用に使用される初期タイムスタンプ値(協定世界時1970年1月1日00:00:00からの秒数の差、一般にいくつかのオペレーティングシステムでシステムコールを介して入手可能な紀元値)を選択することができる(要素2204)。いくつかの実施では、プロバイダ網で実装されたグローバル状態マネージャがgetEpochValue APIに対応することにより、例えば、SMS及び/またはSPSの様々な構成要素がシーケンス番号発行のために使用する一貫性のあるタイムスタンプ値を取得することができるようになる。他の実施形態では、他の時間資源を使用して、例えば、SMSまたはSPS制御ノードを指定して、他の構成要素に対して一貫して順に並ぶタイムスタンプ値を提供する、またはローカルシステムコールの呼び出しを用いることができる。いくつかの実施形態では、タイムスタンプ値は、例えば、単調に増加するカウンタの整数値を単純に使うので、特定の任意のホストの実際の経過時間と一致する必要はない。
再パーティション分割の決定時に使用中のマッピングと異なる、修正されたパーティションマッピングをストリーム用に生成してもよい(要素2207)。少なくともいくつかの実施形態では、変更したマッピングは特定のパーティションキーを備えたデータ記録を、同じキーを備えたデータ記録が再パーティション分割前にマップされた以外の異なるパーティションへマップしてもよい。再パーティション分割のトリガー条件及び/または観測された作業負荷測定基準によって、一部のパーティション(一般に使用頻度の高いパーティション)は分割されるが、他の(一般に使用頻度の低い)パーティションは結合される可能性がある。いくつかの実施形態では、再パーティション分割前と再パーティション分割後で、例えば、別のハッシュ関数を使用する、またはパーティションへのハッシュ関数の成果としての一区分への別のアプローチを使用するなど、別のパーティション分割機能が使われてもよい。例えば、パーティションが128ビット整数の連続する範囲に相当する一部の実施では、128ビット整数空間は、再パーティション分割後に別の1組のサブ範囲に分割されてもよい。少なくとも一部の実施形態では、取得ノード、記憶ノード、検索ノード、処理ノードまたは制御ノードの新しいセットは新しく生成されたパーティションに割り当てられる可能性がある。一部の実施形態では、空間効率の良い複合データ構造が初期マッピング及び修正されたマッピングを代表して使用されてもよい(要素2208)。例えば、各エントリがパーティション分割機能出力範囲(例えば、所与のパーティションに相当するハッシュ関数の結果のパーティション分割の範囲)及び有効期間範囲を含む有向非巡回グラフまたはツリー構造を保存すると、その結果、修正されたパーティションに相当する記録だけが再パーティション分割の結果、変更されなければならない可能性がある。再パーティション分割の間、変更しなかったパーティション用のエントリはデータ構造中で修正される必要がないかもしれない。新しいノードは修正されたパーティションマッピングを実装するよう構成されてもよい(要素2210)。少なくともいくつかの実施形態では、以前のマッピングに基づいて保存されたデータ記録の検索要求は少なくともしばらくの間、受信され続けるので、以前のノード及び以前のマッピングはしばらくの間、維持される可能性がある。特定のシーケンス番号またはタイムスタンプを指定する読み出し要求を受信した場合(要素2213)、読み出し要求が新しいパーティションマッピングを使用すると満たされるのかまたは以前のパーティションマッピングを使用すると満たされるのかにしたがって、決定がなされてもよい(例えば、制御ノードまたは検索ノードで)。そして、選択されたマッピングを、要求されたデータが取得される適切な記憶ノードを指定するために使用することができる。
図23は、少なくともいくつかの実施形態によるデータストリーム記録用の少なくとも一度記録取得方針を実装するよう実行される動作の態様を示す流れ図である。要素2301に示すように、1つまたは複数のプログラムインターフェースを実装して、クライアントが、例えば、(a)肯定応答を受信するまで記録サブミッタが1つまたは複数の記録を提出することにしたがう少なくとも一度方針、または(b)少なくとも一部の記録提出に対する承認が得られないことにしたがうベストエフォート取得方針を含むいくつかの取得方針オプションの中からデータストリーム用記録取得方針を選択できるようになってもよい。データ生産をするクライアントの一部は、他のクライアントほど、自身の記録のわずかな部分がなくなる可能性を心配することはないのでベストエフォート取得のアプローチを選択する可能性がある。いくつかの実施形態では、ベストエフォート方針はすべてのデータ記録に対して承認を要求しないにも関わらず、ベストエフォート取得用に構成されたストリームに対してさえ、SMSは一部のサブセットのデータ記録に対して承認を与える場合があり、すべてのデータ記録に対してさえも承認を与えようとする場合がある。
プログラムインターフェースの1つを介して、指定のストリーム用に使用される特定の取得方針を示す要求を受信することができる(要素2304)。取得ノードは、ストリームに対して実施されているパーティション分割方針にしたがってインスタンス化されてもよい(要素2307)。1つまたは複数の同じデータ記録の提出を取得ノードで受信した場合(要素2310)、実施中の取得方針によって異なる動作が取られてもよい。少なくとも一度取得方針が実施中の場合(要素2313で決定されたように)、承認は、1つまたは複数の各提出に対してデータプロデューサへ送信されるが、データ記録は記録サブシステムで一度しか保存されなくてもよい(2316)。(ストリームに実施中の持続性方針にしたがって、一部のケースではN個の所与の記録の複製は保存されるかもしれないが、所与のデータ記録がM度、提出される場合、複製は1度の提出に対してのみ生成されることに留意されたい。すなわち、保存される記録の複製の総数は、ずっとN個であり、NxM個ではない。)ベストエフォート取得方針が実施中の場合(これも要素2313で検出される)、データ記録はまたも記憶デバイスで1度保存されるが、データプロデューサに承認を送付する必要はない(要素2319)。少なくともいくつかの実施形態では、クライアントの請求額は少なくとも選択の取得方針に一部基づいて任意の方法で決定されてもよい(要素2322)。先に注意したように、一部の実施形態では、2つのバージョンの少なくとも一度取得方針に対応することができる。一方のバージョンでは、図23で図示されたものと同様に、SMSがデータ記録を重複排除する役割を持ってもよい(すなわち、SMS記憶サブシステムで2つ以上の提出セットの1つだけに応答してデータを確実に保存する)。別のバージョンの少なくとも一度取得では、SMSがデータ記録の複製を行うことが許されてもよい。後者のアプローチはデータ記録複製の否定的な結果がほとんどないストリームアプリケーション及び/または独自の複製除去を実行するストリームアプリケーションにとって役立つ可能性がある。
図24は、少なくともいくつかの実施形態によるデータストリーム用の複数の持続性方針を実装するために実行されてもよい動作の態様を示す流れ図である。要素2401に示すように、複数の持続性方針の中からストリームデータ記録用にクライアントが選択することができる1つまたは複数のプログラムインターフェースを実装することができる。持続性方針は任意の種々の態様において互いに異なる可能性がある。例えば、(a)保存される複製の数が異なる(例えば、N個の複製対2個の複製対単一の複製方針に対応する)、(b)記憶場所/使用されるデバイスの型が異なる(例えば、回転磁気ディスク対SSD対RAM対データベースサービスまたはマルチテナント記憶サービス)及び/または(c)方針は大規模障害への期待される強度の程度で異なる(例えば、多重データセンタ対単一データセンタ方針に対応する)。 指定されたストリームのための特定の持続性方針のクライアントの選択を示す要求を受信することができる(要素2404)。いくつかの実施形態では、クライアントが選択した持続性方針は所与のストリームの各パーティション用の別の記憶場所タイプまたは別のデバイスタイプの使用をもたらす可能性がある。一実施形態では、クライアントよりもSMSが、ストリームレベルでまたはパーティションレベルで記憶場所タイプまたはデバイスタイプを選択してもよい。いくつかの実施形態では、クライアントはデータ耐久性目標及び/または性能目標(所望の読み出しまたは書き込み処理能力あるいは待機時間)を示してもよく、持続性方針を選択する場合、一部の実施形態では、これらの目標をSMSが使用して、適切な記憶デバイスタイプまたは場所を選択することができる。例えば、短い待機時間を所望の場合、回転磁気ディスクの代わりにSSDを使用して、1つまたは複数のパーティションまたはストリームのデータ記録を保存することができる。
1組の取得ノードはデータプロデューサから選択したストリームのデータ記録を受信するために決定または構成されてもよい。また1組の記憶ノードは選択された持続性方針を実装するために構成されてもよい(要素2407)。データ記録が取得ノードで受信された時(要素2410)、1つまたは複数のデータ記録の複写が、選択された持続性方針に基づいて、データ記録が属するパーティションを扱う記憶ノードが選択する記憶装置で保存されてもよい(要素2413)。少なくともいくつかの実施では、請求額は、クライアントが選択する指定の持続性方針に基づいて任意の方法(及び/または非同期的に)で決定されてもよい(要素2416)。
ストリームプロセッシングのための分散ワークロードマネジメント
いくつかの実施形態では、SPSの実質的な部分またはすべての制御プレーン機能が、例えば、ワーカーノードが所与のSPS段階内でデータベーステーブルなどの共有されたデータ構造を介して様々な制御動作を連携させる(動的再パーティション分割、ヘルス監視、及び/または負荷均衡化に応答するワーカーノードへのパーティション割り当てなど)、分散化した方法で実装されてもよい。所与のワーカーノードW1は共有データ構造内のエントリを検査して、例えば、段階の入力ストリームのどのパーティションが(もしあるなら)現在処理されていないかを判定することができる。そのようなパーティションP1を見つけた場合、W1は共有データ構造内のエントリを更新して、W1が段階の処理動作をP1の記録上で実行することを示すことができる。他のワーカーノードは、W1はP1記録を処理するために割り当てられていることを知り、それらを異なるパーティションへ割り当てることができる。ワーカーノードは定期的にまたは時折、クエリをSMS制御プレーンに提出して、入力ストリーム用に実行中の現在のパーティションマップを決定して、共有データ構造を更新して必要に応じてマップの変更を示すことができる(例えば、再パーティション分割の結果として)。負荷均衡及び他の動作も、様々な実施形態で、以下に説明するように共有されたデータ構造を介して連携させることができる。このような分散化された実施形態では、専用の制御ノードをSPSに要求できないので、SPSの作業フローを実装するために要求される負荷を減らすことになる。このような分散化SPS制御プレーンの実施は、例えば、顧客に割り当てられているプロバイダ網内のコンピュートインスタンスでまたはプロバイダ網の外側の場所で、SPSクライアントライブラリを利用してストリーム処理の様々な態様を実装する経費意識の高い顧客には特に一般的な場合がある。分散化SPS制御プレーンの技術は、例えば、SMS及びSPSに使用されるすべての資源がプロバイダ網内で構成される場合、クライアントライブラリが使用されない実施形態でも使用することができる。ワーカーノードが、少なくとも一部の処理段階用に一部またはすべてのSPS制御プレーンの機能を実装するSPSを、ここでは「分散型制御SPS」と呼んでもよい。
図25は、少なくともいくつかの実施形態による処理段階のワーカーノードがデータベーステーブルを使用して作業負荷を調整するストリーム処理システムの実施例を示す。分散型制御SPS2590内にそれぞれワーカーノード1式を備える2つの段階215A及び215Bが画成される。段階215Aはワーカーノード2540A及び2540Bを備え、段階415Bはワーカーノード2540K及び2540Lを備える。各段階215A及び215Bに対して、対応するパーティション割り当て(PA)テーブル2550、段階215A用PAテーブル2550A、及び段階215B用PAテーブル2550Bなどがデータベースサービス2520で生成される。所与の段階に対するPAテーブル2550はいくつかの実施形態では、例えば、クライアントのライブラリ構成要素または機能の呼び出しに応答して段階の初期化の間に生成されてよい。各PAテーブル2550はエントリの初期セットまたは段階の入力ストリームの未割り当てパーティションを示す列を備えて事前設定されてもよい(すなわち、ワーカーノードが現在割り当てられていないパーティション)。PAテーブルエントリのコラムまたは属性の実施例を図26に示し、以下で説明する。段階用に起動されたワーカーノード2540(例えば、コンピュートインスタンスまたは他のサービスで起動されたプロセスあるいはスレッド)は段階のPAテーブルへの読み出し/書き込みアクセスを認可されてもよい。ワーカーノードからPAテーブルへ向けられた読み出し及び書き込みをそれぞれ矢印2564A、2564B、2564K及び2564Lによりワーカーノード2540A、2540B、2540K及び2540Lについて図25に示す。
所与のワーカーノード2540はPAテーブルのエントリを調査することで、段階の処理動作を実行する特定のパーティションを選択するよう構成されてもよい。ある実施形態では、ワーカーノード2540Aは未割り当てパーティションPkのエントリを見つけるまで、PAテーブル2550A内のエントリを走査して、例えば、ワーカーノードの識別子をエントリのコラムの1つに挿入することによりエントリを更新することでパーティションPkをワーカーノード2540A自体に割り当てようとすることができる。そのような挿入は、ワーカーノードによってパーティションをロックすることに似ていると考えられてもよい。使用されているデータベースサービスのタイプにより、PAテーブルのエントリに対して起こり得る同時書き込み(2つ以上のワーカーノードが未割り当てのパーティションをたまたまほぼ同時に指定することによる)を管理する様々なアプローチが用いられてもよい。
一実施形態では、プロバイダ網の非リレーショナルマルチテナントデータベースサービスを使用して、リレーショナルデータベース処理意味論に必ずしも対応することなく強い整合性と条件付き書き込み動作に対応することができる。条件付き書き込み動作はワーカーノードによる更新の場合に用いられる。コラム「ワーカーノードID」がPAテーブル内のパーティションに割り当てられた特定のワーカーノードの識別子を示すために使用されて、ワーカーノードがパーティションに割り当てられない場合、コラムの値が「ヌル」に設定される実施例を考えられたい。そのようなシナリオでは、識別子WID1を備えるワーカーノードは以下の論理同値を要求してもよい。「パーティションPkへのエントリで、ワーカーノードIDがヌルの場合、そのエントリに対するワーカーノードIDをWID1へ設定する。」そのような条件付き書き込み要求が成功したら、識別子WID1を備えるワーカーノードはパーティションPkがワーカーノードに割り当てられたとみなすことができる。そして、ワーカーノードは、例えば、矢印2554で示すSMS検索サブシステム206の記録検索インターフェースを使用して(例えば、ワーカーノード2540A、2540B、2540K及び2540Lについてそれぞれ矢印2554A、2554B、2554K及び2554L)パーティションPkのデータ記録を検索し始めて、検索された記録上で処理動作を実行することができる。条件付き書き込みに失敗した場合、ワーカーノードは別の割り当てられていないパーティションを再度検索し始めてもよい。他の実施形態では、例えば、パーティションをワーカーノードに割り当てようとする複数の同時(ほとんど同時)の試みのうちのただ1つが確実に成功するために、及び、そのような同時の試みに巻き込まれたワーカーノードが成功または失敗を確実に報告するために、取引を支援するデータベースサービス(リレーショナルデータベースなど)を使用して、また処理機能を使用して、条件付き書き込み動作の同値を実装することができる。条件付き書き込みにも取引支援にも依存しない同期技術をいくつかの実施形態で使用してもよい。一部の実施形態では、データベースサービスを使用することができない。代わりに、ロッキングサービスをワーカーノードが使用して、PAテーブルに類似の持続性データ構造でのエントリの更新に対する唯一のアクセスを取得することができる。
他のワーカーノード2540はPAテーブル内のエントリを調査して、どのパーティションが未割り当てかを判定し、最終的に1つまたは複数のパーティションをワーカーノード自体にうまく割り当てることができる。このように段階の入力ストリームまたは複数のストリームのパーティションへの処理作業負荷を最終的に段階のワーカーノードがワーカーノード自体のなかで分散することができる。
いずれの所与のストリームの初期パーティションマッピングでも、例えば、すでに説明した動的再パーティション分割動作の結果として、時間とともに変化してもよい。したがって、図25で図示する実施形態では、1つまたは複数のワーカーノード2540は時折(または以下で説明するトリガー条件に応答して)自身の段階の入力ストリームのSMS制御サブシステム210に要求を送付して、現在のパーティションメタデータを取得してもよい。いくつかの実施形態では、このような要求は、矢印2544A、2544B、2544K及び2544LによるgetStreamInfo APIの呼び出しなどSMS制御プレーンAPIの呼び出しを含んでもよい。SMS制御サブシステムは、例えば、ストリームのパーティションの最新のリスト及び/またはパーティションの有効期間などの他の詳細を備えて応答することができる。SMS制御サブシステム210が与えるパーティション情報がPAテーブル内のエントリと一致しない場合、例えば、1つまたは複数のパーティションのエントリを挿入または削除して、ワーカーノードがPAテーブルを修正してもよい。SMS制御サブシステムに対するこのような要求2554は、少なくともいくつかの実施形態では、矢印2554Aの付箋「まれな」が示すように、通常、記録検索要求2554(及び/またはデータベース読み出しまたは書き込み動作2564)よりずっと少ない頻度で起こるものでよい。例えば、一度パーティションに割り当てられた場合、ワーカーノードは一般に、パーティションのデータを完全に消費する(例えば、ストリームの所有者がストリームを閉じた場合、またはパーティションが動的再パーティション分割の結果、閉じられた場合)まで、またはなんらかの他の低確率の状況に出会うまで(例えば、以下に説明するように負荷の不均衡が検出されたため別のワーカーノードがパーティションの移動を要求する場合)、パーティションのデータ記録を検索及び処理し続ける可能性がある。このようにgetStreamInfoまたは同様のAPIの呼び出しに関連する負荷は一般に、実際の情報量がいずれかの特定の呼び出しに応答して提供されたとしても(数百または数千のパーティションを段階の入力ストリーム用に画成した場合であっても)、種々の実施形態では、極めて小さい。
一部の分散型制御SPS環境のキー作業負荷管理型動作は図25で示す実施形態では以下の通り要約することができる。(a)ストリームの処理段階の第1のワーカーノードによる少なくとも一部、データベーステーブルへのアクセスに基づいて、ストリームの処理段階用に規定された1組の処理動作を実装するための、ストリームの処理段階の入力データストリームの特定のパーティションを、選択すること、(b)テーブル内に保存された特定のエントリへ、第1のワーカーノードへの特定のパーティションの割り当ての表示を書き込むこと、(c)第1のワーカーノードが、マルチテナントストリーム管理型サービスで実装されたプログラム記録検索インターフェースを使用して特定のパーティションの記録を検索すること、(d)第1のワーカーノードが、特定のパーティションの記録上に1組の処理動作を実装すること、(e)第2のワーカーノードが、特定のデータベーステーブル内の特定のエントリの少なくとも一部に基づいて、第1のワーカーノードを特定のパーティションで1組の処理動作を実行するよう割り当てることを決定すること、及び(f)第2のワーカーノードが1組の処理動作を実行するための異なるパーティションを選択すること。自身に割り当てる記録がパーティションに残っていないとワーカーノードが判定した場合及び判定したとき、ワーカーノードはSMS制御サブシステムから入力ストリーム上のメタデータを要求して、メタデータが不一致を示した場合、PAテーブルを更新することができる。
図26は少なくともいくつかの実施形態による、作業負荷の調整のため使用されるパーティション割り当てテーブル2550に保存されてもよいエントリの実施例を示す。表示の通り、テーブル2550は4つのコラムを備え、それらは、パーティション識別子コラム2614、割り当て済みワーカーノード識別子コラム2618、ワーカーノードヘルス表示コラム2620及び作業負荷レベル表示コラム2622である。他のコラムの数組は他の実施形態では実装される。例えば、パーティション生成時間またはパーティション機能出力値範囲を示すコラムはいくつかの実施形態で使用されるが、作業負荷レベル表示コラムは使用されないかもしれない。
SMS制御サブシステムが維持するパーティションリスト2650(例えば、パーティションエントリツリー、グラフまたは上述の複合データ構造の一部として)は、一部の実施形態では、少なくともいくつかの時点で、PAテーブル2550に含まれる以上のパーティションを含んでいる可能性があることに留意されたい。図示の実施例では、パーティションリスト2650はパーティションP1、P2、P3、P4及びP5を含み、そのうちP1とP4は再パーティション分割の結果として閉鎖状態で、P2、P3及びP5は稼働中と示されている(すなわち、データ記録が現在検索され処理されているパーティション)。PAテーブル2650は、図示の実施形態では稼働中のパーティション用のエントリを含み、閉鎖したパーティションのエントリは含まない(例えば、再パーティション分割が起こった後、getStreamInfoの呼び出しに対する応答を取得したとき、すでにワーカーノードが削除している)。少なくともいくつかの実施では、現在開放中のストリームのパーティションのすべてが必ずしもPAテーブルに所定の時点で対応するエントリを有するわけではない。むしろ、例えば、現在割り当てられ、または処理されているサブセットのパーティションだけを表示していることがある。
図26に示す実施例のシナリオでは、パーティションP1及びP2は各識別子W7及びW3を備えるワーカーノードに割り当てられるが、P5は現在割り当てられていない。ヘルス表示コラム2620は別の実施形態では、異なるタイプの値を保存してもよい。いくつかの実施形態では、ワーカーノードは定期的に(例えば、N秒毎にまたは数セットのヒューリスティックスに基づいた予定にしたがって)自身が割り当てられたパーティションのPAエントリのヘルス表示コラムの内容を更新して、ワーカーノードが稼働中で検索及び処理動作を継続できることを示す役割を持ってもよい。図26では、そのエントリに対するワーカーノードがヘルス表示コラム(最後に修正した時間)を更新した直近の時間の表示を保存することができる。例えば、ワーカーW7は2013年12月1日02:24:54及び53秒でエントリを修正したと示される。いくつかの実施形態では、他のワーカーノードは最後に修正した時間値を使用して、割り当てられたワーカーノードがヘルシーかまたはそうでないかを決定することができる。例えば、その段階のフェールオーバー方針に規定されているようにX秒またはX分が経過した場合、割り当てられたワーカーノードは不健康またはアクセス不可とみなされてパーティションが再割り当てされる可能性がある。他の実施形態では、カウンタをヘルス表示として使われてもよく(例えば、カウンタの値がY秒間変化しなかった場合、割り当てられたワーカーノードはフェールオーバーの候補と考えられる)、または割り当てられたワーカーノードが最後にエントリを読み出したときを示す「最後の読み出し時間」値が使われてもよい。
少なくともいくつかの実施形態では、例えば、ある最新の時間間隔の間に処理された記録の数(例えば、最後に修正された時間の前の5分間)、CPU使用率、メモリ使用率、ストレージ使用率などワーカーノードの最近の性能に関係する測定基準などを割り当てられたワーカーノードが、作業負荷レベル表示値2622をエントリに保存する。ワーカーノードはこのような作業負荷レベル表示値をいくつかの実施形態で使用して、図29を参照して以下で説明するように負荷不均衡が存在するかを判定し、検出された不均衡に応答して措置を講じることができる。例えば、ワーカーノードWkはその作業負荷レベルが平均的作業レベルを超えていると判定して、そのパーティションの1つの割り当てを解除する、あるいは動的再パーティション分割を要求することができる。あるいは、ワーカーノードWkはその作業負荷が他のワーカーノードまたはパーティションの作業負荷と比べて低すぎると判定して、追加のパーティションをそれ自身に割り当てることができる。こうして、図26に示すPAテーブルのコラムを使用すると、ワーカーノードは図示の実施形態では、通常、特定のSPS制御ノードが集中管理SPS実施で実行する一部の制御プレーンと同じタイプの機能を実行することができる。
図27は少なくともいくつかの実施形態による、処理動作を実行するためのパーティションを選択するストリーム処理段階のワーカーノードにより実行される動作の態様を示す。要素2701に示すように、PAテーブルのPAT1はデータベースサービスで分散型制御SPS処理段階SP1用に初期化されてもよい。例えば、そのテーブルは、SPSクライアントライブラリ構成要素を呼び出した時に生成されてもよく、例えば、クライアントの施設でホストから、またはプロバイダ網のデータセンタでコンピュートインスタンスから呼び出した時でよい。クライアントライブラリは、例えば、SPS段階で実装される特定の処理動作のためのJAR(Java(商標)アーカイブ)ファイルなど実行可能コンポーネントを与えるため、ワーカーノードを特定するために使用することができる付箋を表示するため(プログラム名、プロセス名またはコンピュートインスタンス名など)、段階用の入力として使用されるストリームを表示するため、段階の出力先(もしあれば)を表示するためなど種々の目的に使うことができる。PAT1は、いくつかの実施形態では、段階の入力ストリーム用に規定された少なくとも1サブセットのパーティション(P1,P2,...)用にエントリまたは列を備えて初期に投入される。いくつかの実施形態では、テーブルは最初空欄であるが、1つまたは複数のワーカーノードが、例えば、SMS制御サブシステムからパーティションのメタデータを取得した結果として未割り当てのパーティション用に列を伴うテーブルを投入する。ワーカーノードの初期セット(W1,W2,....)を、例えば、プロバイダ網内の種々のコンピュートインスタンスで、またはクライアント所有のコンピューティングデバイスで(要素2704)起動してもよい。ワーカーノードは図示の実施形態ではPAT1への読み出し及び書き込みアクセスを許可されることになる。
ワーカーノードはオンライン化すると、未割り当てのパーティションを探してそれぞれがPAT1にアクセスすることができる。例えば、ワーカーノードW1はPAT1を調査して、パーティションP1が未割り当てであることを見つけることができる(要素2707)。そして、W1は、例えば、使用しているデータベースサービスのタイプによって条件付き書き込み要求またはトランザクショナル更新要求を用いて、P1はW1に割り当てられたということを示すよう、PAT1のP1のエントリを更新することができる(要素2710)。テーブルを更新した後、W1はP1のデータ記録の検索を、SMS検索サブシステムインターフェースを用いて始めることができる(要素2713)。そして、検索した記録の段階PS1の処理動作を実行することができる。
一方で、ある時点で、異なるワーカーノードW2が未割り当てのパーティションを探して独自にPAT1にアクセスしてもよい(要素2716)。W2はW1の以前の更新に基づいて、P1はすでに割り当てられたが別のパーティションP2は割り当てられていないと判定することができる。いくつかの実施形態では、現在のP2を割り当てられているワーカーノードが不健康または停止中(P2エントリのヘルス表示コラムに基づいて)というW2による決定によってもW2がP2を選択するようになる。このように、少なくともいくつかの実施形態では、割り当てられていない状態または現在のワーカーノードの不健康な状態の決定のいずれかが再割り当て(または初期割り当て)のため所与のパーティションを選択するために使われてよい。W2はPAT1を更新して、P2を自身に割り当てようとしてもよい(要素2719)。うまく更新できた場合、W2はSMS検索インターフェースを用いて、また段階のために規定された適切な処理動作を実行してP2の記録を検索し始めてもよい(要素2722)。
前述のように、分散型制御SPS(一般にまれに)のワーカーノードは、SMSからパーティションマッピングの情報を取得することができ、そのような情報を使用して必要な場合、PAテーブルを更新することができる。図28は、少なくともいくつかの実施形態による、ストリーム管理型サービス制御サブシステムから取得した情報に基づいてパーティション割り当てテーブルを更新するためにストリーム処理段階のワーカーノードにより実行される動作の態様を示す。要素2801に示すように、ワーカーノードの初期化の間、またはそれに割り当てられたパーティションの1つの閉鎖などの種々のトリガー条件に応答して、ワーカーノードW1はSMS制御サブシステムへ要求を提出して、最新のまたは現在のパーティションリストまたは稼働中のパーティションリストを取得することができる。いくつかの実施形態では、getStreamInfoまたは同様のAPIをこの目的のために呼び出してもよい。一部の実施形態では、他のトリガー条件を使用してもよい。例えば、ワーカーノードが、ランダムな時間の後、または予期せぬ作業負荷レベルの減少もしくは増加に応答して、新しいパーティションリストを取得するためにそれぞれ構成されてもよい。SMSが返却したパーティションリストはパーティション用にPAテーブル内のエントリと比較することができる(要素2807)。不一致が見つかった場合(例えば、新しく取得したパーティションリストの中のあるパーティションがPAテーブルにない場合、またはSMSリストになくてPAテーブルにエントリがある場合)、図示の実施形態では、ワーカーノードはPAテーブル内でエントリを挿入するかまたは削除して、不一致を解決することができる(要素2810)。(一部の実施形態では、削除対象のエントリが現在割り当てられたワーカーノードを有する場合、例えば、割り当てられたワーカーノードに、直接またはPAテーブル自体を介して通知するなど、追加の調整が必要な場合がある。)
不一致が修正された後で、または不一致が検出されなかった場合、ワーカーノードW1は段階の処理動作を実行すべき1組のパーティションを選択することができ(要素2813)、それに応じてPAテーブルを更新することができる。いくつかの場合、パーティションリストを検索させようとしたトリガー条件次第で、W1はそれに割り当てられた1つまたは複数のパーティションをすでに有していて、その割り当てを変更するまたはPAテーブルを更新する必要がない場合がある。W1はその割り当てられた1つまたは複数のパーティションのデータ記録を検索することを進行して、SMS制御サブシステムと相互作用する必要なく、またはPAテーブル内のエントリの数を変更することなく、記録を処理することができる(要素2816)。結局、トリガー条件を検出した時(例えば、パーティションが閉鎖したことを示す、「パーティションの終端に到達」と同意義の応答を検索要求に対して受領した時)、W1は再度SMS制御サブシステムに対して新しいパーティション情報の要求を送信し、要素2801以降の動作を繰り返してもよい。
図29は、少なくともいくつかの実施形態による、ストリーム処理段階のワーカーノードにより実行される負荷均衡動作の態様を示す。要素2901に示すように、ワーカーノードW1は負荷均衡解析を、高い資源使用レベルの検出などいずれかの種類のトリガー条件の検出により、または設定可能スケジュールに基づいて、その段階で実行することを決定してもよい。W1はPAテーブル内のエントリを調査して(要素2904)、段階のための種々の作業負荷の測定基準を決定することができる。そのような測定基準はワーカーノードに割り当てられるパーティションの平均数、ワーカーノードの平均作業負荷レベルまたは種々のパーティションの平均作業負荷レベル(作業負荷レベルの表示がテーブルに保存された実施形態では)、ワーカーノード毎の作業負荷の範囲または分散などを含んでもよい。
W1は自身の作業負荷(例えば、W1に割り当てられたパーティションの数及び/またはパーティション毎の作業負荷レベル表示に基づいて)を測定基準の一部またはすべてと比較することができる。一般に、3つの型の結論のいずれかを引き出すことができる。すなわち、W1は過負荷である、W1は過少負荷である、またはW1は負荷が高すぎもせず低すぎもせずである。「高すぎる」または「低すぎる」という作業負荷のレベルは、いくつかの実施形態で代表する段階が構成されるクライアントにより選択される方針により、または他の実施形態では、ヒューリスティックスのある初期設定のセットを用いて、規定することができる。W1がその作業負荷が低すぎる(要素2907)と判定した場合、例えば、ある最低負荷閾値T1より下である場合、より忙しいまたは負荷の高いワーカーノードWkを指定してもよい(要素2910)。そして、W1は、例えば、PAテーブル内のPmエントリを修正しようとして、そのような修正を要求して(Wk用に発生した通知につながる)、またはWkに直接要求することにより、1つまたは複数のパーティションPmをWkから自身へ移動するプロセスを始めることができる。(要素2913)。
W1が自身の作業負荷が高すぎる(要素2916)と判定した場合、例えば、最大閾値T2より大きい場合、1つまたは複数の割り当て済みのパーティションPnを指定して、放棄することができる(すなわち、他のワーカーノードに割り当てるために解除する)(要素2919)。そして、例えば、Pn用のエントリの割り当てのあるコラムから識別子を削除して(要素2922)、W1はPAテーブル内の適切なエントリを修正することができる。W1の作業負荷が高すぎもなく低すぎもない場合、またはW1がその作業負荷を増やしたり減らしたりする上述のような措置を講じた後で、W1は割り当てられたパーティションの処理記録を再開してもよい(要素2925)。要素2901以降に一致する動作は、他の負荷均衡解析をトリガーする条件に合った時または合った場合に繰り返される可能性がある。図29で図示する動作では、W1は自身の作業負荷に対する均衡を検出した場合のみ、作業負荷の変更を開始するように示されていることに留意されたい。他の実施形態では、例えば、W2の作業負荷レベルがW3よりはるかに低いと判定した場合など、W1自身より他のワーカーノード間の不均衡を検出した場合、W1は是正の措置を開始してもよい。いくつかの実施形態では、W1は、作業負荷の不均衡を検出した場合及び検出した時、動的再パーティション分割を要求または始めてもよい(例えば、図3で示したrepartitionStream SMSAPIまたはその均等物を呼び出すことにより)。いくつかの実施形態では、図29に示すような動作を新しく構成されたワーカーノードが実行してもよい。例えば、新しいノードがある段階に追加される前から、その段階がすでにしばらくの間稼働していた時、負荷の大きい既存のノードからパーティションの再割り当てを要求することで、新しいノードは自身の存在を既存のノードに間接的に通知することができる。一部の実施形態では、SPSワーカーノード用の上述と同様の分散型制御技術も、または代わりに1つまたは複数のSMSサブシステムで使用することができる。例えば、取得、記憶または検索サブシステムはPAテーブルと同様の共有データ構造を用いて、自身の作業負荷を調整することができる。
種々の実施形態では、図17〜24及び図27〜29の流れ図に示す以外の動作はストリーム管理型サービス及び/または上述のストリーム処理機能を実装して使用することができることに留意されたい。図示の一部の動作はいくつかの実施形態では実装されていない、または異なる順序で、または順次ではなく並行して実装されている可能性がある。種々の実施形態では、プログラムインターフェースに対応する各SMS及びSPS機能に対して、1つまたは複数の技術のいずれの組み合わせも、ウェブページ、ウェブサイト、ウェブサービスAPI,他のAPI、コマンドラインツール、グラフィカルユーザインターフェース、携帯用アプリケーション(app)、タブレット用app、などを含むインターフェースを実装するために使用することができることにもまた留意されたい。
使用ケース
ストリームデータ記録の収集、記憶、検索及び段階型処理のための拡張可能なパーティション分割型動的構成可能管理型マルチテナントサービスを確立する上述の技術はいくつかのシナリオで役立つ可能性がある。例えば、大規模プロバイダ網は、数万のクライアントに同時にいくつかの異なるマルチテナントサービスまたはシングルテナントサービスのサービスインスタンスを実装する数千のインスタンスホストを備えることができる。種々のインスタンス及びホストにインストールされた監視及び/または課金エージェントはすばやく数千のメトリック記録を生成することができ、それらは保存及び解析される必要があるが、正確な請求記録を作成し、プロバイダ網のデータセンタ用の効果的な供給計画を決定し、ネットワーク攻撃を検出するなどを行うことができる。監視記録は、拡張可能な取得及び記憶用SMSに対して入力ストリームを形成することができ、説明されたSPS技術を収集された測定基準の解析用に実装することができる。同様に多くのログ資源から膨大なログ記録を収集し解析するアプリケーション(例えば、分散型アプリケーションのノードからのアプリケーションログまたはホストもしくはデータセンタのコンピュートインスタンスからのシステムログ)もまた、SMS及びSPS機能を使用することができてもよい。少なくともいくつかの環境では、SPS処理動作はリアルタイムETL(Extract−Transform−Load)処理動作(すなわち、受信データ記録を目的先にロードするために、変換をオフラインで行う代わりに、リアルタイムで変換する)、またはデータ記録をデータウェアハウスへ挿入するための変換を含んでもよい。一般に、解析用にウェアハウスへデータを挿入できる前に、1つまたは複数のデータソースからのクリーンで選別されたデータを要求するデータウェアハウスへリアルタイムでデータをロードする組み合わせはSMS/SPSを使うことにより、遅延を避けることができる。
また、SMS及びSPS技術を用いて、いくつかの異なる「ビッグデータ」アプリケーションを構築することができる。例えば、種々の形状のソーシャルメディアの相互作用のトレンドの解析はストリームを使うと効果的に実行することができる。ユーザの位置情報などの携帯電話またはタブレットコンピュータから収集されたデータはストリーム記録として管理することができる。例えば、1群の監視カメラから収集された音声または映像情報は、拡張可能な方法で収集され、加工される他のカテゴリのストリーミングデータのセットを表すことができ、様々な種類の攻撃を防ぐ潜在的な手助けとなる。例えば、気象衛星、海洋型センサ、森林型センサ、天体望遠鏡から収集された増え続けるデータセットの解析を必要とする科学的なアプリケーションもまた、本明細書に記載のストリーム管理及び処理能力が役立つ可能性がある。柔軟な方針に基づいた構成オプション及び価格オプションは種々のタイプのユーザがストリーミング機能をユーザの特定の予算及びデータ持続性/可用性要求に適合するようカスタマイズする助けとなることができる。
本開示の実施形態について、以下の条項に照らして説明することができる。
1
記録取得サブシステム、記録記憶サブシステム、及び記録検索サブシステムの各サブシステムが、パーティション分割方針を含む1つまたは複数の方針に基づく1つまたは複数の制御構成要素により動的に構成可能な1つまたは複数のノードを備える、(a)記録取得サブシステム、(b)記録記憶サブシステム、及び(c)記録検索サブシステムの各1組のノードを、1つまたは複数のデータプロデューサにより生じる複数のデータ記録を含む特定のデータストリームに割り当てられる、マルチテナントストリーム管理サービスの1つまたは複数の制御構成要素によって、決定し、
データ記録のインライン提出を支持する第1の提出インターフェース及びデータが記憶されているネットワークアドレスを参照してデータ記録提出を可能にする第2の提出インターフェースを含む、記録取得サブシステムで実装された1つまたは複数のプログラムによる記録提出インターフェースを介して提出されたデータ記録を受信し、
非順次アクセスパターンを可能にする第1の検索インターフェース及び順次アクセスパターンを可能にする第2の検索インターフェースを含み、第1の検索インターフェースの使用に関連する課金レートが第2の検索インターフェースの使用と関連する課金レートと異なる、記録検索サブシステムで実装された1つまたは複数のプログラムによる記録検索インターフェースを介して受領したデータ記録検索要求に応答してデータ記録の内容を提供し、
複数の記録検索インターフェース及び複数の記録提出インターフェースの個々の使用回数の測定基準の少なくとも一部分に基づいて特定のデータストリームと関連する課金額をクライアントに発信するように構成された1つまたは複数のコンピューティング装置を備えるシステム。
2
1つまたは複数のコンピューティング装置が、パーティション分割方針にしたがって、特定のデータ記録に対応する書き込みリクエストによって表示される特定のデータ記録と関連するキーの少なくとも一部分に基づいて、特定のデータストリームの特定のデータ記録を特定のデータストリームのパーティションに割り当てるようさらに構成される第1項に記載のシステム。
3
1つまたは複数のコンピューティング装置が、特定のデータ記録が割り当てられるパーティションの少なくとも一部分に基づいて、1つまたは複数の(a)特定のデータ記録を受諾する役割を持つ記録取得サブシステムの特定ノードと、(b)特定のデータ記録の少なくとも1部の複写を記憶する役割を持つ記録記憶サブシステムの特定ノードと、(c)読み出しリクエストに応答して記録記憶サブシステムから特定のデータ記録を入手する役割を持つ検索サブシステムの特定のノードとを選択するようさらに構成される第1項に記載のシステム。
4
記録取得サブシステム、記録記憶サブシステム、及び記録検索サブシステムのうち少なくとも1つのサブシステムが、冗長グループのメンバとして1つまたは複数の制御構成要素により構成される複数のノードを備え、冗長グループが、(a)1組のデータ記録上で作動するよう割り当てられている1つまたは複数の主ノード及び(b)1つまたは複数のトリガーイベントの検出に応答して主要な役割を装うように構成される1つまたは複数の非主ノードを備える第1項に記載のシステム。
5
1つまたは複数のコンピューティング装置が、特定のデータ記録に対応して、特定のデータ記録が属するパーティションの他のデータ記録に関連する記録取得サブシステムで特定のデータ記録を受領する順番を示す特定のシーケンス番号を発信し、
記録記憶サブシステムによって、データ記録用に発信した各シーケンス番号上の少なくとも一部分に基づく順番で特定のデータ記録を含む複数のデータ記録を記憶し、
パラメータとして特定のシーケンス番号を備える第1の検索インターフェースを呼び出す読み出しリクエストに応答して、記録記憶サブシステムから特定のデータ記録を検索するようにさらに構成される第1項に記載のシステム。
6
複数のデータ記録を備える特定のデータストリーム用に、ストリームのパーティション分割方針を含む1つまたは複数の方針に基づいたストリーム管理動作を実行する1つまたは複数の制御構成要素によって構成可能な一式のノードを決定することと、
非順次アクセスパターンを可能にする第1の検索インターフェース及び順次アクセスパターンを可能にする第2の検索インターフェースを含み、第1の検索インターフェースの使用に関連する課金レートが第2の検索インターフェースの使用と関連する課金レートと異なる、1つまたは複数のプログラムによる記録検索インターフェースを介して受領した記録検索要求に応答してデータ記録を提供することと、
複数の記録検索インターフェースの個々の使用回数の測定基準の少なくとも一部分に基づいて特定のデータストリームと関連する課金額をクライアントに発信することとを、1つまたは複数のコンピューティング装置が実行することを含む方法。
7
パーティション分割方針にしたがって、特定のデータストリームの特定のデータ記録を特定のデータストリームの第1のパーティションに、特定のデータ記録と関連するキーの少なくとも一部分に基づいて割り当てることを1つまたは複数のコンピューティング装置が実行することをさらに含み、キーが特定のデータ記録に対応する書き込みリクエストによって表される、第6項に記載の方法。
8
特定のデータ記録が割り当てられるパーティションの少なくとも一部分に基づいて、1つまたは複数の(a)特定のデータ記録を受諾する役割を持つ記録取得サブシステムの特定ノードと、(b)特定のデータ記録の少なくとも1部の複写を記憶する役割を持つ記録記憶サブシステムの特定ノードと、(c)読み出しリクエストに応答して記録記憶サブシステムから特定のデータ記録を入手する役割を持つ検索サブシステムの特定のノードとを選択することを、1つまたは複数のコンピューティング装置が実行することをさらに含む第6項に記載の方法。
9
1つまたは複数のプログラムによる記録提出インターフェースを介して提出されたデータ記録を受信することを1つまたは複数のコンピューティング装置が実行することをさらに含み、1つまたは複数のプログラムによる記録提出インターフェースが、データ記録のインライン提出を支持する第1の提出インターフェース及び、(a)プロバイダ網で実装される記憶サービスの対象アドレスと、(b)ユニバーサル記録ロケータと、(c)データベース記録のうちの1つを参照してデータ記録提出を可能にする第2の提出インターフェースを含む第6項に記載の方法。
10
(a)特定のデータストリームを構成するデータ重複排除ウィンドウ、(b)特定のデータストリームと関連するデータアーカイブ方針、(c)クライアントが指示するデータ保持方針、(d)特定のデータ記録削除のクライアントの要請、または(e)特定のデータ記録を1つまたは複数のデータコンシューマが処理したという表示のうちの1つの少なくとも一部分に基づく特定のデータ記録を、データ記憶サブシステムの特定のノードから、削除することを1つまたは複数のコンピューティング装置が実行することをさらに含む第6項に記載の方法。
11
特定のデータストリーム用に構成される(a)記録取得サブシステム、(b)記録記憶サブシステム、または(c)記録検索サブシステムのうちの少なくとも1つのサブシステムが、冗長グループのメンバとして1つまたは複数の制御構成要素により構成される複数のノードを備え、冗長グループが、(a)1組のストリームのデータ記録上で作動するよう割り当てられている1つまたは複数の主ノード及び(b)1つまたは複数のトリガーイベントに応答して主要な役割を装うように構成される1つまたは複数の非主ノードを備える第6項に記載の方法。
12
1つまたは複数の主ノードのうちの特定の主ノードのインスタンスを特定のデータセンタで作成し、1つまたは複数の非主ノードの特定の非主ノードのインスタンスを別のデータセンタで作成する第11項に記載の方法。
13
1つまたは複数のトリガーイベントのうち1つのトリガーイベントを検出することと、
1つまたは複数の非主ノードの特定の非主ノードに主要な役割を装うよう通知することを1つまたは複数のコンピューティング装置が実行することをさらに含む第11項に記載の方法。
14
1つまたは複数の制御構成要素が冗長グループとして構成される複数の制御ノードを備え、特定のデータストリームを含む1つまたは複数のデータストリーム上の制御プレーン動作の要求に応答して構成される主制御ノード、及び1つまたは複数のトリガーイベントに応答して主要な役割を装うよう構成される少なくとも1つの非主制御ノードを備える第6項に記載の方法。
15
プロバイダ網のネットワークにアクセス可能なデータベースに、ストリームのパーティション分割方針にしたがって発生したパーティションマップを含む特定のデータストリームのメタデータを記憶することと、
記録検索サブシステムから、特定の記録検索要求に応答してメタデータにアクセスすることとを1つまたは複数のコンピューティング装置が実行することをさらに含む第6項に記載の方法。
16
データストリームの特定のデータ記録に対応して、特定のデータ記録が属するパーティションの他のデータ記録に関連する記録取得サブシステムで特定のデータ記録を受領する順番を示す特定のシーケンス番号を発信することと、
記録記憶サブシステムによって、データ記録用に発信した各タイムスタンプの少なくとも一部分に基づく順番で特定のデータ記録を含む複数のデータ記録を記憶することと、
パラメータとして特定のシーケンス番号を備える第1の検索インターフェースを呼び出す読み出しリクエストの受信に応答して、記録記憶サブシステムから特定のデータ記録を検索することを1つまたは複数のコンピューティング装置が実行することをさらに含む第6項に記載の方法。
17
1組のノードのうち特定のノードが、(a)プロバイダ網で実装されるデータベースサービスのデータベーステーブルの少なくとも一部分、または(b)プロバイダ網で実装される記憶サービスの記憶オブジェクトの少なくとも一部分のいずれかを含む第6項に記載の方法。
18
1つまたは複数のプロセッサで実行された場合、マルチテナント型ストリーム管理サービスの制御ノードを実装するプログラム指令を保存する非一過性コンピュータアクセス可能記憶媒体であって、制御ノードが、
1つまたは複数のデータプロデューサによって発生する複数のデータ記録からなる特定のデータストリームを初期化する要求を受領するよう構成され、
特定のデータストリームと関連するパーティション分割方針の少なくとも一部分に基づいて、記録検索サブシステムを含む、特定のデータストリーム用の1つまたは複数のサブシステムを構成するために使用される1つまたは複数のパラメータを決定するよう構成されて、1つまたは複数のパラメータがノードの初期値のインスタンスを記録検索システムに生成することを含み、
記録検索サブシステムの特定のノードに使用される1つまたは複数の資源を特定するよう構成されて、特定のノードが非順次アクセスパターンを可能にする第1の検索インターフェース及び順次アクセスパターンが可能な第2の検索インターフェースを含む複数のプログラムによる記録検索インターフェースを実装するよう構成されて、
1つまたは複数の資源を用いて記録検索サブシステムの特定のノードを構成するよう構成される記憶媒体。
19
1つまたは複数のサブシステムが特定のデータストリームのデータ記録を受信するよう構成することが可能な1つまたは複数のノードを備える記録取得サブシステム及び選択された1組の記憶場所でストリームのデータ記録を保存するよう構成することが可能な記録記憶サブシステムを含む第18項に記載の非一過性コンピュータアクセス可能記憶媒体。
20
記録取得サブシステム、記録記憶サブシステム、及び記録検索サブシステムのうちの少なくとも1つのサブシステムが冗長グループのメンバとして構成される複数のノードを備え、(a)1組のストリームのデータ記録上で作動するよう割り当てられている1つまたは複数の主ノード及び(b)1つまたは複数のトリガーイベントに応答して主要な役割を装うよう構成される1つまたは複数の非主ノードを冗長グループが備える第19項に記載の非一過性コンピュータアクセス可能記憶媒体。
21
記録取得サブシステム、記録記憶サブシステム、または記録検索サブシステムのうちの少なくとも1つのノードがプロバイダ網で実装される仮想化コンピューティングサービスのコンピュートインスタンスの構成要素を含む第19項に記載の非一過性コンピュータアクセス可能記憶媒体。
22
1つまたは複数のデータプロデューサが、(a)コンピューティング装置のログ構成部品、(b)ソーシャルメディアアプリケーション、(c)コンピューティング装置の監視代理人、(d)センサデバイス、(e)携帯電話、または(f)タブレットコンピュータを1つまたは複数備える第19項に記載の非一過性コンピュータアクセス可能記憶媒体。
例示的コンピュータシステム
少なくともいくつかの実施形態では、SMSサブシステム(例えば、取得、記憶、検索、及び制御サブシステム)ならびにSPSワーカー及び制御ノードの構成要素を実装する技術を含む、本明細書に記載の1つまたは複数の技術の一部またはすべてを実装するサーバは、1つまたは複数のコンピュータアクセス可能な媒体にアクセスすることを含むまたはアクセスするよう構成されている汎用コンピュータシステムを含んでもよい。図30はこのような汎用コンピューティング装置9000を示す。図示の実施形態では、コンピューティング装置9000は、入力/出力(I/O)インターフェース9030を介してシステムメモリ9020に結合する1つまたは複数のプロセッサ9010を含む。さらに、コンピューティング装置9000はI/Oインターフェース9030に結合するネットワークインターフェース9040を含む。
種々の実施形態では、コンピューティング装置9000は1つのプロセッサ9010を含む単一プロセッサシステムまたはいくつかのプロセッサ9010(例えば、2個、4個、8個または他の適切な数)を含むマルチプロセッサシステムであってよい。プロセッサ9010は、命令を実行可能な任意の適切なプロセッサであってもよい。例えば、種々の実施形態では、プロセッサ9010は、x86、PowerPC、SPARC、またはMIPS ISAあるいはいずれかの他の適切なISAなど、任意の様々なインストラクションセットアーキテクチャ(ISA)を実装する汎用または組み込みプロセッサであってよい。マルチプロセッサシステムでは、各プロセッサ9010は一般に、ただし必然ではなく、同じISAを実装することができる。いくつかの実施形態では、グラフィックスプロセッシングユニット(GPU)は、代わりに、または追加的に、従来型プロセッサを使用してもよい。
システムメモリ9020はプロセッサ9010がアクセス可能な命令及びデータを保存するよう構成することができる。種々の実施形態では、システムメモリ9020は、スタティックランダムアクセスメモリ(SRAM)、同期式動的RAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなど、任意の適切なメモリ技術を用いて実装することができる。図示の実施形態では、上述の方法、技術、及びデータなど1つまたは複数の所望の機能を実装するプログラム命令及びデータが、コード9025及びデータ9026としてシステムメモリ9020内に記憶されているよう示される。
一実施形態では、I/Oインターフェース9030はプロセッサ9010、システムメモリ9020及びネットワークインターフェース9040またはデータオブジェクトパーティションの物理複製を保存するために使用される種々のタイプの持続性及び/または揮発性記憶装置など他の周辺インターフェースを含む装置内の任意の周辺デバイスの間でI/Oトラフィックを調整するよう構成されてもよい。いくつかの実施形態では、I/Oインターフェース9030は任意の必要なプロトコル、タイミングまたは他のデータ変換を実行して、データ信号をある構成要素(例えば、システムメモリ9020)から他の構成要素(例えばプロセッサ9010)の使用に適切なフォーマットに変換することができる。いくつかの実施形態では、I/Oインターフェース9030は、例えば、ペリフェラルコンポーネントインタコネクト(PCI)バスまたはユニバーサルシリアルバス(USB)標準の変形など種々のタイプの周辺バスを介して取り付けられたデバイスに対する対応を含んでもよい。いくつかの実施形態では、I/Oインターフェース9030の機能は、例えば、ノースブリッジ及びサウスブリッジなど2つ以上の分離した構成要素に分割されてもよい。また、いくつかの実施形態では、システムメモリ9020に対するインターフェースなど一部またはすべてのI/Oインターフェース9030の機能は、プロセッサ9010に直接、組み入れられてもよい。
ネットワークインターフェース9040はデータがコンピューティング装置9000及び例えば、図1〜図29に示す他のコンピュータシステムまたはデバイスなど、1つまたは複数のネットワーク9050に取り付けられた他のデバイス9060間で交換されても良いように構成されてもよい。種々の実施形態では、ネットワークインターフェース9040は、例えば、イーサネット(登録商標)網のタイプなど任意の適切な優先または無線一般データ網を介して通信をサポートすることができる。さらに、ネットワークインターフェース9040は、アナログ音声網またはデジタルファイバ通信網などの遠距離通信網/電話網、Fibre Channel SANなどの記憶領域網、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介して、通信網をサポートすることができる。
いくつかの実施形態では、システムメモリ9020は、対応する方法及び装置の実施形態を実施するために図1〜図29について上述したようにプログラム命令及びデータを保存するよう構成するコンピュータアクセス可能媒体の一実施形態であってもよい。しかし、他の実施形態では、プログラム命令及び/またはデータを、種々のタイプのコンピュータアクセス可能媒体に受信、送信、または保存することができる。一般的に言って、コンピュータアクセス可能媒体は、磁気媒体または光媒体などの非一過性記憶媒体または非一過性メモリ媒体、例えば、I/Oインターフェース9030を介してコンピューティング装置9000に結合するディスクまたはDVD/CDを含んでもよい。非一過性コンピュータアクセス可能記憶媒体はまた、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性媒体を含んでもよい。それらはコンピューティング装置9000のいくつかの実施形態にシステムメモリ9020または他の型のメモリとして含まれてもよい。さらに、コンピュータアクセス可能媒体は、ネットワーク及び/または無線リンクなどの通信媒体を介して伝送された、電気的信号、電磁的信号、またはデジタル信号などの伝送媒体または伝送信号を含んでもよく、ネットワークインターフェース9040を介して実装されたものでもよい。図30で例示される複数コンピューティング装置の一部またはすべては、種々の実施形態で、上述の機能を実装するために使用されてもよい。例えば、様々な種類のデバイス及びサーバ上で稼働するソフトウェア構成要素は協力して、機能を提供してもよい。いくつかの実施形態では、上述の機能の一部を、汎用コンピュータシステムを用いて実装することに加えてまたはその代わりに、記憶デバイス、ネットワークデバイス、または専用コンピュータシステムを用いて実装することができる。ここで使う「コンピューティング装置」という言葉は、少なくともこれらすべてのタイプのデバイスのことを言うが、これらのタイプのデバイスに限定されるわけではない。
結論
種々の実施形態は、コンピュータアクセス可能媒体に関する上述の説明にしたがって実装された命令及び/またはデータの受信、送信または保存をさらに含んでもよい。一般的に言って、コンピュータアクセス可能媒体は、例えば、ディスクまたはDVD/CD−ROM、RAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)などの揮発性媒体もしくは不揮発性媒体、ROMといった、磁気媒体または光媒体などの記憶媒体あるいはメモリ媒体と同様にネットワーク及び/または無線リンクなどの通信媒体を介して伝送された、電気的信号、電磁的信号またはデジタル信号などの伝送媒体あるいは伝送信号も含むことができる。
図に例示された及び明細書で説明された種々の方法は例示的な方法の実施形態を示す。その方法はソフトウェア、ハードウェアまたはそれらの組み合わせで実装することができる。方法の順序は変化する場合があり、種々の要素は追加、再順序付け、組み合わせ、省略、修正などがなされてもよい。
種々の修正形態及び変更形態がなされることは本開示の利益を有する当業者には明らかであろう。すべてのそのような修正形態及び変更形態を包含することは意図するものであり、したがって、上述の説明は限定的なものではなく例示的であるとみなされるべきである。