(57)【特許請求の範囲】
【請求項１】
メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いたプロデューサ・コンシューマ間のメッセージ交換のために構成されたデータ処理システムであって、
メモリ及び少なくとも１つのプロセッサを有するホスト・サーバと、
前記ホスト・サーバの前記メモリ内で動作するメッセージング・ハブであって、ネットワーク・インターフェースを通してクライアント・コンピューティング・システムのメッセージ生成アプリケーションと通信する、メッセージング・ハブと、を含み、
前記メッセージング・ハブは、
制御部分と、１つ又は複数のデータ部分と、を含み、前記制御部分が前記１つ又は複数のデータ部分のうち利用可能なデータ部分の１つへのインデックスを格納するように、前記ホスト・サーバの前記メモリの共有領域を初期化し、
前記メッセージ生成アプリケーションに前記メモリの前記共有領域のアドレスを伝送し、
前記ホスト・サーバの前記ネットワーク・インターフェース上で、前記メッセージ生成アプリケーションによるＲＤＭＡ書き込み操作を介して、前記メモリの前記利用可能なデータ部分の１つにメッセージを受信し、
前記メッセージの受信に応答して、前記利用可能なデータ部分の前記１つから前記メッセージを取り出し、前記取り出したメッセージの処理を指示する、データ処理システム。
【請求項２】
メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いたプロデューサ・コンシューマ間のメッセージ交換のためのコンピュータ・プログラムであって、
前記メッセージング・ハブに、
前記メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化するステップあって、前記初期化は、前記共有メモリ領域の制御部分と、前記共有メモリ領域の１つ又は複数のデータ部分と、を提供し、前記制御部分は、前記１つ又は複数のデータ部分のうち利用可能なデータ部分の１つへのインデックスを格納する、前記初期化するステップ、
コンピュータ通信ネットワーク上でメッセージ・プロデューサに、前記共有メモリ領域のアドレスを伝送するステップ、
前記ホスト・サーバのネットワーク・インターフェース上で、前記メッセージ・プロデューサによるＲＤＭＡ書き込み操作を介して、前記共有メモリ領域の前記利用可能なデータ部分の１つにメッセージを受信するステップ、
前記メッセージの受信に応答して、前記利用可能なデータ部分の前記１つから前記メッセージを取り出し、前記取り出したメッセージを処理するステップ、を実行させるためのコンピュータ・プログラム。
【請求項３】
メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）を用いたプロデューサ・コンシューマ間のメッセージ交換のための方法であって、
前記メッセージング・ハブが、
前記メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化するステップあって、前記初期化は、前記共有メモリ領域の制御部分と、前記共有メモリ領域の１つ又は複数のデータ部分と、を提供し、前記制御部分は、前記１つ又は複数のデータ部分のうち利用可能なデータ部分の１つへのインデックスを格納する、初期化するステップと、
コンピュータ通信ネットワーク上でメッセージ・プロデューサに、前記共有メモリ領域のアドレスを伝送するステップと、
前記ホスト・サーバのネットワーク・インターフェース上で、前記メッセージ・プロデューサによるＲＤＭＡ書き込み操作を介して、前記共有メモリ領域の前記利用可能なデータ部分の１つにメッセージを受信するステップと、
前記メッセージの受信に応答して、前記利用可能なデータ部分の前記１つから前記メッセージを取り出し、前記取り出したメッセージを処理するステップと、
を実行する、方法。
【請求項４】
前記メッセージング・ハブは、前記メッセージ・プロデューサによる前記ＲＤＭＡ書き込み操作によりトリガされるデータ利用可能イベントを検出することに応答して、前記メッセージを取り出し、処理する、請求項３に記載の方法。
【請求項５】
前記１つ又は複数のデータ部分は等しいサイズのものである、請求項３に記載の方法。
【請求項６】
前記データ部分の各々は、前記データ部分が有効状態であるか又は無効状態であるかを示す状態語を含む、請求項３に記載の方法。
【請求項７】
前記メッセージ・プロデューサは、前記利用可能なデータ部分の前記状態が有効である場合、前記メッセージを前記利用可能なデータ部分に書き込まず、ひとたび前記利用可能なデータ部分の前記状態が無効になって初めて、前記メッセージを前記利用可能なデータ部分に書き込む、請求項６に記載の方法。
【請求項８】
前記メッセージは、
前記メッセージ・プロデューサが、第１に前記メモリの共有領域の前記アドレスから前記制御部分の位置を計算し、
第２に前記制御部分の前記位置にＲＤＭＡ読み出し追加操作を行って前記制御部分からのインデックス・データを獲得し、
第３に前記インデックス・データのモジュロを計算して前記データ部分の前記利用可能なデータ部分の位置をもたらし、
第４に前記利用可能なデータ部分に対して前記メッセージのＲＤＭＡ書き込み操作を行うことによって、受信される、請求項３に記載の方法。
【請求項９】
前記メッセージング・ハブは、前記メッセージを１つ又は複数の購読しているメッセージ・コンシューマに転送することによって、前記メッセージを処理する、請求項３に記載の方法。
【請求項１０】
前記メッセージング・ハブは、前記メッセージを１つ又は複数の購読しているメッセージ・コンシューマに転送することなく、前記メッセージを廃棄することによって、前記メッセージを処理する、請求項３に記載の方法。
【請求項１１】
請求項４乃至１０の何れか一項に記載の方法の各ステップをプロセッサに実行させるためのコンピュータ・プログラム。
【請求項１２】
請求項４乃至１０の何れか一項に記載の方法の各ステップを実行するプロセッサを備えたデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージング・ハブにおけるメッセージ処理に関し、より特定的には、高速大容量のメッセージ処理に関する。
【背景技術】
【０００２】
メッセージング・ハブは、分散型コンピューティング・システム間のメッセージの交換をサポートする、プログラマティック・インフラストラクチャ内に配置されたミドルウェアである。この点で、メッセージング・ハブのメッセージ・ブローカリング（message brokering）操作性は、メッセージング・コンポーネントにより管理されるメッセージ・キューを通して通信しながら、アプリケーション・モジュールを異種のプラットフォームにわたって分散させることを可能にし、複数のオペレーティング・システム及びネットワーク・プロトコルにわたるアプリケーションを開発する複雑さを低減させる。従って、メッセージング・ハブは、アプリケーション開発者を種々のオペレーティング・システム及びネットワーク・インターフェースの細部から保護する分散型の通信層を生成する。
【０００３】
既存のメッセージ・サービスを便利なハードウェア・フォーム・ファクタに統合するだけのメッセージ・アプライアンスとは違って、メッセージング・ハブの最新世代は、企業を超えた大規模通信の配信用に特に設計される。これらのメッセージング・アプライアンスは、マシン間の通信のために発行・購読型（publish and subscribe）メッセージングを配信し、インターネットの世界を呈する多数のデバイス及びセンサに通信可能に接続する。従って、これらのメッセージング・アプライアンスは、同時に接続されるデバイス数を劇的に拡大させ、大容量のイベントを分析エンジンにストリーミングし、ビッグデータを処理することを可能にする。
【０００４】
注目すべきことに、データ交換のためにメッセージング・ハブを利用する大部分のアプリケーションは、クライアントとサーバとの間であっても、処理ノード、処理段階、又は実行スレッド間であっても、低待ち時間（low latency）（すなわち、１マイクロ秒乃至１００マイクロ秒）、高スループット（毎秒１０万乃至１０００万メッセージ）、及び同じく高い同時実行性（high concurrency）（すなわち、同時に実行中の（in flight）複数の持続メッセージ）のそれぞれを必要とする。メッセージング・ハブにおいて通常のキューを使用する際、待ち時間のコストは、ディスクへのＩ／Ｏ操作のコストと同じオーダーである。複数のキューがエンド・ツー・エンド操作に関与する限りは、数百マイクロ秒が、トランザクションの待ち時間全体に付加される。ＣＰＵレベルのキャッシュミス、及びカーネル・アーキテクチャレーションを必要とするロックも、メッセージング・ハブにおける従来のキューイングの結果である場合があり、非常に費用がかかり得る。
【０００５】
メッセージング・ハブにおけるメッセージ・キュー手法は、付加的な弱点（すなわち、メッセージ・プロデューサとメッセージ・コンシューマとの間にデッドロック状態が生じる可能性）を示す。具体的には、メッセージ・キュー手法において、メッセージ・プロデューサは、バッファが一杯である場合、データをバッファに付加しようとしてはならない。同様に、メッセージ・コンシューマは、空のバッファからデータを削除しようとしてはならない。従って、メッセージ・キュー手法において、メッセージ・プロデューサは、バッファが一杯である場合、「スリープする」か、又はデータを廃棄する。一方で、メッセージ・コンシューマは、バッファからデータを削除すると、メッセージ・プロデューサに通知し、メッセージ・プロデューサは、データをバッファに再度付加することができる。同様に、メッセージ・コンシューマが、バッファが空であることを見出すと、メッセージ・コンシューマは「スリープする」ことができる。メッセージ・プロデューサが後でデータをバッファに付加すると、メッセージ・プロデューサは、スリープ中のメッセージ・コンシューマを目覚めさせる。従って、メッセージ・コンシューマ及びメッセージ・プロデューサのどちらも他方により目覚めるのを待つ場合には、デッドロック状態が生じることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）最適化プロデューサ・コンシューマ・メッセージ処理を提供する。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、メッセージング・ハブにおけるメッセージ処理に関する当技術分野の欠陥に対処し、メッセージング・ハブにおけるリモート・ダイレクト・メモリ・アクセス（ＲＤＭＡ）最適化プロデューサ・コンシューマ・メッセージ処理のための新規で自明ではない方法、システム及びコンピュータ・プログラム製品を提供する。本発明の実施形態において、メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のための方法が、メッセージング・ハブの動作をホストするホスト・サーバのメモリ内の共有メモリ領域を初期化することを含む。
【０００８】
この初期化は、共有メモリ領域の制御部分、及び共有メモリ領域の１つ又は複数のデータ部分を提供し、制御部分は、データ部分の利用可能な部分へのインデックスを格納する。この方法はまた、コンピュータ通信ネットワーク上でメッセージ・プロデューサに共有メモリ領域のアドレスを伝送することと、ホスト・サーバのネットワーク・インターフェース上で、ＲＤＭＡ書き込み操作を介して、メッセージ・プロデューサから、共有メモリ領域のデータ部分の１つにメッセージを受信することも含む。最後に、この方法は、メッセージの受信に応答して、共有メモリ領域のデータ部分の１つからメッセージを取り出し、メッセージング・ハブにおいて受信したメッセージを処理することを含む。
【０００９】
実施形態の１つの態様において、メッセージは、ＲＤＭＡ書き込み操作によりトリガされるデータ利用可能イベントを検出することに応答して、取り出され、処理される。本発明の別の態様において、データ部分は等しいサイズのものであり、データ部分の各々は、データ部分が有効状態（valid status）であるか又は無効状態（invalid status）であるか、及び、データ部分がメッセージング・ハブによりサーバにおいて処理されたかどうかを示す、状態語（status word）を含む。従って、実施形態のさらに別の態様において、メッセージは、次の利用可能なデータ部分の状態が有効である場合、次の利用可能なデータ部分に書き込まれず、ひとたび次の利用可能なデータ部分の状態が無効になって初めて、次の利用可能なデータ部分に書き込まれる。
【００１０】
実施形態のさらに別の態様において、メッセージは、第１に共有メモリ領域のアドレスから制御部分の位置を計算し、第２に制御部分の位置にＲＤＭＡ  読み出し追加（ｆｅｔｃｈ−ａｎｄ−ａｄｄ）操作を行って制御部分からインデックス・データを獲得し、第３にインデックス・データのモジュロを計算してデータ部分の次の利用可能な部分の位置をもたらし、第４にデータ部分の次の利用可能な部分に対してメッセージのＲＤＭＡ書き込み操作を行うことによって、ネットワーク・インターフェース上でＲＤＭＡ書き込み操作を介して受信される。
【００１１】
最後に、メッセージング・ハブは、メッセージを１つ又は複数の購読しているメッセージ・コンシューマに転送することによって、メッセージを処理する。代替的に、メッセージング・ハブは、メッセージを１つ又は複数の購読しているメッセージ・コンシューマに転送することなく、メッセージを廃棄することによって、メッセージを処理する。
【００１２】
本発明の別の実施形態において、データ処理システムが、メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のために構成される。このシステムは、メモリ及び少なくとも１つのプロセッサを有するホスト・サーバと、ホスト・サーバのメモリ内で動作するメッセージング・ハブとを含む。メッセージング・ハブは、ネットワーク・インターフェースを通して、コンピュータ通信ネットワーク上のそれぞれ異なるクライアント・コンピューティング・システム内で実行される異なるメッセージ生成アプリケーションへの通信可能な結合を提供する。最後に、このシステムは、ホスト・サーバのメモリ内で実行され、メッセージング・ハブに結合されたＲＤＭＡ最適化処理モジュールを含む。
【００１３】
このモジュールは、実行中にイネーブルにされて、データ部分の利用可能な部分へのインデックスを格納する制御部分と、１つ又は複数のデータ部分とを含むように、ホスト・サーバのメモリの共有領域を初期化し、メッセージ生成アプリケーションにメモリの共有領域のアドレスを伝送し、ホスト・サーバのネットワーク・インターフェース上で、ＲＤＭＡ書き込み操作を介して、メッセージ生成アプリケーションの１つから、メモリの共有領域のデータ部分の１つにメッセージを受信し、メッセージの受信に応答して、共有メモリ領域のデータ部分の１つからメッセージを取り出し、メッセージング・ハブにおける受信メッセージの処理を指示する、プログラム・コードを含む。
【００１４】
本発明の付加的な態様は、以下の説明において部分的に示され、説明から部分的に明らかであり、又は本発明の実施により知ることができる。本発明の態様は、特に、添付の特許請求の範囲において指し示される要素及び組み合わせによって実現され、達成されるであろう。上記の一般的説明及び以下の詳細な説明は両方とも単に例示及び説明のためのものにすぎず、特許請求されるような本発明を制限するものではないことを理解されたい。
【００１５】
本明細書に組み込まれ、その部分を構成する添付図面は、本発明の実施形態を示し、説明と共に、本発明の原理を説明する役割を果たす。本明細書に示される実施形態は、現在好ましいものであるが、本発明は、示される正確な構成及び手段に制限されないことが理解される。
【図面の簡単な説明】
【００１６】
【図１】メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを図示する。
【図２】メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のために構成されたデータ処理システムの概略図である。
【図３】メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１７】
本発明の実施形態は、メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理を提供する。本発明の実施形態によると、サーバのメモリ内で実行されるメッセージング・ハブは、データ・セクション及び制御セクションを含むようにサーバのメモリの一部を初期化し、制御セクションは、データ・セクションの空いた部分へのインデックス付けを行う。その後、メッセージをメッセージング・ハブに送ろうとする遠隔配置されたメッセージ・プロデューサは、サーバのネットワーク・インターフェースにおいてＲＤＭＡを用いて制御セクションにアクセスし、同じくＲＤＭＡを用いて制御セクションにより指定される空いた部分にデータを書き込むことができる。次に、メッセージング・ハブは、データを読み取り、データを購読するメッセージ・コンシューマに読み取ったデータを発行することによって、メモリの空いた部分へのデータの書き込みに反応する。その際、メッセージ・プロデューサは、データをメッセージング・ハブに転送するためにメッセージング・キューの使用又はサーバの１つ又は複数のプロセッサの介入を全く必要とすることがない。
【００１８】
さらに別の例証において、図１は、メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のためのプロセスを図示する。図１に示されるように、メッセージング・ハブ１１０は、制御部分１２０及び１つ又は複数のデータ部分１３０を含むように、共有メモリの領域を初期化することができる。制御部分１２０は特に、メッセージ・プロデューサ１５０がメッセージを配置することができる、利用可能な１つのデータ部分１３０へのインデックスを与えることができる。
【００１９】
この点で、メッセージ・プロデューサ１５０は、メッセージング・ハブのネットワーク・インターフェース１６０を通して、メッセージング・ハブ１１０に接続することができる。メッセージング・ハブ１１０に接続すると、メッセージング・ハブ１１０は共有メモリのアドレスを与えることができ、それから、メッセージ・プロデューサ１５０は制御部分１２０を推定することができる。その後、メッセージ・プロデューサは、ネットワーク・インターフェース１６０においてＲＤＭＡ要求を用いて制御部分１２０のコンテンツにアクセスすることによって、共有メモリのデータ部分１３０へのインデックスを獲得することができる。
【００２０】
ひとたびメッセージ・プロデューサ１５０がインデックスを獲得すると、メッセージ・プロデューサ１５０は、ネットワーク・インターフェース１６０において再びＲＤＭＡ操作を用いて、メッセージ１４０を、データ部分１３０のインデックス付けされた部分に書き込むことができる。その後、メッセージ・プロデューサ１５０によるデータ部分１３０のインデックス付けされた部分へのメッセージ１４０の書き込みは、イベント１８０をトリガする。そのイベント１８０は、メッセージング・ハブに、データ部分１３０のインデックス付けされた部分を読み取ってメッセージ１４０を獲得するように警告するものである。メッセージ１４０を獲得すると、メッセージング・ハブ１１０は、メッセージ１４０を購読しているメッセージ・コンシューマ１７０に伝送するといった、メッセージ１４０の処理を行うことができる。
【００２１】
図１と関連して示されるプロセスは、データ処理システム内で実施することができる。より特定的な図において、図２は、メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理のために構成されたデータ処理システムを概略的に示す。システムは、メモリと、メッセージング・ハブ２２０の動作をホストする少なくとも１つのプロセッサとを有するホスト・サーバ２１０を含むことができる。メッセージング・ハブ２２０は、コンピュータ通信ネットワーク２７０上で、クライアント・コンピューティング・システム２４０の間に配置された異なるアプリケーション２５０からの発行・購読型の枠組みに従って、ホスト・サーバ２１０のネットワーク・インターフェース２３０を通してメッセージ２８０を処理するように構成することができる。
【００２２】
ＲＤＭＡ最適化メッセージ処理モジュール３００は、ホスト・サーバ２１０のメモリ内で実行され、クライアント・コンピューティング・システム２４０と関連してアプリケーション２５０の各々に結合されたメッセージング・モジュール２６０と相互運用することができる。ＲＤＭＡ最適化メッセージ処理モジュール３００は、ホスト・サーバ２１０のメモリ内で実行されるとき、メッセージ２８０を互いに交換する異なるアプリケーション２５０により共有するために、ホスト・サーバ２１０のメモリの領域を初期化することができるプログラム・コードを含むことができる。この領域は、等しいサイズのデータ部分に分割することができ、同じくこの領域は、一つの制御部分を含むことができる。
【００２３】
制御部分はデータ部分の次の空いた部分のインデックスを格納することができ、一方、各データ部分は、メッセージ２８０の形態のデータを格納することに加えて、格納されたデータが有効か又は無効かを示す状態語を格納することができる。有効とは、データがメッセージング・ハブ２２０により処理できる状態であることを意味する。無効とは、データがメッセージング・ハブ２２０により既に処理されていることを意味する。ＲＤＭＡ最適化メッセージ処理モジュール３００のプログラム・コードはまた、ホスト・サーバ２１０のメモリ内で実行中にイネーブルにされ、メッセージ・モジュール２６０の１つによる接続に応答して、共有メモリ領域のアドレス、共有メモリ領域における各データ部分のサイズ、及びメッセージ・モジュール２６０による利用に供されるデータ部分の総数をメッセージ・モジュール２６０に提供することもできる。
【００２４】
注目すべきことに、ＲＤＭＡ最適化メッセージ処理モジュール３００に対する協働アネックス(Cooperative annex)としての各メッセージ・モジュール２６０は、クライアント・コンピューティング・システム２４０の対応するもののメモリ内で実行されると、イネーブルにされて、接続中のＲＤＭＡ最適化メッセージ処理モジュール３００により与えられる情報から、例えばメモリ領域の始まりの位置などの共有メモリ領域の制御部分の位置、及び同じく共有メモリ領域内の第１のデータ部分のアドレスを判断するプログラム・コードを含むことができる。その後、メッセージ・モジュール２６０のプログラム・コードは、第１の利用可能なデータ部分へのインデックスを獲得することができる。
【００２５】
特に、メッセージ・モジュール２６０のプログラム・コードは、最初に、次の利用可能な１つのデータ部分のインデックスを含む共有メモリ領域の位置に、ネットワーク・インターフェース２３０のＲＤＭＡ  読み出し追加（ｆｅｔｃｈ−ａｎｄ−ａｄｄ）操作を実施することができる。その後、メッセージ・モジュールのプログラム・コードは、読み出し追加操作により戻される値に対し共有メモリ領域内の総データ部分のモジュロ（modulo：除算後の余り）を計算することができる。結果は、ホスト・サーバ２１０のメモリの共有領域の第１の利用可能なデータ・セクションへのインデックスとなる。任意的に、メッセージ・モジュール２６０のプログラム・コードは、インデックスが無効とマーク付けされた場合にのみメッセージがデータ・セクションに書き込まれることを確実にするために、インデックスにより参照されるデータ部分が有効とマーク付けされるか又は無効とマーク付けされるかを判断することができる。
【００２６】
ひとたびメッセージ・モジュール２６０が、無効状態であると分かっているデータ部分を識別すると、メッセージ・モジュール２６０は、ネットワーク・インターフェース２３０を通して、ＲＤＭＡ書き込み操作を用いて、メッセージ２８０をインデックス付けされたデータ部分に書き込むことができる。その結果、データ部分の状態は自動的に有効になる。また、ＲＤＭＡ書き込み操作は、新しく書き込まれたメッセージ２８０を格納するデータ部分へのインデックスを含むホスト・サーバ２１０内のデータ利用可能イベントをトリガする。データ利用可能イベントに応答して、データ利用可能イベントに対処するようにプログラムされたＲＤＭＡ最適化メッセージ処理モジュール３００のプログラム・コードの実行の１つ又は複数のスレッドは、メッセージ２８０をメモリに読み込み、無効なデータ部分にマーク付けし、そして、メッセージ２８０をアプリケーション２５０の１つ又は複数の購読しているものに伝送し、メッセージ２８０を廃棄し、メッセージ２０８を持続させ、又は他の何らかの操作によりメッセージ２８０に作用させることによって、メッセージ２８０を処理することができる。
【００２７】
ＲＤＭＡ最適化メッセージ処理モジュール３００及びメッセージ・モジュール２６０の動作のさらにより特定的な図において、図３は、メッセージング・ハブにおけるＲＤＭＡを用いた最適化プロデューサ・コンシューマ・メッセージ処理を示すフローチャートである。メッセージング・ハブにおけるＲＤＭＡ最適化プロデューサ・コンシューマ・メッセージ処理に関するブロック３０５において始まり、制御部分及び等しいサイズの１つ又は複数のデータ部分の両方を含むように、ホスト・サーバの共有メモリ領域を初期化することができ、各々のデータ部分は、内部に含まれるデータが有効か又は無効かを示す語も含む。ブロック３１０において、制御部分において、第１の利用可能なデータ部分に対してインデックスを設定することができる。
【００２８】
ブロック３１５において、メッセージ・プロデューサとして働くクライアント・コンピューティング・システム内のメッセージ・モジュールから、クライアント接続を受け取ることができる。それに応じて、ブロック３２０において、共有メモリ領域のメモリ内のアドレスを、多数のデータ部分及びあるサイズの各データ部分と共に、メッセージ・モジュールに与えることができる。その後、ＲＤＭＡ最適化メッセージ処理モジュールの実行の１つ又は複数のスレッドは、データ利用可能イベントの検出を待つことができる。決定ブロック３２５において、データ利用可能イベントが検出された場合、ブロック３３０において、共有メモリ領域のデータ部分の１つにおけるデータの位置は、データ利用可能イベントから判断することができ、ブロック３３５において、データを取り出し、メッセージとして処理することができる。
【００２９】
ここでメッセージ生成クライアントにおけるメッセージ・モジュールの動作を参照すると、ブロック３４０において、メッセージング・ハブのホスト・サーバとの接続を確立し、メッセージング・ハブへのメッセージを生成し、任意的にメッセージング・ハブからのメッセージを消費することができる。ブロック３４５において、多数のデータ部分及びあるサイズの各データ部分と共に、ＲＤＭＡ最適化メッセージ処理モジュールから、共有メモリ領域のメモリ内のアドレスを取り出すことができる。その後、ブロック３５０において、メッセージング・ハブの動作をホストするホスト・サーバへのネットワーク・インターフェース上で、ＲＤＭＡ  読み出し追加操作を呼び出してインデックス・データを獲得し、そこから、ブロック３５５において、共有メモリ領域の次の利用可能なデータ部分に対するインデックスを計算することができる。
【００３０】
決定ブロック３６０において、データ部分の有効状態又は無効状態に基づいて、次のデータ部分が新しく書き込まれたデータを受け取ることができるかどうかを判断できる。次の利用可能なデータ部分が有効状態でないと判断された場合、ブロック３６５において、メッセージ・モジュールは、状態が無効になるまで、データ部分の有効状態又は無効状態をポーリングしながら待つことができる。決定ブロック３６０において、次の利用可能なデータ部分の状態が有効状態であると判断された場合、ブロック３７０において、メッセージを次の利用可能なデータ部分に書き込み、ブロック３７５において、状態を有効に設定することができる。ブロック３７０において、メッセージを次の利用可能なデータ部分に書き込む動作は、ブロック３３０及び３３５における処理のためのデータ利用可能イベントもトリガする。
【００３１】
当業者であれば理解するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００３２】
１つ又は複数のコンピュータ可読媒体のいずれかの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの、即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能な任意の有形媒体とすることができる。
【００３３】
コンピュータ可読信号媒体は、例えばベースバンド内に、又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
【００３４】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、無線周波数等、又は上記のもののいずれかの適切な組み合わせを含む任意の適切な媒体を用いて伝送することができる。本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、オブジェクト指向型プログラミング言語及び従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００３５】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して上述される。この点で、図内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。例えば、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図内で記された順序とは異なる順序で生じ得ることにも留意されたい。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００３６】
フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることも理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。
【００３７】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００３８】
最後に、本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び／又はコンポーネントの存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び／又はこれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。
【００３９】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求される他の特許請求された要素と組み合わせで実行するためのあらゆる構造、材料又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が、当業者には明らかになるであろう。実施形態は、本発明の原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う実施形態に関して本発明を理解できるように、選択され、説明された。
【００４０】
このように、本出願の発明を詳細に、その実施形態を参照して説明したが、以下の添付の特許請求に定められる本発明の範囲から逸脱することなく、修正及び変形が可能なことが明らかになるであろう。
【符号の説明】
【００４１】
１１０、２２０：メッセージング・ハブ
１２０：制御部分
１３０：データ部分
１４０、２８０：メッセージ
１５０：メッセージ・プロデューサ
１６０：ネットワーク・インターフェース
１８０：イベント
２１０：ホスト・サーバ
２３０：ネットワーク・インターフェース
２４０：クライアント・コンピューティング・システム
２５０：アプリケーション
２６０：メッセージ・モジュール
２７０：コンピュータ通信ネットワーク
３００：ＲＤＭＡ最適化メッセージ処理モジュール
【図１】
0006403782.tif 000002
【図２】
0006403782.tif 000003
【図３】
0006403782.tif 000004