(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【課題を解決するための手段】
【0006】
概要
本明細書では、分散型データグリッドにおけるメッセージ前処理をサポートすることができるシステムおよび方法について記載する。システムは、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付けることができる。さらに、システムは、入出力(I/O)スレッドを使用し、メッセージバスで1つ以上の入力メッセージを受け取り、前記入力メッセージの各々が分散型データグリッドにおけるサービススレッドに運ばれる前にI/Oスレッド上の前記1つ以上の入力メッセージを前処理することができる。加えて、システムは、アドレス指定されたサービスへインバウンドメッセージが運ばれる前にインバウンドメッセージを逆シリアル化するために入出力(I/O)スレッドのプールを利用することができ、メッセージタイプが識別されて分散型データグリッド内のスレッドプールにオフロードされる前に、シングルスレッドの方法ですべてのメッセージを逆シリアル化することによって、引き起こされるボトルネックを除去することができる。
【0007】
本発明の実施形態は、分散型データグリッドにおけるメッセージ前処理をサポートする装置を提供し、装置は、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付ける手段と、入出力(I/O)スレッドを使用してメッセージバスで1つ以上の入力メッセージを受け取る手段と、前記入力メッセージの各々が分散型データグリッドにおける前記サービススレッドに運ばれる前にI/Oスレッド上の前記1つ以上の入力メッセージを前処理する手段とを備える。
【0008】
例において、装置は、I/Oスレッドを介して、前記入力メッセージに対応付けられた前処理方法を実行する手段をさらに備える。
【0009】
例において、装置は、I/Oスレッドを使用して前記入力メッセージの各々を逆シリアル化する手段をさらに備える。
【0010】
例において、装置は、前記入力メッセージを完全にI/Oスレッド上で取り扱い、サービススレッドの使用を回避する手段をさらに備える。
【0011】
例において、装置は、サービススレッド上の前記1つ以上の前処理された入力メッセージを処理する手段をさらに備える。
【0012】
例において、装置は、前記入力メッセージを送るサービスリクエスターに対する応答を送る手段をさらに備える。
【0013】
例において、装置は、I/Oスレッドとサービススレッドとの間で前記1つ以上の入力メッセージを移動させるコンテキストスイッチを回避する手段をさらに備える。
【0014】
例において、装置は、メッセージバスをリモートダイレクトメモリアクセス(RDMA)プロトコルに基づかせる手段をさらに備える。
【0015】
例において、装置は、スレッドプールをメッセージバスに対応付ける手段をさらに備え、スレッドプールは複数のI/Oスレッドを含む。
【0016】
例において、装置は、複数のI/Oスレッド上で前記1つ以上の入力メッセージを並列に処理する手段をさらに備える。
【0017】
本発明の他の実施形態は、分散型データグリッドにおけるメッセージ前処理のためのシステムを提供し、システムは、メッセージバスを分散型データグリッドにおけるクラスタメンバ上のサービススレッドに対応付けるように構成された第1対応付けユニットと、入出力(I/O)スレッドを使用してメッセージバスで1つ以上の入力メッセージを受け取るように構成された受け取りユニットと、前記入力メッセージの各々が分散型データグリッドにおける前記サービススレッドに運ばれる前にI/Oスレッド上の前記1つ以上の入力メッセージを前処理するように構成された前処理ユニットとを備える。
【0018】
例において、システムは、I/Oスレッドを介して、前記入力メッセージに対応付けられた前処理方法を実行するように構成された実行ユニットをさらに備える。
【0019】
例において、システムは、I/Oスレッドを使用して前記入力メッセージの各々を逆シリアル化するように構成された逆シリアル化ユニットをさらに備える。
【0020】
例において、システムは、I/Oスレッド上で完全に前記入力メッセージを取り扱い、サービススレッドの使用を回避するように構成された取り扱いユニットをさらに備える。
【0021】
例において、システムは、サービススレッド上で前記1つ以上の前処理された入力メッセージを処理するように構成された第1処理ユニットをさらに備える。
【0022】
例において、システムは、前記入力メッセージを送るサービスリクエスターへの応答を送るように構成された送信ユニットをさらに備える。
【0023】
例において、システムは、I/Oスレッドとサービススレッドとの間で前記1つ以上の入力メッセージを移動させるコンテキストスイッチを回避するように構成されたコンテキストスイッチ回避ユニットをさらに備える。
【0024】
例において、メッセージバスは、リモートダイレクトメモリアクセス(RDMA)プロトコルに基づく。
【0025】
例において、システムは、スレッドプールをメッセージバスに対応付けるように構成された第2対応付けユニットをさらに備え、スレッドプールは複数のI/Oスレッドを含む。
【0026】
例において、システムは、複数のI/Oスレッド上で前記1つ以上の入力メッセージを並列に処理するように構成された第2処理ユニットをさらに備える。
【発明を実施するための形態】
【0028】
詳細な説明
本発明は、同様の参照符号が同様の要素を示す添付の図面において示されるが、これらは例示であって限定ではない。なお、本開示における「ある(an)」実施形態、「1つの(one)」実施形態、または「一部の(some)」実施形態への参照は、必ずしも同じ実施形態への参照とは限らず、このような参照は少なくとも1つを意味する。
【0029】
以下の本発明の実施形態の記載では、分散型データグリッドの例としてCoherence分散型データグリッドを使用する。限定されることなく他のタイプの分散型データグリッドを使用できることは、当業者にとって明らかである。さらに、以下の本発明の記載では、メッセージング機構の例としてExabusメッセージング機構を使用する。限定されることなく他のタイプのメッセージング機構を使用できることは、当業者にとって明らかである。
【0030】
本明細書では、分散型データグリッドクラスタにおけるスケーラブルなメッセージバスをサポートすることができるシステムおよび方法について記載する。スケーラブルなメッセージバスは、各サービスに独自のバス(トランスポートエンジン)を設けることができる。分散型データグリッドは、アドレス指定されたサービスへインバウンドメッセージが運ばれる前にインバウンドメッセージを逆シリアル化するために入出力(I/O)スレッドのプールを利用することができ、メッセージタイプが識別されて分散型データグリッド内のスレッドプールにオフロードされる前に、シングルスレッドの方法ですべてのメッセージを逆シリアル化することによって、引き起こされるボトルネックを除去することができる。加えて、分散型データグリッドは、スケーラブルなメッセージバスのためにI/Oスレッド上で入力メッセージを前処理させることができる。
【0031】
データグリッドの分散
実施形態に従えば、本明細書でいう「データグリッドクラスタ」または「データグリッド」は、分散型またはクラスタ化環境内における情報および計算などの関連動作を管理するために協働する複数のコンピュータサーバーを備えるシステムである。データグリッドクラスタは、サーバー間で共有されるアプリケーションオブジェクトおよびデータを管理するために使用することができる。好ましくは、データグリッドクラスタは、短い応答時間、高いスループット、予測可能なスケーラビリティ、連続的な可用性、および情報信頼性を有するべきである。これらの性能の結果として、データグリッドクラスタは、計算集約的であってステートフルな中間層アプリケーションにおける使用によく適したものとなる。データグリッドクラスタの一部の例、たとえば、Oracle Coherenceデータグリッドクラスタは、高い性能を実現するために情報をインメモリで記憶することができ、複数のサーバー間でその情報のコピーを同期して維持する冗長性を採用することができ、サーバー障害時におけるシステムの回復性およびデータの可用性が確保される。たとえば、Coherenceは、信頼性が高く高度にスケーラブルなピアツーピアクラスタ化プロトコルの上部において、複製および分散(区分化)したデータ管理およびキャッシングサービスを提供する。
【0032】
インメモリデータグリッドは、協働する複数のサーバーにわたってデータを分散させることによってデータ記憶および管理性能を提供することができる。データグリッドは、アプリケーションサーバーと同じティアにおいて、またはアプリケーションサーバー内において実行されるミドルウェアであり得る。これは、データの管理および処理を提供することができるとともに、グリッドにおいてデータが位置する箇所に対して処理を実行することもできる。加えて、インメモリデータグリッドは、自動的かつ透過的にフェイルオーバーし、サーバーが動作不能になった場合またはサーバーがネットワークから切断された場合にそのクラスタ化データ管理サービスを再分散させることにより、単一障害点を排除することができる。新しいサーバーが加えられた場合、または障害の起こったサーバーが再始動した場合、クラスタを自動的に結合することができ、サービスをそこにフェールバックさせることができ、透過的にクラスタ負荷が再分散される。データグリッドは、ネットワークレベルフォルトトレランス特徴および透過的な再起動能力も含むことができる。
【0033】
実施形態に従えば、データグリッドクラスタの機能性は、異なるクラスタサービスの使用に基づいている。クラスタサービスは、ルートクラスタサービス、区分化キャッシュサービス、およびプロキシサービスを含み得る。データグリッドクラスタ内において、各クラスタノードは、クラスタサービスの提供および消費の両方の面において、複数のクラスタサービスに関わることができる。各クラスタサービスは、データグリッドクラスタ内のサービスを固有に識別するサービス名と、クラスタサービスができることを規定するサービスタイプとを有する。データグリッドクラスタにおける各クラスタノード上でルートクラスタサービスが実行される他、各サービスタイプには複数の名を持つインスタンスがあってもよい。サービスは、ユーザーによって構成され得る、またはサービスのデフォルトセットとしてデータグリッドクラスタによって提供され得る。
【0034】
図1は、分散型データグリッドにおけるデータグラム層に基づくメッセージ移送のサポートを示す図である。
図1に示されるように、分散型データグリッド100におけるクラスタメンバ101は、1つ以上のクライアント/サービススレッド102を含み得る。クラスタメンバ101上のクライアント/サービススレッド102は、ユーザーデータグラムプロトコル(UDP)を使用し、たとえばイーサネット(登録商標)ネットワーク110などのネットワークを通じて分散型データグリッド100における他のクラスタメンバにメッセージを送ることができる。
【0035】
本発明の実施形態に従えば、クラスタメンバ101は、分散型データグリッド100における他のクラスタメンバへメッセージを送るために、および応答メッセージを受け取るために、パケット化ロジック、パケット再送信ロジック、およびAck/Nackロジックなどの異なるロジックを採用し得る。
【0036】
加えて、上記のメッセージング処理には、複数のコンテキストスイッチが伴い得る。
図1に示されるように、クライアント/サービススレッド102は、まずメッセージをパブリッシャー103に送り得る。そして、パブリッシャー103は、メッセージをスピーカー104に転送し得る。スピーカー104は、メッセージをネットワーク110に送る役割を有する。
【0037】
さらに、分散型データグリッド100におけるクラスタメンバ101は、1つ以上のリスナー105を使用して応答メッセージを受け取り得る。リスナー105は、受け取ったメッセージをレシーバー106に転送し得る。そして、レシーバー106は、受け取ったメッセージをクライアント/サービススレッド102に転送し、任意でパブリッシャー103に通知し得る。
【0038】
スケーラブルなメッセージバス
本発明の実施形態に従えば、スケーラブルなメッセージバスは、様々なレベルでI/Oボトルネックを取り除くために使用され得る。
【0039】
図2は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージバスの提供を示す図である。
図2に示されるように、クラスタメンバ201は、分散型データグリッド200における、たとえばJAVA(登録商標)仮想マシンなどの仮想マシン210上で実行され得る。クラスタメンバ201は、1つ以上のサービス211を伴い得る。サービス211は、メッセージングのために1つ以上のメッセージバス212を使用し得る。
【0040】
本発明の実施形態に従えば、メッセージバス212は、マルチポイントアドレス指定および信頼性の高い順次伝送を伴うバイナリ低レベルメッセージトランスポート層に基づき得る。また、メッセージバスは、純粋なJava(登録商標)の実施および/またはネイティブ実施に基づき得るとともに、非同期性事象ベースのプログラミングモデルを採用し得る。
【0041】
さらに、メッセージバス212は、たとえばOracle ExaLogicエンジニアードシステムにおけるExabusなどのネットワーキングハードウェアおよびソフトウェアサブシステムを使用してサポートされ得る。メッセージバスは、アプリケーションの実行をより速くするのみならず、アプリケーションの実行をより効率的にし得る。また、メッセージバスは、数千個のプロセッサコアおよび数テラバイトのメモリを伴う非常に大きなスケールの展開において、および実質的に全てのビジネス用途について、アプリケーションを一貫して予測可能に実行させ得る。
【0042】
本発明の実施形態に従えば、メッセージバス212の各々は、プロバイダベースのトランスポート層であり得て、これはJRockit/HotSpotなどの仮想マシン210におけるメッセージバスプロバイダ202を使用することによってサポートされ得る。
【0043】
加えて、メッセージバスプロバイダ202は、プラガブルプロバイダベースのフレームワークに基づき得る。たとえば、メッセージバスプロバイダ202は、TCP/SDPに基づくSocketBus、およびInfiniband RDMAに基づくInfiniBusなどの異なるメッセージバスをサポートし得る。
【0044】
本発明の実施形態に従えば、メッセージバスプロバイダは、複数のバスプロトコルからバスプロトコルを選択するために単一のスイッチを使用し得る。たとえば、Coherenceにおいて、システムは以下の構成ファイルにおいて単一のスイッチを指定し得る。
【0046】
加えて、Coherenceにおいて、システムは、以下のバスのうちの1つを選択するために単一のスイッチを使用し得る。
【0047】
tmb:TCP MessageBus
sdmb:SDP MessageBus
imb:Infiniband MessageBus
データグラム:従来のUDP(デフォルト)
【0048】
したがって、メッセージバス212は、分散型データグリッド200におけるノード間のスケーラビリティを向上させ得るとともに、分散型データグリッド200をプロトコル非依存にし得る。たとえば、メッセージバス212を使用して、分散型データグリッド200は、効果的に多数のコアを利用し、メッセージングの同時実行を向上させ、スループットを高めてレイテンシーを減少させ得る。また、メッセージバス212は、分散型データグリッド200にコンテキストスイッチを最小化させ、ゼロコピーを利用する。
【0049】
本発明の実施形態に従えば、システムは、メッセージバスに障害が起こった場合にクラスタメンバに対する停止検知を発動させ得る。
【0050】
図3は、分散型データグリッドにおけるメッセージングをサポートするためのTCP/IPベースのトランスポート層の使用を示す図である。
図3に示されるように、分散型コンピューティング環境300においてアプリケーション301からアプリケーション302へメッセージを送るために、メッセージは、ローカルマシン上のアプリケーションバッファー303、TCP/IPトランスポート層305、およびカーネル層306を通る必要があり得る。そして、メッセージは、リモートマシンにおけるカーネル層306およびTCP/IPトランスポート層305を介して、アプリケーションバッファー304においてリモートマシンで受け取られ得る。
【0051】
図4は、分散型データグリッドにおけるメッセージングをサポートするためのRDMAベースのトランスポート層の使用を示す図である。
図4に示されるように、システムは、RDMAベースのトランスポート層に基づき、ローカルマシン上のアプリケーション401からリモートマシン上のアプリケーション401へ直接メッセージを送ることができる。
【0052】
サービスごとのバス
本発明の実施形態に従えば、スケーラブルなメッセージバスは、独自のバス(またはトランスポートエンジン)をサービスに設け得る。
【0053】
図5は、本発明の実施形態に従う、分散型データグリッドにおける様々なサービスのためのスケーラブルなメッセージバスのサポートを示す図である。
図5に示されるように、分散型データグリッド500は、たとえばクラスタメンバ501〜504などの複数のクラスタメンバを含み得る。
【0054】
さらに、各クラスタメンバは異なるサービスを含み得て、サービスの各々は別個のメッセージバスに対応付けられ得る。たとえば、クラスタメンバ501は、区分キャッシュサービス511〜512および呼出しサービス513を含み得て、これらはメッセージバス514〜516に対応付けられ得る。クラスタメンバ502は、区分キャッシュサービス521〜522および呼出しサービス523を含み得て、これらはメッセージバス524〜526に対応付けられ得る。クラスタメンバ503は、区分キャッシュサービス531〜532および呼出しサービス533を含み得て、これらはメッセージバス534〜536に対応付けられ得る。クラスタメンバ504は、区分キャッシュサービス541〜542および呼出しサービス543を含み得て、これらはメッセージバス544〜546に対応付けられ得る。
【0055】
加えて、ネットワーク510は、分散型データグリッド500における異なるクラスタメンバ501〜504上の異なるメッセージバスを接続し得る。たとえば、ネットワーク510は、リモートダイレクトメモリアクセス(RDMA)プロトコルに基づき得る。また、ネットワーク510は、必要な場合、ユーザーデータグラムプロトコル(UDP)にフォールバックし得る。
【0056】
本発明の実施形態に従えば、システムは、分散型データグリッドにおける異なるクラスタメンバ間でのデータ転送をサポートするために複数のメッセージバスを使用し得る。加えて、システムは、分散型データグリッドにおけるクラスタ化をサポートするためにデータグラム層520を使用し得るとともに、データ転送のために分散型データグリッドにおけるデータグラム層520をバイパスし得る。
【0057】
したがって、システムは、エンドユーザーによって構成されたサービスの数に比してCPU利用を高めることができる。従来のネットワーキングモデルとは異なり、単一のトランスポートエンジンがクラスタノードごとの代わりにサービスごとに提供され得て、これにより、非常に多くのプロセッサが単一のクラスタノードを利用しようとした場合に分散型データグリッドがボトルネックを取り除くことができる。
【0058】
図6は、本発明の実施形態に従う、分散型データグリッドにおけるプロバイダベースのトランスポート層に基づくメッセージ移送をサポートするための例示的なフローチャートを示す図である。
図6に示されるように、ステップ601において、システムは、分散型データグリッドにおける複数のメッセージバスを提供することができ、分散型データグリッドは、複数のクラスタメンバを含む。さらに、ステップ602において、システムは、分散型データグリッドにおける各サービスを前記メッセージバスに対応付け得て、ステップ603において、システムは、分散型データグリッドにおける異なるクラスタメンバ間でのデータ転送をサポートするために複数のメッセージバスを使用し得る。
【0059】
並列メッセージの逆シリアル化
本発明の実施形態に従えば、たとえばCoherenceデータグリッドなどの分散型データグリッドにおけるインバウンドメッセージを取り扱うために、スレッドのプールが使用され、スケーラブルなメッセージバスを駆動するための入出力(I/O)スレッドなどのスレッドが提供される。さらに、分散型データグリッド内のスレッドプールにメッセージをオフロードし、I/Oスレッド上の前方のメッセージを逆シリアル化することにより、システムはサービススレッドボトルネックの影響を最小化することができる。
【0060】
図7は、本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化のサポートを示す図である。
図7に示されるように、分散型データグリッド700におけるサービススレッド702は、メッセージバス701に対応付けられ得て、メッセージバス701は、たとえばメッセージ703〜704などの1つ以上の入力メッセージを受け取ることができる。
【0061】
さらに、メッセージバス701は、スレッドプール710に対応付けられ得て、スレッドプール710は、たとえばI/Oスレッド711〜713などの1つ以上のスレッドを含む。分散型データグリッド700は、サービススレッド702において性能ボトルネックを取り除くためにこのスレッドプール710を利用し得る。
【0062】
本発明の実施形態に従えば、分散型データグリッド700は、入力メッセージ703〜704を並列に処理するために、スレッドプール710における複数の異なるI/Oスレッド711〜713を使用し得る。したがって、システムは、メッセージタイプが識別され得る前に単一のスレッドにおいてすべてのメッセージの逆シリアル化を行うことによって、引き起こされるサービススレッドボトルネックを回避することができる。
【0063】
たとえば、ダイレクトメモリアクセス(RDMA)プロトコルが使用される場合、メッセージバス701は、入力メッセージ703をサービススレッド702に運ぶ前に、メッセージ703を逆シリアル化するためにI/Oスレッド711を使用し得る。また、メッセージバス701は、入力メッセージ704をサービススレッド702に運ぶ前に、メッセージ704を逆シリアル化するためにI/Oスレッド713を使用し得る。
【0064】
図8は、本発明の実施形態に従う、分散型データグリッドにおける並列メッセージの逆シリアル化をサポートするための例示的なフローチャートを示す図である。
図8に示されるように、ステップ801において、システムは、スケーラブルなメッセージバスを駆動するように動作する複数の入出力(I/O)スレッドを提供するためにスレッドのプールを提供し得る。さらに、ステップ802において、システムは、複数のIOスレッド上の1つ以上のインバウンドメッセージを受け取り得て、ステップ803において、システムは、アドレス指定されたサービスに1つ以上のインバウンドメッセージを運ぶ前に、複数のI/Oスレッド上の1つ以上のインバウンドメッセージを逆シリアル化し得る。
【0065】
メッセージ前処理
本発明の実施形態に従えば、スケーラブルなメッセージバスは、メッセージ前処理能力を提供し得て、これによって、受け取ったメッセージをサービススレッドに運ぶ前に、たとえば入出力(I/O)スレッド上の受け取ったメッセージの前処理が可能となる。
【0066】
図9は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のサポートを示す図である。
図9に示されるように、分散型データグリッド900におけるサービススレッド902は、メッセージバス901に対応付けられ得る。
【0067】
メッセージバス901は、たとえばメッセージ905などの1つ以上の入力メッセージを受け取るために、たとえばI/Oスレッド903などの1つ以上のI/Oスレッドを使用し得る。加えて、メッセージバス901は、入力メッセージ905を逆シリアル化するために、I/Oスレッド903を使用し得る。
【0068】
ひとたび入力メッセージ905が逆シリアル化されると、メッセージバス901は、入力メッセージ905をサービススレッド902へ運ぶ前に入力メッセージ905を前処理し得る。そして、サービススレッド902は、前処理された入力メッセージ905の処理をさらに完了させ得て、必要な場合は、入力メッセージ905を送るサービスリクエスターに応答907を戻し得る。
【0069】
本発明の実施形態に従えば、入力メッセージ905は、前処理方法906を提供することができる。メッセージバス901は、入力メッセージ905を部分的または完全に処理するために、I/Oスレッド903上の入力メッセージ905に対応付けられた前処理方法906を実行し得る。さらに、様々なメッセージタイプのために、完全にメッセージの実行を取扱い(前処理段階において終了/応答907に達する)、サービススレッドの全体を回避することも可能であり得る。
【0070】
本発明の実施形態に従えば、スケーラブルなメッセージバスのメッセージ前処理能力は、分散型データグリッド900において使用された場合に有益となり得る。第1に、サービススレッドは分散型データグリッドにおいてボトルネックとなり得ることから、メッセージ前処理能力を利用することにより、システムはサービススレッドの過負荷を回避することができる。第2に、メッセージ前処理を使用することにより、I/Oスレッド903とサービススレッド902との間でメッセージを移動させる場合に必要となり得るコンテキストスイッチをシステムが回避する。このようなコンテキストスイッチは、たとえばリモートダイレクトメモリアクセス(RDMA)ベースの移送の場合における全体的なリクエストのレイテンシーの大きな割合を引き起こし得る。第3に、スケーラブルなメッセージバスは、RDMAベースのバスの場合などにおいてスケーラブルなメッセージバスが複数の10個のスレッドを有していると、並列でメッセージを完全に実行させる。
【0071】
さらに、スケーラブルなメッセージバスは、メッセージ前処理能力と並列メッセージ逆シリアル化能力とを結合させることができ、これにより、複数の入力メッセージが並列に逆シリアル化および前処理され得る。
【0072】
図10は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理をサポートするための例示的なフローチャートを示す図である。
図10に示されるように、ステップ1001において、システムは、分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付けることができる。さらに、ステップ1002において、システムは、入出力(I/O)スレッドを使用してメッセージバスで1つ以上の入力メッセージを受け取ることができ、ステップ1003において、システムは、前記入力メッセージの各々が分散型データグリッドにおけるサービススレッドに運ばれる前に、I/Oスレッド上の前記1つ以上の入力メッセージを前処理することができる。
【0073】
図11は、本発明の実施形態に従う、分散型データグリッドにおけるメッセージ前処理のためのシステム1100の概略機能ブロック図を示す図である。システム1100は、1つ以上のマイクロプロセッサと、1つ以上のマイクロプロセッサ上で実行される分散型データグリッドにおけるクラスタメンバとを含む。システム1100は、クラスタメンバにおいて、対応付けモジュール1110と、メッセージバス1120と、サービススレッド1130と、前処理モジュール1140とを含む。対応付けモジュール1110は、分散型データグリッドにおけるクラスタメンバ上のサービススレッド1130にメッセージバス1120を対応付けるように適合される。メッセージバス1120は、入出力(I/O)スレッドを使用して1つ以上の入力メッセージを受け取るように適合される。前処理モジュール1140は、各入力メッセージが分散型データグリッドにおけるサービススレッド1130に運ばれる前にI/Oスレッド上の1つ以上の入力メッセージを前処理するように適合される。
【0074】
図12は、上記の本発明の原理に従う、分散型データグリッドにおけるメッセージ前処理のためのシステム1200の機能ブロック図を示す図である。システム1200の機能ブロックは、本発明の原理を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実施され得る。上記のような本発明の原理を実施するために
図12に記載される機能ブロックが組み合わされ得ること、またはサブブロックに分離され得ることは、当業者によって理解される。このため、本明細書の記載は、機能ブロックの可能な組み合わせもしくは分離、またはさらなる定義をサポートし得る。
【0075】
図12に示されるように、分散型データグリッドにおける前処理のためのシステム1200は、第1対応付けユニット1202と、受け取りユニット1204と、前処理ユニット1206とを備える。第1対応付けユニット1202は、分散型データグリッドにおけるクラスタメンバ上のサービススレッドにメッセージバスを対応付けるように構成される。受け取りユニット1204は、入出力(I/O)スレッドを使用してメッセージバスで1つ以上の入力メッセージを受け取るように構成される。前処理ユニット1106は、分散型データグリッドにおけるサービススレッドに前記入力メッセージの各々が運ばれる前に、I/Oスレッド上の前記1つ以上の入力メッセージを前処理するように構成される。
【0076】
例において、システム1200は、前記入力メッセージに対応付けられた前処理方法をI/Oスレッドを介して実行するように構成された実行ユニット1208をさらに備える。
【0077】
例において、システム1200は、I/Oスレッドを使用して前記入力メッセージの各々を逆シリアル化するように構成された逆シリアル化ユニット1210をさらに備える。
【0078】
例において、システム1100は、前記入力メッセージを完全にI/Oスレッド上で取扱い、サービススレッドの使用を回避するように構成された取り扱いユニット1212をさらに備える。
【0079】
例において、システム1200は、サービススレッド上の前記1つ以上の前処理された入力メッセージを処理するように構成された第1処理ユニット1214をさらに備える。
【0080】
例において、システム1200は、前記入力メッセージを送るサービスリクエスターに対する応答を送るように構成された送信ユニット1216をさらに備える。
【0081】
例において、システム1200は、I/Oスレッドとサービススレッドとの間で前記1つ以上の入力メッセージを移動させるコンテキストスイッチを回避するように構成されたコンテキストスイッチ回避ユニット1218をさらに備える。
【0082】
例において、メッセージバスは、リモートダイレクトメモリアクセス(RDMA)プロトコルに基づく。
【0083】
例において、システム1200は、スレッドプールをメッセージバスに対応付けるように構成された第2対応付けユニット1220をさらに備え、スレッドプールは複数のI/Oスレッドを含む。
【0084】
例において、システム1200は、複数のI/Oスレッド上の前記1つ以上の入力メッセージを並列に処理するように構成された第2処理ユニット1222をさらに備える。
【0085】
本発明は、本開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリ、および/またはコンピュータ可読記憶媒体を含む、1つ以上の従来の汎用もしくは専用デジタルコンピューター、コンピューティング装置、マシン、またはマイクロプロセッサを使用して簡便に実施され得る。適切なソフトウェアコーディングは、ソフトウェア技術の当業者にとって明らかなように、本開示の教示に基づいてスキルを有するプログラマによって容易に準備され得る。
【0086】
一部の実施形態において、本発明は、本発明の任意の処理を行うようにコンピュータをプログラミングするために使用され得る命令を記憶する記憶媒体もしくはコンピュータ可読媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または命令および/もしくはデータを記憶するのに適した任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【0087】
本発明の上記の記述は、例示および説明を目的として提供された。これは、完全に網羅すること、または開示されたとおりの正確な形態に本発明を限定することを意図していない。多くの変形および変更が当業者にとって明らかとなる。変形および変更は、開示された特徴の任意の妥当な組み合わせを含む。実施形態は、本発明の原理およびその実用的な用途を最良に説明するために選択および記載され、これによって、当業者は本発明の様々な実施形態、および考えられる特定の使用に適した様々な変形を理解することができる。本発明の範囲は、以下の請求項およびその均等物によって規定されることが意図される。