(57)【特許請求の範囲】
【請求項１】
分散データグリッドにおいて非同期タスク呼出をサポートするための方法であって、
複数のサーバノードを有する前記分散データグリッドにおけるサーバノードにて、クライアントから複数のタスクを受け取ることを含み、
前記複数のタスクは、前記複数のタスクが実行されるべき順序を規定する順序単位に関連付けられており、
前記方法は、さらに、
前記分散データグリッドによって保証される前記順序単位で規定される順序に従って、前記複数のサーバノードのうちの２つ以上の前記サーバノード上で前記複数のタスクを実行することを含み、
前記順序単位は、前記クライアントによって動的に変更できるように構成され、
前記方法は、さらに、
前記複数のタスクを実行するためのプライマリサーバとして、前記分散データグリッドにおける前記サーバノードを提供することと、
前記複数のタスクを実行するためのバックアップサーバとして、前記分散データグリッドにおける少なくとも１つの他のサーバを使用することと、
前記プライマリサーバが、前記複数のタスクの実行に関連付けられる結果を、前記クライアントに前記結果を返す前に、前記バックアップサーバに送ることと、
前記プライマリサーバがフェイルした場合、前記バックアップサーバが、前記複数のタスクが前記プライマリサーバによって実行されたかどうかチェックすることと、
前記複数のタスクが前記プライマリサーバによって実行された場合、前記バックアップサーバが、前記クライアントに前記結果を返すこととを含む、方法。
【請求項２】
前記分散データグリッドにおける前記複数のサーバノードが、前記順序単位をサポートするようピアツーピアクラスタリングプロトコルを使用することをさらに含む、請求項１に記載の方法。
【請求項３】
前記分散データグリッドにおける別のサーバノードにて少なくとも１つのタスクを受け取ることをさらに含み、前記少なくとも１つのタスクも前記順序単位に関連付けられ、
前記分散データグリッドによって保証される前記順序単位で規定される順序に従って、前記分散データグリッドにおける前記別のサーバノードにて前記少なくとも１つのタスクを実行することをさらに含む、請求項２に記載の方法。
【請求項４】
前記複数のタスクが前記プライマリサーバによって実行されていない場合、前記分散データグリッドによって保証される前記順序単位に基づいて、前記バックアップサーバが、いつ前記複数のタスクを実行するべきか判定することと、
前記バックアップサーバが、前記複数のタスクを実行した後に前記クライアントに前記結果を返すこととをさらに含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
マシン読取可能な形態のプログラム命令を含むコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されると、請求項１〜４のいずれか１項に記載の方法を前記コンピュータシステムに行なわせる、コンピュータプログラム。
【請求項６】
分散データグリッドにおいて非同期タスク呼出をサポートするためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で実行される複数のサーバノードを有する分散データグリッドとを含み、
前記分散データグリッドは、前記分散データグリッドにおけるサーバノードにて、クライアントから複数のタスクを受け取ることを含むステップを行なうように動作し、
前記複数のタスクは、前記複数のタスクが実行されるべき順序を規定する順序単位に関連付けられており、
前記分散データグリッドは、さらに、
前記分散データグリッドによって保証される前記順序単位で規定される順序に従って、前記複数のサーバノードのうちの２つ以上の前記サーバノード上で前記複数のタスクを実行することを含むステップを行なうよう動作し、
前記順序単位は、前記クライアントが動的に変更できるように構成され、
前記サーバノードは、前記分散データグリッドにおける前記複数のタスクを実行するためのプライマリサーバであり、前記複数のタスクを実行するためのバックアップサーバとして、前記分散データグリッドにおける少なくとも１つの他のサーバが使用され、
前記プライマリサーバは、前記複数のタスクの実行に関連付けられる結果を、前記クライアントに前記結果を返す前に、前記バックアップサーバに送るよう動作し、
前記プライマリサーバがフェイルした場合、前記バックアップサーバは、前記複数のタスクが前記プライマリサーバによって実行されたかどうかチェックするよう動作し、
前記複数のタスクが前記プライマリサーバによって実行された場合、前記バックアップサーバは、前記クライアントに前記結果を返すよう動作する、システム。
【請求項７】
分散データグリッドにおいて非同期タスク呼出をサポートするためのシステムであって、
複数のサーバノードを有する前記分散データグリッドにおけるサーバノードにて、クライアントから複数のタスクを受け取るように構成される受取ユニットを備え、
前記複数のタスクは、前記複数のタスクが実行されるべき順序を規定する順序単位に関連付けられており、
前記システムは、前記分散データグリッドによって保証される前記順序単位で規定される順序に従って、前記複数のサーバノードのうちの２つ以上の前記サーバノード上で前記複数のタスクを実行するように構成される実行ユニットをさらに備え、
前記順序単位は、前記クライアントが動的に変更できるように構成され、
前記サーバノードは、前記分散データグリッドにおける前記複数のタスクを実行するためのプライマリサーバであり、前記複数のタスクを実行するためのバックアップサーバとして、前記分散データグリッドにおける少なくとも１つの他のサーバが使用され、
前記プライマリサーバは、前記複数のタスクの実行に関連付けられる結果を、前記クライアントに前記結果を返す前に、前記バックアップサーバに送るよう動作し、
前記プライマリサーバがフェイルした場合、前記バックアップサーバは、前記複数のタスクが前記プライマリサーバによって実行されたかどうかチェックするよう動作し、
前記複数のタスクが前記プライマリサーバによって実行された場合、前記バックアップサーバは、前記クライアントに前記結果を返すよう動作する、システム。
【請求項８】
前記分散データグリッドにおける前記複数のサーバノードは、前記順序単位をサポートするようピアツーピアクラスタリングプロトコルを使用する、請求項７に記載のシステム。
【請求項９】
前記分散データグリッドにおける別のサーバノードにて少なくとも１つのタスクが受け取られ、前記少なくとも１つのタスクも前記順序単位に関連付けられ、
前記分散データグリッドによって保証された前記順序単位で規定される順序に従って、前記分散データグリッドにおける前記別のサーバノードにて前記少なくとも１つのタスクが実行される、請求項８に記載のシステム。
【請求項１０】
前記バックアップサーバは、
前記複数のタスクが前記プライマリサーバによって実行されていない場合、前記分散データグリッドによって保証される前記順序単位に基づいて、いつ前記複数のタスクを実行するべきか判定することと、
前記複数のタスクを実行した後に前記クライアントに前記結果を返すこととを行うよう動作する、請求項７〜９のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文書の開示の一部は、著作権の保護下にある内容を含む。著作権所有者は、特許商標庁の特許ファイルまたはレコードに現れるので、誰でも当該特許文書または特許開示を複製することについて異議はないが、そうでなければ如何なる場合でもすべての著作権を留保する。
【０００２】
発明の分野
本発明は一般にコンピュータシステムに関し、特に、分散データグリッドにおいてタスク管理をサポートすることに関する。
【背景技術】
【０００３】
背景
現代のコンピューティングシステム、特に大組織およびエンタープライズによって使用されるコンピューティングシステムは、サイズおよび複雑性が増加し続けている。特に、インターネットアプリケーションのような領域では、何百万ものユーザが当該アプリケーションに同時にアクセスすることが可能であるべきであるとの期待が存在し、これは、実際上、ユーザによって生成および消費されるコンテンツの量とそのコンテンツに伴うトランザクションとの指数関数的な増加に結びつく。また、そのようなアクティビティにより、データベースおよびメタデータストアへのトランザクションコールの数が対応して増加することになり、当該需要に対応するキャパシティが限られることになる。これは、本発明の実施形態が対応することが意図される一般的な領域である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
複数のサーバノードを有する分散データグリッドにおいて非同期呼出をサポートし得るシステムおよび方法が本願明細書において記載される。システムは、分散データグリッドにおけるサーバノードがクライアントから１つ以上のタスクを受け取ることを可能にし、１つ以上のタスクは順序単位に関連付けられる。さらに、システムは、分散データグリッドによって保証される順序単位に基づいて、分散データグリッドにおける１つ以上のサーバノード上で１つ以上のタスクを実行し得る。
【図面の簡単な説明】
【０００５】
【図１】本発明のさまざまな実施形態に従ったデータグリッドクラスタの図である。
【図２】本発明の実施形態に従った、分散データグリッドにおけるプラグ可能関連付け／順序単位をサポートすることについての図を示す図である。
【図３】本発明の実施形態に従った、分散データグリッドにおける非同期呼出をサポートすることについての図を示す図である。
【図４】本発明の実施形態に従った、分散データグリッドにおける非同期メッセージ処理をサポートするための例示的なフローチャートを示す図である。
【図５】本発明の実施形態に従った、分散データグリッドにおいて委任可能フロー制御をサポートすることについての図を示す図である。
【図６】本発明の実施形態に従った、分散データグリッドにおけるバックログドレイニング（backlog draining）を実行することについての図を示す図である。
【図７】本発明の実施形態に従った、分散データグリッドに将来のタスクを提供することについての図を示す図である。
【図８】本発明の実施形態に従った、分散データグリッドにおける委任可能フロー制御をサポートするための例示的なフローチャートを示す図である。
【図９】本発明の実施形態に従った、分散データグリッドにおける非同期呼出をサポートするためのシステムのブロック図を示す図である。
【図１０】本発明の実施形態の機能的な構成を示す図である。
【図１１】コンピュータシステムで実現された本発明の実施形態によるコンピュータシステムを示す図である。
【発明を実施するための形態】
【０００６】
詳細な説明
分散データグリッドにおいて非同期呼出およびフロー制御のようなタスク管理をサポート可能であるシステムおよび方法が本願明細書において記載される。
【０００７】
分散データグリッド
ある実施形態に従うと、本願明細書において「データグリッドクラスタ」または「データグリッド」と称されるものは、分散化またはクラスタ化された環境内において情報および演算のような関連するオペレーションを管理するために一緒に作動する複数のコンピュータサーバを含むシステムである。データグリッドクラスタは、これらのサーバにわたって共有されるアプリケーションオブジェクトおよびデータを管理するために使用され得る。好ましくは、データグリッドクラスタは、低い応答時間、高いスループット、予測可能なスケーラビリティ、連続的な可用性、および情報信頼性を有するべきである。これらの能力の結果、データグリッドクラスタは、計算集中的である、ステートフルな中間層アプリケーションにおける使用に良好に好適である。たとえばオラクルコヒーレンスデータグリッドクラスタ（Oracle Coherence data grid cluster）といったデータグリッドクラスタのいくつかの例は、より高い性能を達成するために情報をインメモリで格納し得るとともに、複数のサーバにわたって同期される当該情報のコピーを保つ際に冗長性を用い得、これにより、サーバの故障の場合にシステムの回復性とデータの可用性とを保証する。たとえば、オラクルコヒーレンスデータグリッドクラスタは、信頼性があり、非常にスケーラブルなピアツーピアクラスタリングプロトコル上で、複製および分散（パーティション化）されたデータ管理およびキャッシングサービスを提供する。
【０００８】
インメモリデータグリッドは、共に作動する多くのサーバ上にデータを分散することによってデータストレージおよび管理能力を提供し得る。データグリッドは、アプリケーションサーバと同じ層において実行されるか、または、アプリケーションサーバ内において実行されるミドルウェアであり得る。データグリッドは、データの管理および処理を提供し得、さらに、データがグリッドにおいて位置するところに処理をプッシュし得る。さらに、インメモリデータグリッドは、サーバが作動しなくなるかまたはネットワークから切断される場合に、自動的かつトランスピアレントにフェイルオーバし、そのクラスタデータ管理サービスを再分散することによって単一障害点（single points of failure）を除去し得る。新しいサーバが追加されるか、または、フェイルしたサーバが再起動されると、当該サーバは自動的にクラスタに加わり、サービスはそれに戻るようにフェイルオーバされ得、トランスピアレントにクラスタロードを再分散する。データグリッドはさらに、ネットワークレベルのフォールトトレランス機能と、トランスピアレントなソフトリスタート（soft restart）能力とを含み得る。
【０００９】
実施形態に従うと、データグリッドクラスタの機能は、異なるクラスタサービスの使用に基づく。クラスタサービスは、ルートクラスタサービス、パーティション化されたキャッシュサービス、および、プロキシサービスを含み得る。データグリッドクラスタ内では、各クラスタノードは、クラスタサービスを提供および消費する両方の点において多くのクラスタサービスに参加し得る。各クラスタサービスは、データグリッドクラスタ内のサービスを一意に識別するサービス名と、クラスタサービスが行なうことが可能であることを定義するサービスタイプとを有する。データグリッドクラスタにおいて各クラスタノード上で実行されるルートクラスタサービス以外に、各サービスタイプの複数の名称付けされたインスタンス（multiple named instances）が存在し得る。サービスは、ユーザによって構成されるか、または、サービスのデフォルトセットとしてデータグリッドクラスタによって提供されるかのいずれかであり得る。
【００１０】
図１は、本発明のさまざまな実施形態に従ったデータグリッドクラスタの図である。図１に示されるように、たとえばオラクルコヒーレンスデータグリッドクラスタといったデータグリッドクラスタ１００は、さまざまなクラスタサービス１１１〜１１６が実行される（クラスタノード１０１〜１０６のような）複数のサーバノードを含む。さらに、キャッシュコンフィギュレーションファイル１１０は、データグリッドクラスタ１００を構成するために使用され得る。
【００１１】
プラグ可能関連付け／順序単位（Pluggable Association/Unit-of-Order）
本発明の実施形態に従うと、分散データグリッドは、分散データグリッドにおいてプラグ可能関連付け／順序単位をサポートし得る。
【００１２】
図２は、本発明の実施形態に従った、分散データグリッドにおけるプラグ可能関連付け／順序単位をサポートすることについての図を示す。図２に示されるように、分散データグリッド２０１は、たとえばサーバノード２１１〜２１６といった複数のサーバノードを含み得る。
【００１３】
さらに、分散データグリッド２０１は、たとえばクライアントからタスクＡ２２１〜Ｃ２２３といった１つ以上のタスクを受け取り得る。その後、分散データグリッド２０１は実行のために異なるサーバノードにタスクＡ２２１〜Ｃ２２３を配信し得る。たとえば、サーバノード２１１はタスクＡ２２１を実行することを担い得、サーバノード２１４はタスクＣ２２３を実行することを担い得、サーバノード２１５はタスクＢ２２２を実行することを担い得る。
【００１４】
図２に示されるように、コンピューティングシステム２００は、タスクＡ２２１〜Ｃ２２３が順序単位２２０（または関連付け）に関連付けられることを可能にする。本発明の実施形態に従うと、順序単位２２０は、更新のシステムワイドな順序を課さない（すなわち全順序スキーム（total ordering scheme）でない）半順序スキーム（partial-ordering scheme）である。たとえば、順序単位２２０は処理ストリームであり得、この特定のストリームにおけるすべてのオペレーションが順番に維持されているが、他のストリームにおいて発生するオペレーションに順序は暗示されない。
【００１５】
さらに、分散データグリッド２０１は、ピアツーピアクラスタリングプロトコルに基づいてサポートされ得る順序単位保証２１０を提供し得る。したがって、システムは、タスクＡ２２１〜Ｃ２２３は、タスクＡ２２１〜Ｃ２２３が分散データグリッド２０１における異なるサーバノード２１１〜２１６上にて受け取られて実行される場合であっても、順序単位２２０において規定されるように特定の順序で分散データグリッド２０１によって実行されるということを保証し得る。
【００１６】
さらに、順序単位２２０は、プラグ可能な態様で構成され得る、すなわち、クライアントは順序単位２２０を動的に変更し得る。
【００１７】
フェイルオーバの間の要求順序／因果律（Request Ordering/Causality）
本発明の実施形態に従うと、分散データグリッドは、フェイルオーバの間の要求順序／因果律をサポートし得る。
【００１８】
図３は、本発明の実施形態に従った、分散データグリッドにおける非同期呼出をサポートすることについての図を示す。図３に示されるように、分散データグリッド３０１におけるサーバノードは、クライアント３０２から受け取られる１つ以上のタスク３２１を実行することを担うプライマリサーバ３１１として機能し得る。
【００１９】
さらに、プライマリサーバ３１１は、たとえばバックアップサーバ３１２といった１つ以上のバックアップサーバノードに関連付けられる。図３に示されるように、プライマリサーバ３１１がクライアント３０２から受け取ったタスク３２１を実行した後、プライマリサーバ３１１は、バックアップサーバ３１２に異なる結果およびアーティファクト３２２を送り得る。本発明の実施形態に従うと、プライマリサーバ３１１は、バックアップサーバ３１２から受領確認を受け取ることを待ち、その後、クライアント３０２に結果３２４を返す。
【００２０】
図３に示されるように、プライマリサーバ３１１がフェイルした後、バックアップサーバ３１２が引き継ぎ、フェイルオーバタスク３２３を実行することを担い得る。
【００２１】
１つ以上のタスク３２１を実行する際に冪等性（idempotency）を保証するために、バックアップサーバ３１２は、フェイルオーバタスク３２３の各々がプライマリサーバ３１１によって既に実行されたかどうかチェックし得る。たとえば、特定のフェイルオーバタスク３２３がプライマリサーバ３１１によって既に実行されている場合、バックアップサーバ３１２は、クライアント３０２に結果３２４を直ちに返し得る。そうでなければ、バックアップサーバ３１２は、クライアントに結果３２４を返す前に、フェイルオーバタスク３２３を実行することに進み得る。
【００２２】
さらに、バックアップサーバ３１２は、順序単位保証３１０における要求順序に基づいて、いつフェイルオーバタスク３２３を実行するべきか判定し得る。言いかえれば、システムは、フェイルオーバが分散データグリッド３０１に発生する場合であっても、フェイルオーバタスク３２３がこれに従って正しい順序に実行されることを確実にし得る。
【００２３】
したがって、フェイルオーバシナリオの間に、コンピューティングシステム３００は、クライアント３０２から受け取られた１つ以上のタスク３２１を実行する際の冪等性と、分散データグリッド３０１において順序単位保証３１０によって提供されるような要求順序との両方を保証し得る。
【００２４】
図４は、本発明の実施形態に従った、分散データグリッドにおける非同期メッセージ処理をサポートするための例示的なフローチャートを示す。図４に示されるように、ステップ４０１では、複数のサーバノードを有する分散データグリッドにおけるサーバノードが１つ以上のタスクを受け取り得る。その後、ステップ４０２では、システムは、上記１つ以上のタスクが順序単位に関連付けられることを可能にする。さらに、ステップ４０３では、システムは、分散データグリッドによって保証される順序単位に基づいて、１つ以上の上記サーバノード上で上記１つ以上のタスクを実行し得る。
【００２５】
委任可能フロー制御（Delegatable Flow Control）
本発明の実施形態に従うと、分散データグリッドは、フロー制御メカニズムを外部クライアントに公開し得、委任可能フロー制御を可能にする。
【００２６】
図５は、本発明の実施形態に従った、分散データグリッドにおいて委任可能フロー制御をサポートすることについての図を示す。図５に示されるように、分散データグリッド５０１は、クライアント５０２から１つ以上のタスクを受け取り得る。さらに、分散データグリッド５０１は、受け取られたタスクを実行するために下位レイヤー（underlying layer）５０３を使用し得る。
【００２７】
たとえば、下位レイヤー５０３は、１つ以上の通信チャンネル５１０を使用して相互接続される複数のサーバノード５１１〜５１６を含み得る。したがって、タスクのバックログに寄与し得る分散データグリッド５０１における遅延は、タスクを処理するためのサーバノード５１１〜５１６に関する遅延と、タスクおよび結果のような関連するアーティファクトを伝送するための通信チャンネル５１０における遅延との両方を含み得る。
【００２８】
本発明の実施形態に従うと、コンピューティングシステム５００は、分散データグリッド５０１において下位レイヤー５０３におけるタスクの実行を制御するフロー制御メカニズム５２０をサポートする。
【００２９】
さらに、フロー制御メカニズム５２０は、データ交換要求を提出する非同期（ノンブロッキング）の方法をサポートする異なる通信機能を提供し得るとともに、下位のデータ伝送単位（たとえばメッセージまたはパケット）について制御フローを調整するためにさまざまなメカニズムを提供する。
【００３０】
図５に示されるように、フロー制御メカニズム５２０は、要求バッファリング能力５２２と、バックログ検出能力５２１とをサポートし得る。ここで、要求バッファリング５２２は、分散データグリッド５０１が、分散データグリッド５０１におけるさまざまなサーバノード５１１〜５１６において、入力される要求を分散してバッファリングすることが可能であるということを表わす。バックログ検出５２１は、下位レイヤー５０３において、（たとえば、ピアツーピアプロトコルを使用して）バッファリングされた要求を異なるサーバノード５１１〜５１６にて処理する際に、分散データグリッド５０１がバックログを検出することが可能であるということを表わす。
【００３１】
本発明の実施形態に従うと、システムは、クライアントがフロー制御メカニズム５２０と相互作用することを可能にする。フロー制御メカニズム５２０は、クライアント５０２についての通信エンドポイントのファセット（facet）を表わし得る（または提供し得る）。たとえば、オラクルコヒーレンスデータグリッドクラスタはクライアント５０２にアプリケーションプログラミングインターフェイス（ＡＰＩ）を提供し得る。したがって、クライアント５０２は、単純かつ簡便なインターフェイスを介して動的にフロー制御メカニズム５２０を構成し得る。
【００３２】
さらに、フロー制御メカニズム５２０は、クライアント５０２が、自動フロー制御を停止する（opt-out）こと（これは多くの場合において望ましい）と、手動で要求フローのレートを管理することとを可能にする。ここで、フロー制御メカニズム５２０は、「オートフラッシュ」のユースケース、および、呼出元自身が非同期通信フローの一部である場合のバックログに関連する遅延を伴う他のユースケースといったさまざまなシナリオにおいて、手動であることが好ましくあり得る。
【００３３】
さらに、コンピューティングシステム５００は、フロー制御メカニズム５２０においてしきい値をセットし得、しきい値は、分散データグリッド５０１において実行されるべきタスクのバックログを調整し得る。たとえば、分散データグリッド５０１において実行されるべきタスクのバックログの長さがしきい値を越える場合、分散データグリッド５０１は、上記タスクを実行するための要求を拒絶し得るか、または、後で実行されるようにタスクを再構成し得る（すなわち同期タスクを非同期タスクに再構成する）。
【００３４】
図６は、本発明の実施形態に従った、分散データグリッドにおけるバックログドレイニング（backlog draining）を実行することについての図を示す。図６に示されるように、クライアントに関連付けられる、コンピューティングシステム６００における呼出スレッド６０２は、分散データグリッド６０１における分散要求バッファ６１１に関する過剰なバックログ６２０をチェックし得る。
【００３５】
分散データグリッド６０１によって提供されるＡＰＩを使用して、クライアント（すなわち呼出スレッド６０２を介する）は、待機することができる時間の最大量（たとえば単位はミリ秒）６２１に関する情報を分散データグリッド６０１に提供し得る。
【００３６】
応答において、分散データグリッド６０１は、残りのタイムアウト６２２についての情報を呼出スレッド６０２に提供し得る。その後、分散データグリッド６０１は、バックログ６２０をドレインしつつ（すなわち、実行のために下位レイヤー６１０に要求バッファ６１１におけるバッファされたタスクを送りつつ）、呼出スレッド６０２をブロックし得る。
【００３７】
図７は、本発明の実施形態に従った、分散データグリッドに将来のタスクを提供することについての図を示す。図７に示されるように、クライアントに関連付けられるコンピューティングシステム７００における呼出スレッド７０２は、分散データグリッド７０１における分散要求バッファ７１１に関する過剰なバックログ７２０をチェックし得る。
【００３８】
分散データグリッド７０１によって提供されるＡＰＩを使用して、クライアント（すなわち呼出スレッド７０２を介する）は、バックログ７２０が異常な場合（たとえば下位の通信チャンネルが塞がれている場合）、たとえば継続（continuation）７０３といった将来のタスクを分散データグリッド７０１に提供し得る。
【００３９】
その後、バックログ７２０が正常に戻った後、分散データグリッド７０１は継続７０３を呼び出し得る。したがって、システムは、実行のために、下位レイヤー７１０に継続７０３に含まれるタスクを送り得る。
【００４０】
図７に示されるように、継続７０３は、呼出スレッド７０２と同時のスレッド７０４を含む任意のスレッド上に呼び出され得る。さらに、継続７０３は、呼出スレッド７０２自体によって呼び出され得る。
【００４１】
図８は、本発明の実施形態に従った、分散データグリッドにおける委任可能フロー制御をサポートするための例示的なフローチャートを示す。図８に示されるように、ステップ８０１では、システムは、分散データグリッドにおいてフロー制御メカニズムを提供し得、分散データグリッドは、１つ以上の通信チャンネルと相互接続される複数のサーバノードを含む。その後、ステップ８０２では、システムは、クライアントが分散データグリッドにおけるフロー制御メカニズムと相互作用することを可能にする。さらに、ステップ８０３では、クライアントから受け取られる１つ以上のタスクを構成および実行するために、システムはフロー制御メカニズムを使用することができる。
【００４２】
図９は、本発明の実施形態に従った、分散データグリッドにおける非同期呼出をサポートするためのシステム９００のブロック図を示す。システム９００のブロックは、本発明の原理を実施するために、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せによって実現され得る。当業者であれば、図９に記載されるブロックは、上述のように、本発明の原理を実現するために、組み合されてもよく、またはサブブロックへと分離されてもよいということが理解される。したがって、本願明細書における記載は、本願明細書において記載される機能ブロックの任意の可能な組合せ、分離、またはさらなる定義をサポートし得る。
【００４３】
図９に示されるように、分散データグリッドにおいて非同期呼出をサポートするためのシステム９００は、受取ユニット９１０、関連付ユニット９２０および実行ユニット９３０を含む。受取ユニット９１０は、複数のサーバノードを有する分散データグリッドにおけるサーバノードにて１つ以上のタスクを受け取り得る。関連付ユニット９２０は、順序単位に上記１つ以上のタスクを関連付け得る。実行ユニット９３０は、分散データグリッドによって保証される順序単位に基づいて、１つ以上の上記サーバノード上で上記１つ以上のタスクを実行し得る。
【００４４】
本発明の実施形態に従うと、順序単位保証をサポートするために、分散データグリッドにおける複数のサーバノードはピアツーピアクラスタリングプロトコルを使用する。
【００４５】
本発明の実施形態に従うと、分散データグリッドにおける別のサーバノードにて少なくとも１つのタスクが受け取られる。少なくとも１つのタスクも順序単位に関連付けられる。
【００４６】
本発明の実施形態に従うと、上記少なくとも１つのタスクは、分散データグリッドによって保証される順序単位に基づいて、分散データグリッドにおけるサーバノードにて実行される。
【００４７】
本発明の実施形態に従うと、サーバノードは、分散データグリッドにおける１つ以上のタスクを実行するためのプライマリサーバであり、分散データグリッドにおける少なくとも１つの別のサーバが、上記１つ以上のタスクを実行するためのバックアップサーバとして使用される。
【００４８】
本発明の実施形態に従うと、プライマリサーバは、１つ以上のタスクの実行に関連付けられる結果およびアーティファクトを、当該結果をクライアントに返す前に、バックアップサーバに送るよう動作する。
【００４９】
本発明の実施形態に従うと、プライマリサーバがフェイルした場合、バックアップサーバは、上記１つ以上のタスクがプライマリサーバによって実行されたかどうかをチェックするよう動作する。
【００５０】
本発明の実施形態に従うと、１つ以上のタスクがプライマリサーバによって実行されていた場合、バックアップサーバはクライアントに結果を返すよう動作する。
【００５１】
本発明の実施形態に従うと、バックアップサーバは、１つ以上のタスクがプライマリサーバによって実行されていない場合、分散データグリッドによって保証される順序単位に基づいて、１つ以上のタスクをいつ実行するべきか判定し、当該１つ以上のタスクを実行した後にクライアントに結果を返すよう動作する。
【００５２】
例示的なアプリケーションプログラミングインターフェイス（ＡＰＩ）
以下は、オラクルコヒーレンスデータグリッドクラスタのような分散データグリッドにおけるフロー制御メカニズムをクライアントが動的に構成することを可能にする例示的なアプリケーションプログラミングインターフェイス（ＡＰＩ）である。
【００５３】
【数１】
0006615761.tif 000002
【００５４】
FlowControlインターフェイスは、ノンブロッキングコールであり得るflush()ファンクションを含み得る。さらに、flush()ファンクションは、バッファされた非同期オペレーションが下位層に送られることを保証する。
【００５５】
さらに、FlowControlインターフェイスは、分散データグリッドにおける過剰なバックログをチェックし得るとともに特定された時間量までの間、呼出スレッドをブロックすることを可能にするdrainBacklog(long cMillis)ファンクションを含み得る。
【００５６】
上記において示されるように、drainBacklog(long cMillis)ファンクションは、待機時間の最大量（たとえば単位はミリ秒）を特定する入力パラメータであるcMillisを取り得る。代替的には、入力パラメータであるcMillisは、無限の待機時間を示す０として特定され得る。
【００５７】
その後、drainBacklog(long cMillis)ファンクションは、呼出スレッドに残りのタイムアウトを返し得る。代替的には、タイムアウトが発生した場合、drainBacklog(long cMillis)ファンクションは負の値を返し得る。さらに、drainBacklog(long cMillis)ファンクションは、バックログがもはや過剰ではないことを示す０を返し得る。
【００５８】
さらに、上記のFlowControlインターフェイスは、過剰なバックログをチェックするcheckBacklog(Continuation<Void> continueNormal)ファンクションを含み得る。checkBacklog(Continuation<Void> continueNormal)ファンクションは、下位の通信チャンネルがバックログされている場合、真（true）を返し得、または、そうでなければ偽（false）を返し得る。
【００５９】
下位の通信チャンネルが確かに塞がれている場合、checkBacklog(Continuation<Void> continueNormal)ファンクションは、たとえば入力パラメータであるcontinueNormalを使用して、将来のワーク（work）を提供し得る。
【００６０】
次いで、当該将来のワークであるcontinueNormalは、バックログが正常状態に低減された後、呼び出され得る。さらに、将来のワークであるcontinueNormalは、呼出スレッドと同時である任意のスレッドによってまたは呼出スレッド自身によって呼び出され得る。さらに、checkBacklog(Continuation<Void> continueNormal)ファンクションが真を返す場合にのみ、継続が呼び出される。
【００６１】
図１０を参照して、本発明の実施形態に従ったシステム１０００が示される。図１０は、システム１０００によって実現される機能的な構成の図を示す。システム１０００は、レシーバモジュール１０１０、ストレージモジュール１０２０、マネージャ１０３０およびタスク実行モジュール１０４０を含む。
【００６２】
レシーバモジュール１０１０は、複数のサーバノードを有する分散データグリッドにおけるサーバノードにて提供される。レシーバモジュール１０１０は１つ以上のタスクを受け取る。ストレージモジュール１０２０は順序単位を格納する。マネージャ１０３０は、受け取られた１つ以上のタスクが順序単位に関連付けられることを可能にする。タスク実行モジュール１０４０は、分散データグリッドによって保証される順序単位に基づいて、１つ以上のサーバノード上で１つ以上のタスクを実行する。
【００６３】
図１１は、周知のハードウェア要素を含むコンピュータシステム１１００の図を示す。すなわち、コンピュータシステム１１００は、中央処理装置（ＣＰＵ）１１１０、マウス１１２０、キーボード１１３０、ランダムアクセスメモリ（ＲＡＭ）１１４０、ハードディスク１１５０、ディスクドライブ１１６０、通信インターフェイス（Ｉ／Ｆ）１１７０、およびモニタ１１８０を含む。コンピュータシステム１１００は、システム１０００を構成するサーバノードとして機能し得る。
【００６４】
本発明の実施形態に従うと、レシーバモジュール１０１０、マネージャ１０３０、ストレージモジュール１０２０およびタスク実行モジュール１０４０は、１つ以上のコンピュータシステム１０００によって提供される。レシーバモジュール１０１０、マネージャ１０３０、ストレージモジュール１０２０およびタスク実行モジュール１０４０は、ＣＰＵ１０１０によって実現される。さらなる局面において、レシーバモジュール１０１０、マネージャ１０３０、ストレージモジュール１０２０およびタスク実行モジュール１０４０が実現されるように、１つより多いプロセッサが使用され得る。すなわち、レシーバモジュール１０１０、マネージャ１０３０、ストレージモジュール１０２０およびタスク実行モジュール１０４０のうちのいずれも互いから物理的にリモートであり得る。
【００６５】
さらに別の局面において、システム１０００は、レシーバモジュール１０１０、マネージャ１０３０、ストレージモジュール１０２０およびタスク実行モジュール１０４０として機能する複数のハードワイヤード回路を使用することにより実現され得る。
【００６６】
本発明は、１つ以上のプロセッサ、メモリ、および／または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【００６７】
いくつかの実施形態では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピーディスク（登録商標）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ素子、磁気または光学カード、ナノシステム（分子メモリＩＣを含む）、または命令および／またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【００６８】
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記修正例および変形例は、記載された機能の任意の関連する組合せを含む。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。
【図１】
0006615761.tif 000003
【図２】
0006615761.tif 000004
【図３】
0006615761.tif 000005
【図４】
0006615761.tif 000006
【図５】
0006615761.tif 000007
【図６】
0006615761.tif 000008
【図７】
0006615761.tif 000009
【図８】
0006615761.tif 000010
【図９】
0006615761.tif 000011
【図１０】
0006615761.tif 000012
【図１１】
0006615761.tif 000013