(57)【特許請求の範囲】
【請求項１】
１つ以上のマイクロプロセッサ上で動作する分散型データグリッドにおけるメッセージ前処理をサポートする方法であって、
前記分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付けるステップと、
入出力（Ｉ／Ｏ）スレッドを使用して前記メッセージバスで１つ以上の入力メッセージを受け取るステップと、
前記Ｉ／Ｏスレッドを使用して前記入力メッセージの各々を逆シリアル化するステップと、
前記分散型データグリッドにおける前記サービススレッドへ前記入力メッセージの各々が運ばれる前に、前記Ｉ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理するステップとを備える、方法。
【請求項２】
入力メッセージに対応付けられた前処理方法を前記Ｉ／Ｏスレッドを介して実行するステップをさらに備える、請求項１に記載の方法。
【請求項３】
入力メッセージを完全に前記Ｉ／Ｏスレッド上で取扱い、前記サービススレッドの使用を回避するステップをさらに備える、請求項１または２に記載の方法。
【請求項４】
前記サービススレッド上の前記１つ以上の前処理された入力メッセージを処理するステップをさらに備える、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記入力メッセージを送るサービスリクエスターに対する応答を送るステップをさらに備える、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記Ｉ／Ｏスレッドと前記サービススレッドとの間で前記１つ以上の入力メッセージを移動させるコンテキストスイッチを回避するステップをさらに備える、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記メッセージバスをリモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに基づかせるステップをさらに備える、請求項１から６のいずれか１項に記載の方法。
【請求項８】
スレッドプールを前記メッセージバスに対応付けるステップをさらに備え、前記スレッドプールは複数のＩ／Ｏスレッドを含む、請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記複数のＩ／Ｏスレッド上の前記１つ以上の入力メッセージを並列に処理するステップをさらに備える、請求項８に記載の方法。
【請求項１０】
１つ以上のコンピュータシステムによって実行されると、前記１つ以上のコンピュータシステムに請求項１から９のいずれか１項に記載の方法を行なわせるマシン可読命令を備えるコンピュータプログラム。
【請求項１１】
分散型データグリッドにおけるメッセージ前処理のためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で実行される前記分散型データグリッドにおけるクラスタメンバとを備え、前記クラスタメンバは、
前記分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付け、
入出力（Ｉ／Ｏ）スレッドを使用して前記メッセージバスで１つ以上の入力メッセージを受け取り、
前記Ｉ／Ｏスレッドを使用して前記入力メッセージの各々を逆シリアル化し、
前記入力メッセージの各々が前記分散型データグリッドにおける前記サービススレッドへ運ばれる前に、前記Ｉ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理するように動作する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部には、著作権の保護対象となる資料が含まれている。著作権者は、特許商標庁の特許ファイルまたは記録に記載されたとおりのものについては、特許文献または特許の開示を他人が複製することに異議を唱えないが、他の点については、全ての著作権を確保している。
【０００２】
発明の分野 
本発明は、概してコンピュータシステムに関し、特に分散型データグリッドに関する。
【背景技術】
【０００３】
背景
特に大きな組織および企業よって採用される現代のコンピューティングシステムは、規模および複雑さが増し続けている。インターネットアプリケーションなどの領域においては、数百万人のユーザーがそのアプリケーションに同時にアクセス可能であるべきという期待がある。これは、ユーザーによって生成および消費されるコンテンツの量ならびにそのコンテンツに関連するトランザクションの指数関数的な増加に効果的に導かれる。また、このような活動は、データベースおよびメタデータストアへのトランザクションコールの数の対応する増加を引き起こし、その要求の受け入れ容量には限界がある。
【０００４】
さらに、現代のアプリケーションは、コスト、スケール、ならびにアプリケーションの信頼性および保守性の課題に対する解決策として、スケールアウトアーキテクチャを包含した。この手法は、巨大化してコストのかかる最高位のサーバーの使用に典型的に依存する従来の手法に対して多くの利点を提供する。しかしながら、この手法では、一般に、入出力（Ｉ／Ｏ）ボトルネックという１つの持続的かつ困難な制限に悩まされる。したがって、現代の高度な分散型システムの性能および効率は、すべてのシステム構成要素を接続する通信機構によって抑制され得る。
【０００５】
これは、本発明の実施形態によって対処することが意図される一般的な領域である。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
本明細書では、分散型データグリッドにおけるメッセージ前処理をサポートすることができるシステムおよび方法について記載する。システムは、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付けることができる。さらに、システムは、入出力（Ｉ／Ｏ）スレッドを使用し、メッセージバスで１つ以上の入力メッセージを受け取り、前記入力メッセージの各々が分散型データグリッドにおけるサービススレッドに運ばれる前にＩ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理することができる。加えて、システムは、アドレス指定されたサービスへインバウンドメッセージが運ばれる前にインバウンドメッセージを逆シリアル化するために入出力（Ｉ／Ｏ）スレッドのプールを利用することができ、メッセージタイプが識別されて分散型データグリッド内のスレッドプールにオフロードされる前に、シングルスレッドの方法ですべてのメッセージを逆シリアル化することによって、引き起こされるボトルネックを除去することができる。
【０００７】
本発明の実施形態は、分散型データグリッドにおけるメッセージ前処理をサポートする装置を提供し、装置は、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付ける手段と、入出力（Ｉ／Ｏ）スレッドを使用してメッセージバスで１つ以上の入力メッセージを受け取る手段と、前記入力メッセージの各々が分散型データグリッドにおける前記サービススレッドに運ばれる前にＩ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理する手段とを備える。
【０００８】
例において、装置は、Ｉ／Ｏスレッドを介して、前記入力メッセージに対応付けられた前処理方法を実行する手段をさらに備える。
【０００９】
例において、装置は、Ｉ／Ｏスレッドを使用して前記入力メッセージの各々を逆シリアル化する手段をさらに備える。
【００１０】
例において、装置は、前記入力メッセージを完全にＩ／Ｏスレッド上で取り扱い、サービススレッドの使用を回避する手段をさらに備える。
【００１１】
例において、装置は、サービススレッド上の前記１つ以上の前処理された入力メッセージを処理する手段をさらに備える。
【００１２】
例において、装置は、前記入力メッセージを送るサービスリクエスターに対する応答を送る手段をさらに備える。
【００１３】
例において、装置は、Ｉ／Ｏスレッドとサービススレッドとの間で前記１つ以上の入力メッセージを移動させるコンテキストスイッチを回避する手段をさらに備える。
【００１４】
例において、装置は、メッセージバスをリモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに基づかせる手段をさらに備える。
【００１５】
例において、装置は、スレッドプールをメッセージバスに対応付ける手段をさらに備え、スレッドプールは複数のＩ／Ｏスレッドを含む。
【００１６】
例において、装置は、複数のＩ／Ｏスレッド上で前記１つ以上の入力メッセージを並列に処理する手段をさらに備える。
【００１７】
本発明の他の実施形態は、分散型データグリッドにおけるメッセージ前処理のためのシステムを提供し、システムは、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付けるように構成された第１対応付けユニットと、入出力（Ｉ／Ｏ）スレッドを使用してメッセージバスで１つ以上の入力メッセージを受け取るように構成された受け取りユニットと、前記入力メッセージの各々が分散型データグリッドにおける前記サービススレッドに運ばれる前にＩ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理するように構成された前処理ユニットとを備える。
【００１８】
例において、システムは、Ｉ／Ｏスレッドを介して、前記入力メッセージに対応付けられた前処理方法を実行するように構成された実行ユニットをさらに備える。
【００１９】
例において、システムは、Ｉ／Ｏスレッドを使用して前記入力メッセージの各々を逆シリアル化するように構成された逆シリアル化ユニットをさらに備える。
【００２０】
例において、システムは、Ｉ／Ｏスレッド上で完全に前記入力メッセージを取り扱い、サービススレッドの使用を回避するように構成された取り扱いユニットをさらに備える。
【００２１】
例において、システムは、サービススレッド上で前記１つ以上の前処理された入力メッセージを処理するように構成された第１処理ユニットをさらに備える。
【００２２】
例において、システムは、前記入力メッセージを送るサービスリクエスターへの応答を送るように構成された送信ユニットをさらに備える。
【００２３】
例において、システムは、Ｉ／Ｏスレッドとサービススレッドとの間で前記１つ以上の入力メッセージを移動させるコンテキストスイッチを回避するように構成されたコンテキストスイッチ回避ユニットをさらに備える。
【００２４】
例において、メッセージバスは、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに基づく。
【００２５】
例において、システムは、スレッドプールをメッセージバスに対応付けるように構成された第２対応付けユニットをさらに備え、スレッドプールは複数のＩ／Ｏスレッドを含む。
【００２６】
例において、システムは、複数のＩ／Ｏスレッド上で前記１つ以上の入力メッセージを並列に処理するように構成された第２処理ユニットをさらに備える。
【図面の簡単な説明】
【００２７】
【図１】分散型データグリッドにおけるデータグラム層に基づくメッセージ移送のサポートを示す図である。
【図２】本発明の実施形態に従う、分散型データグリッドにおけるメッセージバスの提供を示す図である。
【図３】分散型データグリッドにおけるメッセージングをサポートするためのＴＣＰ／ＩＰベースのトランスポート層の使用を示す図である。
【図４】本発明の実施形態に従う、分散型データグリッドにおけるメッセージングをサポートするためのＲＤＭＡベースのトランスポート層の使用を示す図である。
【図５】本発明の実施形態に従う、分散型データグリッドにおけるサービスごとのバスのサポートを示す図である。
【図６】本発明の実施形態に従う、分散型データグリッドにおけるサービスごとのバスのサポートのための例示的なフローチャートを示す図である。
【図７】本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化のサポートを示す図である。
【図８】本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化をサポートするための例示的なフローチャートを示す図である。
【図９】本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のサポートを示す図である。
【図１０】本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理をサポートするための例示的なフローチャートを示す図である。
【図１１】本発明の実施形態に従う、システムの概略機能ブロック図を示す図である。
【図１２】本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のためのシステムの機能ブロック図を示す図である。
【発明を実施するための形態】
【００２８】
詳細な説明
本発明は、同様の参照符号が同様の要素を示す添付の図面において示されるが、これらは例示であって限定ではない。なお、本開示における「ある(an)」実施形態、「１つの（one）」実施形態、または「一部の（some）」実施形態への参照は、必ずしも同じ実施形態への参照とは限らず、このような参照は少なくとも１つを意味する。
【００２９】
以下の本発明の実施形態の記載では、分散型データグリッドの例としてCoherence分散型データグリッドを使用する。限定されることなく他のタイプの分散型データグリッドを使用できることは、当業者にとって明らかである。さらに、以下の本発明の記載では、メッセージング機構の例としてExabusメッセージング機構を使用する。限定されることなく他のタイプのメッセージング機構を使用できることは、当業者にとって明らかである。
【００３０】
本明細書では、分散型データグリッドクラスタにおけるスケーラブルなメッセージバスをサポートすることができるシステムおよび方法について記載する。スケーラブルなメッセージバスは、各サービスに独自のバス（トランスポートエンジン）を設けることができる。分散型データグリッドは、アドレス指定されたサービスへインバウンドメッセージが運ばれる前にインバウンドメッセージを逆シリアル化するために入出力（Ｉ／Ｏ）スレッドのプールを利用することができ、メッセージタイプが識別されて分散型データグリッド内のスレッドプールにオフロードされる前に、シングルスレッドの方法ですべてのメッセージを逆シリアル化することによって、引き起こされるボトルネックを除去することができる。加えて、分散型データグリッドは、スケーラブルなメッセージバスのためにＩ／Ｏスレッド上で入力メッセージを前処理させることができる。
【００３１】
データグリッドの分散
実施形態に従えば、本明細書でいう「データグリッドクラスタ」または「データグリッド」は、分散型またはクラスタ化環境内における情報および計算などの関連動作を管理するために協働する複数のコンピュータサーバーを備えるシステムである。データグリッドクラスタは、サーバー間で共有されるアプリケーションオブジェクトおよびデータを管理するために使用することができる。好ましくは、データグリッドクラスタは、短い応答時間、高いスループット、予測可能なスケーラビリティ、連続的な可用性、および情報信頼性を有するべきである。これらの性能の結果として、データグリッドクラスタは、計算集約的であってステートフルな中間層アプリケーションにおける使用によく適したものとなる。データグリッドクラスタの一部の例、たとえば、Oracle Coherenceデータグリッドクラスタは、高い性能を実現するために情報をインメモリで記憶することができ、複数のサーバー間でその情報のコピーを同期して維持する冗長性を採用することができ、サーバー障害時におけるシステムの回復性およびデータの可用性が確保される。たとえば、Coherenceは、信頼性が高く高度にスケーラブルなピアツーピアクラスタ化プロトコルの上部において、複製および分散（区分化）したデータ管理およびキャッシングサービスを提供する。
【００３２】
インメモリデータグリッドは、協働する複数のサーバーにわたってデータを分散させることによってデータ記憶および管理性能を提供することができる。データグリッドは、アプリケーションサーバーと同じティアにおいて、またはアプリケーションサーバー内において実行されるミドルウェアであり得る。これは、データの管理および処理を提供することができるとともに、グリッドにおいてデータが位置する箇所に対して処理を実行することもできる。加えて、インメモリデータグリッドは、自動的かつ透過的にフェイルオーバーし、サーバーが動作不能になった場合またはサーバーがネットワークから切断された場合にそのクラスタ化データ管理サービスを再分散させることにより、単一障害点を排除することができる。新しいサーバーが加えられた場合、または障害の起こったサーバーが再始動した場合、クラスタを自動的に結合することができ、サービスをそこにフェールバックさせることができ、透過的にクラスタ負荷が再分散される。データグリッドは、ネットワークレベルフォルトトレランス特徴および透過的な再起動能力も含むことができる。
【００３３】
実施形態に従えば、データグリッドクラスタの機能性は、異なるクラスタサービスの使用に基づいている。クラスタサービスは、ルートクラスタサービス、区分化キャッシュサービス、およびプロキシサービスを含み得る。データグリッドクラスタ内において、各クラスタノードは、クラスタサービスの提供および消費の両方の面において、複数のクラスタサービスに関わることができる。各クラスタサービスは、データグリッドクラスタ内のサービスを固有に識別するサービス名と、クラスタサービスができることを規定するサービスタイプとを有する。データグリッドクラスタにおける各クラスタノード上でルートクラスタサービスが実行される他、各サービスタイプには複数の名を持つインスタンスがあってもよい。サービスは、ユーザーによって構成され得る、またはサービスのデフォルトセットとしてデータグリッドクラスタによって提供され得る。
【００３４】
図１は、分散型データグリッドにおけるデータグラム層に基づくメッセージ移送のサポートを示す図である。図１に示されるように、分散型データグリッド１００におけるクラスタメンバ１０１は、１つ以上のクライアント／サービススレッド１０２を含み得る。クラスタメンバ１０１上のクライアント／サービススレッド１０２は、ユーザーデータグラムプロトコル（ＵＤＰ）を使用し、たとえばイーサネット（登録商標）ネットワーク１１０などのネットワークを通じて分散型データグリッド１００における他のクラスタメンバにメッセージを送ることができる。
【００３５】
本発明の実施形態に従えば、クラスタメンバ１０１は、分散型データグリッド１００における他のクラスタメンバへメッセージを送るために、および応答メッセージを受け取るために、パケット化ロジック、パケット再送信ロジック、およびAck/Nackロジックなどの異なるロジックを採用し得る。
【００３６】
加えて、上記のメッセージング処理には、複数のコンテキストスイッチが伴い得る。図１に示されるように、クライアント／サービススレッド１０２は、まずメッセージをパブリッシャー１０３に送り得る。そして、パブリッシャー１０３は、メッセージをスピーカー１０４に転送し得る。スピーカー１０４は、メッセージをネットワーク１１０に送る役割を有する。
【００３７】
さらに、分散型データグリッド１００におけるクラスタメンバ１０１は、１つ以上のリスナー１０５を使用して応答メッセージを受け取り得る。リスナー１０５は、受け取ったメッセージをレシーバー１０６に転送し得る。そして、レシーバー１０６は、受け取ったメッセージをクライアント／サービススレッド１０２に転送し、任意でパブリッシャー１０３に通知し得る。
【００３８】
スケーラブルなメッセージバス
本発明の実施形態に従えば、スケーラブルなメッセージバスは、様々なレベルでＩ／Ｏボトルネックを取り除くために使用され得る。
【００３９】
図２は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージバスの提供を示す図である。図２に示されるように、クラスタメンバ２０１は、分散型データグリッド２００における、たとえばＪＡＶＡ（登録商標）仮想マシンなどの仮想マシン２１０上で実行され得る。クラスタメンバ２０１は、１つ以上のサービス２１１を伴い得る。サービス２１１は、メッセージングのために１つ以上のメッセージバス２１２を使用し得る。
【００４０】
本発明の実施形態に従えば、メッセージバス２１２は、マルチポイントアドレス指定および信頼性の高い順次伝送を伴うバイナリ低レベルメッセージトランスポート層に基づき得る。また、メッセージバスは、純粋なＪａｖａ（登録商標）の実施および／またはネイティブ実施に基づき得るとともに、非同期性事象ベースのプログラミングモデルを採用し得る。
【００４１】
さらに、メッセージバス２１２は、たとえばOracle ExaLogicエンジニアードシステムにおけるExabusなどのネットワーキングハードウェアおよびソフトウェアサブシステムを使用してサポートされ得る。メッセージバスは、アプリケーションの実行をより速くするのみならず、アプリケーションの実行をより効率的にし得る。また、メッセージバスは、数千個のプロセッサコアおよび数テラバイトのメモリを伴う非常に大きなスケールの展開において、および実質的に全てのビジネス用途について、アプリケーションを一貫して予測可能に実行させ得る。
【００４２】
本発明の実施形態に従えば、メッセージバス２１２の各々は、プロバイダベースのトランスポート層であり得て、これはJRockit/HotSpotなどの仮想マシン２１０におけるメッセージバスプロバイダ２０２を使用することによってサポートされ得る。
【００４３】
加えて、メッセージバスプロバイダ２０２は、プラガブルプロバイダベースのフレームワークに基づき得る。たとえば、メッセージバスプロバイダ２０２は、ＴＣＰ／ＳＤＰに基づくSocketBus、およびInfiniband RDMAに基づくInfiniBusなどの異なるメッセージバスをサポートし得る。
【００４４】
本発明の実施形態に従えば、メッセージバスプロバイダは、複数のバスプロトコルからバスプロトコルを選択するために単一のスイッチを使用し得る。たとえば、Coherenceにおいて、システムは以下の構成ファイルにおいて単一のスイッチを指定し得る。
【００４５】
【数１】
0006276273.tif 000002
【００４６】
加えて、Coherenceにおいて、システムは、以下のバスのうちの１つを選択するために単一のスイッチを使用し得る。
【００４７】
ｔｍｂ：TCP MessageBus
ｓｄｍｂ：SDP MessageBus
ｉｍｂ：Infiniband MessageBus 
データグラム：従来のＵＤＰ（デフォルト）
【００４８】
したがって、メッセージバス２１２は、分散型データグリッド２００におけるノード間のスケーラビリティを向上させ得るとともに、分散型データグリッド２００をプロトコル非依存にし得る。たとえば、メッセージバス２１２を使用して、分散型データグリッド２００は、効果的に多数のコアを利用し、メッセージングの同時実行を向上させ、スループットを高めてレイテンシーを減少させ得る。また、メッセージバス２１２は、分散型データグリッド２００にコンテキストスイッチを最小化させ、ゼロコピーを利用する。
【００４９】
本発明の実施形態に従えば、システムは、メッセージバスに障害が起こった場合にクラスタメンバに対する停止検知を発動させ得る。
【００５０】
図３は、分散型データグリッドにおけるメッセージングをサポートするためのＴＣＰ／ＩＰベースのトランスポート層の使用を示す図である。図３に示されるように、分散型コンピューティング環境３００においてアプリケーション３０１からアプリケーション３０２へメッセージを送るために、メッセージは、ローカルマシン上のアプリケーションバッファー３０３、ＴＣＰ／ＩＰトランスポート層３０５、およびカーネル層３０６を通る必要があり得る。そして、メッセージは、リモートマシンにおけるカーネル層３０６およびＴＣＰ／ＩＰトランスポート層３０５を介して、アプリケーションバッファー３０４においてリモートマシンで受け取られ得る。
【００５１】
図４は、分散型データグリッドにおけるメッセージングをサポートするためのＲＤＭＡベースのトランスポート層の使用を示す図である。図４に示されるように、システムは、ＲＤＭＡベースのトランスポート層に基づき、ローカルマシン上のアプリケーション４０１からリモートマシン上のアプリケーション４０１へ直接メッセージを送ることができる。
【００５２】
サービスごとのバス
本発明の実施形態に従えば、スケーラブルなメッセージバスは、独自のバス（またはトランスポートエンジン）をサービスに設け得る。
【００５３】
図５は、本発明の実施形態に従う、分散型データグリッドにおける様々なサービスのためのスケーラブルなメッセージバスのサポートを示す図である。図５に示されるように、分散型データグリッド５００は、たとえばクラスタメンバ５０１〜５０４などの複数のクラスタメンバを含み得る。
【００５４】
さらに、各クラスタメンバは異なるサービスを含み得て、サービスの各々は別個のメッセージバスに対応付けられ得る。たとえば、クラスタメンバ５０１は、区分キャッシュサービス５１１〜５１２および呼出しサービス５１３を含み得て、これらはメッセージバス５１４〜５１６に対応付けられ得る。クラスタメンバ５０２は、区分キャッシュサービス５２１〜５２２および呼出しサービス５２３を含み得て、これらはメッセージバス５２４〜５２６に対応付けられ得る。クラスタメンバ５０３は、区分キャッシュサービス５３１〜５３２および呼出しサービス５３３を含み得て、これらはメッセージバス５３４〜５３６に対応付けられ得る。クラスタメンバ５０４は、区分キャッシュサービス５４１〜５４２および呼出しサービス５４３を含み得て、これらはメッセージバス５４４〜５４６に対応付けられ得る。
【００５５】
加えて、ネットワーク５１０は、分散型データグリッド５００における異なるクラスタメンバ５０１〜５０４上の異なるメッセージバスを接続し得る。たとえば、ネットワーク５１０は、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに基づき得る。また、ネットワーク５１０は、必要な場合、ユーザーデータグラムプロトコル（ＵＤＰ）にフォールバックし得る。
【００５６】
本発明の実施形態に従えば、システムは、分散型データグリッドにおける異なるクラスタメンバ間でのデータ転送をサポートするために複数のメッセージバスを使用し得る。加えて、システムは、分散型データグリッドにおけるクラスタ化をサポートするためにデータグラム層５２０を使用し得るとともに、データ転送のために分散型データグリッドにおけるデータグラム層５２０をバイパスし得る。
【００５７】
したがって、システムは、エンドユーザーによって構成されたサービスの数に比してＣＰＵ利用を高めることができる。従来のネットワーキングモデルとは異なり、単一のトランスポートエンジンがクラスタノードごとの代わりにサービスごとに提供され得て、これにより、非常に多くのプロセッサが単一のクラスタノードを利用しようとした場合に分散型データグリッドがボトルネックを取り除くことができる。
【００５８】
図６は、本発明の実施形態に従う、分散型データグリッドにおけるプロバイダベースのトランスポート層に基づくメッセージ移送をサポートするための例示的なフローチャートを示す図である。図６に示されるように、ステップ６０１において、システムは、分散型データグリッドにおける複数のメッセージバスを提供することができ、分散型データグリッドは、複数のクラスタメンバを含む。さらに、ステップ６０２において、システムは、分散型データグリッドにおける各サービスを前記メッセージバスに対応付け得て、ステップ６０３において、システムは、分散型データグリッドにおける異なるクラスタメンバ間でのデータ転送をサポートするために複数のメッセージバスを使用し得る。
【００５９】
並列メッセージの逆シリアル化
本発明の実施形態に従えば、たとえばCoherenceデータグリッドなどの分散型データグリッドにおけるインバウンドメッセージを取り扱うために、スレッドのプールが使用され、スケーラブルなメッセージバスを駆動するための入出力（Ｉ／Ｏ）スレッドなどのスレッドが提供される。さらに、分散型データグリッド内のスレッドプールにメッセージをオフロードし、Ｉ／Ｏスレッド上の前方のメッセージを逆シリアル化することにより、システムはサービススレッドボトルネックの影響を最小化することができる。
【００６０】
図７は、本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化のサポートを示す図である。図７に示されるように、分散型データグリッド７００におけるサービススレッド７０２は、メッセージバス７０１に対応付けられ得て、メッセージバス７０１は、たとえばメッセージ７０３〜７０４などの１つ以上の入力メッセージを受け取ることができる。
【００６１】
さらに、メッセージバス７０１は、スレッドプール７１０に対応付けられ得て、スレッドプール７１０は、たとえばＩ／Ｏスレッド７１１〜７１３などの１つ以上のスレッドを含む。分散型データグリッド７００は、サービススレッド７０２において性能ボトルネックを取り除くためにこのスレッドプール７１０を利用し得る。
【００６２】
本発明の実施形態に従えば、分散型データグリッド７００は、入力メッセージ７０３〜７０４を並列に処理するために、スレッドプール７１０における複数の異なるＩ／Ｏスレッド７１１〜７１３を使用し得る。したがって、システムは、メッセージタイプが識別され得る前に単一のスレッドにおいてすべてのメッセージの逆シリアル化を行うことによって、引き起こされるサービススレッドボトルネックを回避することができる。
【００６３】
たとえば、ダイレクトメモリアクセス（ＲＤＭＡ）プロトコルが使用される場合、メッセージバス７０１は、入力メッセージ７０３をサービススレッド７０２に運ぶ前に、メッセージ７０３を逆シリアル化するためにＩ／Ｏスレッド７１１を使用し得る。また、メッセージバス７０１は、入力メッセージ７０４をサービススレッド７０２に運ぶ前に、メッセージ７０４を逆シリアル化するためにＩ／Ｏスレッド７１３を使用し得る。
【００６４】
図８は、本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化をサポートするための例示的なフローチャートを示す図である。図８に示されるように、ステップ８０１において、システムは、スケーラブルなメッセージバスを駆動するように動作する複数の入出力（Ｉ／Ｏ）スレッドを提供するためにスレッドのプールを提供し得る。さらに、ステップ８０２において、システムは、複数のＩＯスレッド上の１つ以上のインバウンドメッセージを受け取り得て、ステップ８０３において、システムは、アドレス指定されたサービスに１つ以上のインバウンドメッセージを運ぶ前に、複数のＩ／Ｏスレッド上の１つ以上のインバウンドメッセージを逆シリアル化し得る。
【００６５】
メッセージ前処理
本発明の実施形態に従えば、スケーラブルなメッセージバスは、メッセージ前処理能力を提供し得て、これによって、受け取ったメッセージをサービススレッドに運ぶ前に、たとえば入出力（Ｉ／Ｏ）スレッド上の受け取ったメッセージの前処理が可能となる。
【００６６】
図９は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のサポートを示す図である。図９に示されるように、分散型データグリッド９００におけるサービススレッド９０２は、メッセージバス９０１に対応付けられ得る。
【００６７】
メッセージバス９０１は、たとえばメッセージ９０５などの１つ以上の入力メッセージを受け取るために、たとえばＩ／Ｏスレッド９０３などの１つ以上のＩ／Ｏスレッドを使用し得る。加えて、メッセージバス９０１は、入力メッセージ９０５を逆シリアル化するために、Ｉ／Ｏスレッド９０３を使用し得る。
【００６８】
ひとたび入力メッセージ９０５が逆シリアル化されると、メッセージバス９０１は、入力メッセージ９０５をサービススレッド９０２へ運ぶ前に入力メッセージ９０５を前処理し得る。そして、サービススレッド９０２は、前処理された入力メッセージ９０５の処理をさらに完了させ得て、必要な場合は、入力メッセージ９０５を送るサービスリクエスターに応答９０７を戻し得る。
【００６９】
本発明の実施形態に従えば、入力メッセージ９０５は、前処理方法９０６を提供することができる。メッセージバス９０１は、入力メッセージ９０５を部分的または完全に処理するために、Ｉ／Ｏスレッド９０３上の入力メッセージ９０５に対応付けられた前処理方法９０６を実行し得る。さらに、様々なメッセージタイプのために、完全にメッセージの実行を取扱い（前処理段階において終了／応答９０７に達する）、サービススレッドの全体を回避することも可能であり得る。
【００７０】
本発明の実施形態に従えば、スケーラブルなメッセージバスのメッセージ前処理能力は、分散型データグリッド９００において使用された場合に有益となり得る。第１に、サービススレッドは分散型データグリッドにおいてボトルネックとなり得ることから、メッセージ前処理能力を利用することにより、システムはサービススレッドの過負荷を回避することができる。第２に、メッセージ前処理を使用することにより、Ｉ／Ｏスレッド９０３とサービススレッド９０２との間でメッセージを移動させる場合に必要となり得るコンテキストスイッチをシステムが回避する。このようなコンテキストスイッチは、たとえばリモートダイレクトメモリアクセス（ＲＤＭＡ）ベースの移送の場合における全体的なリクエストのレイテンシーの大きな割合を引き起こし得る。第３に、スケーラブルなメッセージバスは、ＲＤＭＡベースのバスの場合などにおいてスケーラブルなメッセージバスが複数の１０個のスレッドを有していると、並列でメッセージを完全に実行させる。
【００７１】
さらに、スケーラブルなメッセージバスは、メッセージ前処理能力と並列メッセージ逆シリアル化能力とを結合させることができ、これにより、複数の入力メッセージが並列に逆シリアル化および前処理され得る。
【００７２】
図１０は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理をサポートするための例示的なフローチャートを示す図である。図１０に示されるように、ステップ１００１において、システムは、分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付けることができる。さらに、ステップ１００２において、システムは、入出力（Ｉ／Ｏ）スレッドを使用してメッセージバスで１つ以上の入力メッセージを受け取ることができ、ステップ１００３において、システムは、前記入力メッセージの各々が分散型データグリッドにおけるサービススレッドに運ばれる前に、Ｉ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理することができる。
【００７３】
図１１は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のためのシステム１１００の概略機能ブロック図を示す図である。システム１１００は、１つ以上のマイクロプロセッサと、１つ以上のマイクロプロセッサ上で実行される分散型データグリッドにおけるクラスタメンバとを含む。システム１１００は、クラスタメンバにおいて、対応付けモジュール１１１０と、メッセージバス１１２０と、サービススレッド１１３０と、前処理モジュール１１４０とを含む。対応付けモジュール１１１０は、分散型データグリッドにおけるクラスタメンバ上のサービススレッド１１３０にメッセージバス１１２０を対応付けるように適合される。メッセージバス１１２０は、入出力（Ｉ／Ｏ）スレッドを使用して１つ以上の入力メッセージを受け取るように適合される。前処理モジュール１１４０は、各入力メッセージが分散型データグリッドにおけるサービススレッド１１３０に運ばれる前にＩ／Ｏスレッド上の１つ以上の入力メッセージを前処理するように適合される。
【００７４】
図１２は、上記の本発明の原理に従う、分散型データグリッドにおけるメッセージ前処理のためのシステム１２００の機能ブロック図を示す図である。システム１２００の機能ブロックは、本発明の原理を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実施され得る。上記のような本発明の原理を実施するために図１２に記載される機能ブロックが組み合わされ得ること、またはサブブロックに分離され得ることは、当業者によって理解される。このため、本明細書の記載は、機能ブロックの可能な組み合わせもしくは分離、またはさらなる定義をサポートし得る。
【００７５】
図１２に示されるように、分散型データグリッドにおける前処理のためのシステム１２００は、第１対応付けユニット１２０２と、受け取りユニット１２０４と、前処理ユニット１２０６とを備える。第１対応付けユニット１２０２は、分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付けるように構成される。受け取りユニット１２０４は、入出力（Ｉ／Ｏ）スレッドを使用してメッセージバスで１つ以上の入力メッセージを受け取るように構成される。前処理ユニット１１０６は、分散型データグリッドにおけるサービススレッドに前記入力メッセージの各々が運ばれる前に、Ｉ／Ｏスレッド上の前記１つ以上の入力メッセージを前処理するように構成される。
【００７６】
例において、システム１２００は、前記入力メッセージに対応付けられた前処理方法をＩ／Ｏスレッドを介して実行するように構成された実行ユニット１２０８をさらに備える。
【００７７】
例において、システム１２００は、Ｉ／Ｏスレッドを使用して前記入力メッセージの各々を逆シリアル化するように構成された逆シリアル化ユニット１２１０をさらに備える。
【００７８】
例において、システム１１００は、前記入力メッセージを完全にＩ／Ｏスレッド上で取扱い、サービススレッドの使用を回避するように構成された取り扱いユニット１２１２をさらに備える。
【００７９】
例において、システム１２００は、サービススレッド上の前記１つ以上の前処理された入力メッセージを処理するように構成された第１処理ユニット１２１４をさらに備える。
【００８０】
例において、システム１２００は、前記入力メッセージを送るサービスリクエスターに対する応答を送るように構成された送信ユニット１２１６をさらに備える。
【００８１】
例において、システム１２００は、Ｉ／Ｏスレッドとサービススレッドとの間で前記１つ以上の入力メッセージを移動させるコンテキストスイッチを回避するように構成されたコンテキストスイッチ回避ユニット１２１８をさらに備える。
【００８２】
例において、メッセージバスは、リモートダイレクトメモリアクセス（ＲＤＭＡ）プロトコルに基づく。
【００８３】
例において、システム１２００は、スレッドプールをメッセージバスに対応付けるように構成された第２対応付けユニット１２２０をさらに備え、スレッドプールは複数のＩ／Ｏスレッドを含む。
【００８４】
例において、システム１２００は、複数のＩ／Ｏスレッド上の前記１つ以上の入力メッセージを並列に処理するように構成された第２処理ユニット１２２２をさらに備える。
【００８５】
本発明は、本開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリ、および／またはコンピュータ可読記憶媒体を含む、１つ以上の従来の汎用もしくは専用デジタルコンピューター、コンピューティング装置、マシン、またはマイクロプロセッサを使用して簡便に実施され得る。適切なソフトウェアコーディングは、ソフトウェア技術の当業者にとって明らかなように、本開示の教示に基づいてスキルを有するプログラマによって容易に準備され得る。
【００８６】
一部の実施形態において、本発明は、本発明の任意の処理を行うようにコンピュータをプログラミングするために使用され得る命令を記憶する記憶媒体もしくはコンピュータ可読媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または命令および／もしくはデータを記憶するのに適した任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【００８７】
本発明の上記の記述は、例示および説明を目的として提供された。これは、完全に網羅すること、または開示されたとおりの正確な形態に本発明を限定することを意図していない。多くの変形および変更が当業者にとって明らかとなる。変形および変更は、開示された特徴の任意の妥当な組み合わせを含む。実施形態は、本発明の原理およびその実用的な用途を最良に説明するために選択および記載され、これによって、当業者は本発明の様々な実施形態、および考えられる特定の使用に適した様々な変形を理解することができる。本発明の範囲は、以下の請求項およびその均等物によって規定されることが意図される。
【図１】
0006276273.tif 000003
【図２】
0006276273.tif 000004
【図３】
0006276273.tif 000005
【図４】
0006276273.tif 000006
【図５】
0006276273.tif 000007
【図６】
0006276273.tif 000008
【図７】
0006276273.tif 000009
【図８】
0006276273.tif 000010
【図９】
0006276273.tif 000011
【図１０】
0006276273.tif 000012
【図１１】
0006276273.tif 000013
【図１２】
0006276273.tif 000014