JP6238898B2 - ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 - Google Patents

ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 Download PDF

Info

Publication number
JP6238898B2
JP6238898B2 JP2014533333A JP2014533333A JP6238898B2 JP 6238898 B2 JP6238898 B2 JP 6238898B2 JP 2014533333 A JP2014533333 A JP 2014533333A JP 2014533333 A JP2014533333 A JP 2014533333A JP 6238898 B2 JP6238898 B2 JP 6238898B2
Authority
JP
Japan
Prior art keywords
message
data structure
shared memory
control data
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014533333A
Other languages
English (en)
Other versions
JP2014531687A5 (ja
JP2014531687A (ja
Inventor
フランク,リチャード
リトル,トッド
カイマレッツ,アルン
トミンナ,レオナルド
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2014531687A publication Critical patent/JP2014531687A/ja
Publication of JP2014531687A5 publication Critical patent/JP2014531687A5/ja
Application granted granted Critical
Publication of JP6238898B2 publication Critical patent/JP6238898B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

著作権表示:
この特許文書の開示の一部は、著作権の保護下にある内容を含む。著作権所有者は、特許商標庁の特許ファイルまたは記録に現れるので、誰でも当該特許文書または特許開示を複製することについて異議を唱えないが、そうでなければ如何なる場合でもすべての著作権を留保する。
発明の分野:
この発明は、概して、ミドルウェアなどのコンピュータシステムおよびソフトウェアに関し、特に、トランザクションミドルウェアマシン環境をサポートすることに関する。
背景:
トランザクションミドルウェアシステムまたはトランザクション指向のミドルウェアは、構成内におけるさまざまなトランザクションを処理することのできるエンタープライズアプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータなどの新技術の開発に伴い、トランザクションミドルウェアの性能をさらに向上させる必要がある。これらは、概して、本発明の実施形態が対処するよう意図された分野である。
概要:
ミドルウェアマシン環境においてメッセージキューを設けるためのシステムおよび方法をこの明細書中に記載する。トランザクションミドルウェアマシン環境は、メッセージ受信側にメッセージ制御データ構造と、共有メモリ内に、メッセージ受信側に関連付けられるヒープデータ構造とを含む。メッセージ送信側は、メッセージをヒープデータ構造にダイレクトに書込み、メッセージ制御データ構造においてメッセージに関連付けられるメタデータを維持するよう動作する。さらに、ミドルウェアマシン環境は、メッセージ受信側に共有メモリを含む。共有メモリは、ミドルウェアマシン環境のための1つ以上のメッセージキューを維持する。加えて、ミドルウェアマシン環境はデーモンプロセスを含む。このデーモンプロセスは、メッセージの送信および受信をサポートするよう少なくとも1つのメッセージキューが設定されることをクライアントが要求する場合、共有メモリにおいて少なくとも1つのメッセージキューを作成することができる。
本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供する例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境において正確なロードバランスをサポートするための例示的なフローチャートを示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのリモートメモリリングを提供する例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境において複数のメッセージ送信側によって同時にアクセスすることのできるメッセージキューの例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境におけるマルチノードアプリケーションのためのSystem Vメッセージキューを用いる例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境におけるマルチノードアプリケーションのためのリモートダイレクトメモリアクセス(remote direct memory access:RDMA)メッセージキューの例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを作成および管理することのできるデーモンプロセスの例を示す図である。 本発明の実施形態に従った、トランザクションミドルウェアマシン環境において正確なロードバランスをサポートするための例示的なフローチャートを示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを保護するのに用いることができるセキュリティモデルの例を示す図である。 本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを保護するための例示的なフローチャートを示す図である。
詳細な説明:
トランザクションミドルウェアマシン環境において複数のプロセッサを備えた高速マシンおよび高性能ネットワーク接続を活用することのできるトランザクションミドルウェアシステムを、サポートするためのシステムおよび方法をこの明細書中に記載する。当該システムは、リングバッファ(円形のキュー)に基づいたデータ構造を用いてマルチノードアプリケーションのためのメッセージキューを設けることができる。当該システムは、リーダ上に第1のリング構造とライタ上に第2のリング構造とを備えたリモートリング構造を含む。第1のリング構造および第2のリング構造の各々は、ヘッドポインタおよびテールポインタを有する。ライタは、リモートリングにメッセージを書込むよう動作すると、第1のリング構造および第2のリング構造の両方のためにヘッドポインタと、リモートリング構造におけるデータとを更新し得る。リーダは、リモートリングからメッセージを読取るよう動作すると、第1のリング構造および第2のリング構造の両方のためにテールポインタを更新し得る。加えて、メッセージをヒープデータ構造に記憶させることができ、メッセージに関連付けられるメタデータをリモートリング構造に記憶させることができる。
本発明の実施形態に従うと、当該システムは、高性能ハードウェア(たとえば64ビットプロセッサ技術、高性能の大規模メモリ、ならびに冗長なInfiniBandおよびイーサネット(登録商標)ネットワーキング)と、WebLogic Suiteなどのアプリケーションサーバまたはミドルウェア環境との組合せを含み、これにより、迅速に設けられ得るとともにオンデマンドでスケール変更可能な大規模並列メモリグリッドを含む完全なJava(登録商標)EEアプリケーションサーバコンプレックスを提供する。一実施形態に従うと、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびInfiniBand(IB)ネットワークを提供するフルラック、ハーフラック、もしくはクォーターラック、または他の構成として展開され得る。ミドルウェアマシンソフトウェアは、たとえばWebLogic Server、JRockitまたはHotspot JVM、Oracle Linux(登録商標)またはSolaris、およびOracle VMといった、アプリケーションサーバと、ミドルウェアと、他の機能性とを提供し得る。当該システムは、IBネットワークを介して互いに通信する複数の計算ノードと、IBスイッチゲートウェイと、ストレージノードまたはユニットとを含み得る。ラック構成として実現される場合、当該ラックの未使用部分は空のままとされ得るかまたはフィラー(filler)によって占有され得る。
本願明細書において「Sun Oracle Exalogic」または「Exalogic」と称される本発明の実施形態に従うと、当該システムは、Oracle Middleware SW suiteまたはWeblogicといったミドルウェアまたはアプリケーションサーバソフトウェアをホストするための、展開が容易なソリューションである。本願明細書に記載されるように、当該システムは、1つ以上のサーバと、ストレージユニットと、ストレージネットワーキングのためのIBファブリックと、ミドルウェアアプリケーションをホストするのに必要な他のすべてのコンポーネントとを含む「グリッド・イン・ア・ボックス(grid in a box)」である。たとえばReal Application ClustersおよびExalogic open storageを用いて大規模並列グリッドアーキテクチャを活用することにより、すべてのタイプのミドルウェアアプリケーションのために有意な性能が与えられ得る。このシステムは、線形のI/Oスケーラビリティとともに向上した性能を与え、使用および管理が簡潔であり、ミッションクリティカルな可用性および信頼性を与える。
本発明の実施形態に従うと、Tuxedoは1セットのソフトウェアモジュールであって、高性能の分散型ビジネスアプリケーションの構築、実行および管理を可能にし、複数の多層アプリケーション開発ツールによってトランザクションミドルウェアとして用いられてきた。Tuxedoは、分散型コンピューティング環境における分散型トランザクション処理を管理するのに用いることができるミドルウェアプラットフォームであり、無限のスケーラビリティおよび規格ベースの相互運用性を提供しつつ、エンタープライズレガシーアプリケーションをアンロックし、サービス指向のアーキテクチャーへと拡張するための検証済みのプラットフォームである。
本発明の一実施形態に従うと、ミドルウェアマシン環境は、マルチノードアプリケーションのためのメッセージキューを与えることができる。トランザクションミドルウェアマシン環境は、メッセージ受信側にメッセージ制御データ構造と、共有メモリ内に、メッセージ受信側に関連付けられるヒープデータ構造とを含む。メッセージ送信側は、ヒープデータ構造にダイレクトにメッセージを書込み、メッセージ制御データ構造においてメッセージに関連付けられるメタデータを維持するよう動作する。さらに、メッセージ制御データ構造は、ヘッドポインタおよびテールポインタを備えたリング構造であってもよい。加えて、メッセージ受信側は複数のクライアントに接続されるサーバ上に存在し、上記クライアントの各々は、メッセージ制御データ構造の専用コピーを保持する。また、メッセージ受信側は、メッセージ受信側に関連付けられたメッセージ制御データ構造への同時アクセスをサポートすることができる。
本発明の別の実施形態に従うと、ミドルウェアマシン環境は、マルチモードアプリケーションのためのメッセージキューを管理することができる。ミドルウェアマシン環境は、メッセージ受信側に共有メモリを含む。共有メモリは、ミドルウェアマシン環境のために1つ以上のメッセージキューを維持する。ミドルウェアマシン環境はさらにデーモンプロセスを含む。デーモンプロセスは、メッセージの送信および受信をサポートするよう少なくとも1つのメッセージキューが設定されることをクライアントが要求する場合に、共有メモリにおいて少なくとも1つのメッセージキューを作成することができる。加えて、クライアント上のさまざまなプロセスは、少なくとも1つのプロキシを用いてメッセージサーバと通信するよう動作する。さらに、ミドルウェアマシン環境は、デーモンプロセスによって作成されたセキュリティトークンを用いて、マルチモードアプリケーションのためのメッセージキューを保護することができる。
マルチノードアプリケーションのためのメッセージキュー
本発明の実施形態に従うと、メッセージ通信キューなどのメッセージ通信ソフトウェアは、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いてIBネットワークなどの高性能ネットワークを活用し得る。RDMAプロトコルは、メッセージ送信側が、リモートマシン上のプロセスを起動させる必要なしに、OSカーネルをバイパスしてメモリにダイレクトアクセスすることを可能にする。
図1は、本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを与える例を示す。図1に図示のとおり、ミドルウェアマシン環境100は、マシンA 101およびマシンB 102などの複数のサーバマシンを含み得る。ローカルマシンたとえばマシンA 101上のメッセージ送信側103は、リモートマシンたとえばマシンB 102上のメッセージ受信側104にメッセージ107を送信することができる。リモートマシンB 102上のメッセージ受信側104は、メッセージキューまたはメッセージ制御データ構造108およびヒープデータ構造110を含む共有メモリ106を用いることができる。
本発明の実施形態に従うと、メッセージキューは、メッセージに関連付けられたメタデータ情報だけを含み得る一方で、ヒープデータ構造は物理的なメッセージを含む。このため、可変サイズのメッセージに容易に対処することができ、この可変サイズのメッセージを共有メモリに記憶することができる。図1に図示のとおり、メッセージ送信側103はヒープデータ構造110にダイレクトにメッセージを書込み、かつメッセージ制御データ構造108においてメッセージに関連付けられたメタデータを維持するよう動作する。
また、図1に図示のとおり、メッセージ送信側103は、ローカルマシン、すなわちマシンA 101、上にメッセージ制御データ構造105を含む。メッセージ制御データ構造105は、メッセージ送信側103のためのメッセージキュー108のコピーであり得る。ローカルマシンA 101上のメッセージ送信側はさらに、ローカルマシンA 101上のメッセージ制御データ構造105においてメッセージに関連付けられたメタデータを維持することができる。
本発明の実施形態に従うと、ローカルマシンA 101上のメッセージ送信側は、リモートマシンB 102上の共有メモリ106内のヒープデータ構造110にダイレクトにメッセージを書込むことができる。図1に図示のとおり、メッセージ送信側103は、メッセージ受信側104によって提供されるアドレス指定情報を用いてリモートマシンB 102上のOSカーネルをバイパスすることができる。さらに、ローカルマシンA 101上のメッセージ送信側103は、ローカルマシンA 101上の制御構造を介してリモートマシンB 102内のキューにおいて入力シーケンス番号などのメッセージの状況情報を更新することができる。
さらに、ローカルマシンA 101上のメッセージ送信側103は、メッセージのサイズに関わらず、メッセージ受信側104にメッセージを送信することができる。したがって、このメッセージ通信メカニズムは、コスト効率が良く効率的なものであり得、大量のデータのためのオーバーヘッドをさほど必要としない。
加えて、メッセージ送信側103は、予め構成された手順に従って、メッセージ受信側104に関連付けられたリモートマシンB 102上のプロセス112を起動させることができる。たとえば、メッセージ送信側は、プロセスによって処理することのできるサービス要求メッセージが配信された場合にプロセスを起動させることができる。別の例においては、キューがフルである場合、メッセージ送信側は、リモートマシンB 102上のデーモンプロセスを起動させることができる。
本発明の実施形態に従うと、メッセージ受信側のプロセス、たとえばプロセス112がスリープに入る前に、当該プロセスは、クライアント側のメッセージ制御構造105を認識することができる、および/または、それ自体を如何に起動させるかについての手順をメッセージ制御構造105に提供することができる。次いで、受信側のプロセスはメッセージの配信を待つことができる。たとえば、メッセージが来ることを予想しているプロセスは、メッセージ送信側によって起動されるまでスリープ状態であってもよい。
また、図1に図示のとおり、メッセージ受信側104がメッセージを使い果たした後、メッセージ受信側はキューからメッセージを取出すことでき、この場合、メッセージ受信側は、RDMA書込み動作を実行することによってメッセージキュー108と送信側の制御構造105とを更新することができる。このようなRDMA書込み動作は、リモートマシンB 102上のクライアントから干渉のない態様で実行することができる。
本発明の実施形態に従うと、ミドルウェアマシン環境において2つのサーバ間で双方向通信をサポートするために、ミドルウェアマシン上の各サーバは受信側および送信側を備え得る。このため、これら2つのサーバ間の通信は、RDMA書込み動作などのRDMAプロトコルを用いて、さまざまなマシンにおいてさまざまなメッセージ送信側によって実行することができる。
図2は、本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを与えるための例示的なフローチャートを示す。図2に図示のとおり、ステップ201において、システムはメッセージ受信側に第1のメッセージ制御データ構造を設けることができる。ステップ202において、システムは、共有メモリ内のヒープデータ構造をメッセージ受信側に関連付けることができる。次いで、203において、システムは、メッセージ送信側がヒープデータ構造にメッセージをダイレクトに書込み、第1のメッセージ制御データ構造においてメッセージに関連付けられたメタデータを維持することを可能にする。
リモートメモリリング
本発明の実施形態に従うと、リングバッファ(円形のキュー)に基づいたデータ構造は、このシステムのバックボーンになり得る。簡素化された場合には、このリング構造は先入れ先出し(first-in first-out:FIFO)キューとして機能し得る。
図3は、本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのリモートメモリリングを設ける例を示す。図3に図示のとおり、メッセージ送信側301およびメッセージ受信側302はともに、メッセージ制御データ構造としてリング構造を用いることができ、各々のリング構造はヘッドポインタおよびテールポインタを備えることができる。メッセージ送信側301がメッセージリーダ302上のメッセージキュー、たとえば共有メモリ内のヒープデータ構造、にメッセージを書込むよう動作すると、メッセージ送信側301は両方のリング構造のためにヘッドポインタ303および304を更新することができる。他方で、メッセージ受信側302またはリーダが共有メモリ内のヒープデータ構造からメッセージを読取るよう動作すると、リーダは両方のリング構造のためにテールポインタ305および306を更新する。
本発明の実施形態に従うと、リング構造内のヘッドポインタは、メッセージキューに加えられた最新のメッセージを指し、リング構造内のテールポインタはメッセージキューにおける最も古いメッセージを指す。アクティブなメッセージがヘッドポインタとテールポインタとの間に記憶される。メッセージ送信側またはライタは、キューのヘッドポインタとテールポインタとの間の自由空間(図3におけるリング構造の白い部分)を参照して、新しいメッセージを書込むのに応じてヘッドポインタを前方に移動させることができる。他方で、メッセージリーダは、キューのヘッドポインタとテールポインタとの間(図3におけるリング構造の影付き部分)を参照して、新しいメッセージを得て、これらリーダがメッセージを読取るのに応じてテールポインタを前方に移動させることができる。これにより、ヘッドポインタおよびテールポインタをともに確実に一方向のみに移動させる。
本発明の実施形態に従うと、各々のリング動作のために以下の限定事項が維持され得る:リーダだけがテールポインタを更新する;ライタだけがヘッドポインタを更新する;リング構造におけるテールポインタからヘッドポインタまでの区域は有効な未読メッセージを含む;リング構造におけるヘッドポインタからテールポインタまでの区域は常に空いている。このため、ライタがリングに書込みを行う場合であってもリーダはメッセージを読取ることができ、リーダとライタとの間に同期は必要ない。
並列実行されるリーダおよびライタ
本発明の実施形態に従うと、ミドルウェアマシン環境におけるさまざまなクライアント上の複数のメッセージ送信側はミドルウェアマシン環境におけるサーバマシン上のメッセージキューに同時にアクセスすることができる。
図4は、本発明の実施形態に従った、ミドルウェアマシン環境において複数のメッセージ送信側によって同時にアクセスすることができるメッセージキューの例を示す。図4に図示のとおり、サーバ401は、メッセージキュー403を用いて、複数のクライアントたとえばクライアントA 411〜クライアントD 414からのサービス要求を同時に処理することができる。メッセージキュー403はサーバマシン上の共有メモリ402に維持することができる。各クライアントは、メッセージキュー403の専用コピーであり得る別個のメッセージキュー421〜424を維持することができる。さらに、各メッセージキュー421〜424がタイムリーに更新されることを確実にするために、メッセージキュー403のさまざまな専用コピー(すなわちメッセージキュー421〜424)をメッセージキュー403とたとえば周期的に同期させることができる。
本発明の実施形態に従うと、キューまたはキューにおける特定のエントリがそのときクライアントによって更新されている場合、メッセージキュー上でロックを起動させることができる。キューがサーバマシン上の共有メモリにあるので、他のすべてのクライアントは、キューがロックされていることを認識することができ、メモリのうちキュー内の特定のエントリに関連付けられる対応部分に書込みを行わないようにすることができる。さらに、メッセージの送信は、送信側でRDMA書込み動作を実行することによって実現することができる。したがって、共有メモリにおけるキューおよびその関連付けられたヒープデータ構造についての書込みおよびアクセスの際にコンフリクションが生じないことを保証するために、受信側でラッチまたは直列化メカニズムを実現してロックする必要はない。
本発明の実施形態に従うと、クライアント同士は、キューにアクセスするために競合し得る。クライアントがキュー上でロックを獲得するかまたはキューにおける特定のエントリを獲得すれば、他のクライアントは、たとえば単一ノード環境におけるOSによって提供されるセマフォメカニズムを用いて、または、マルチノード環境内のRDMAアトミックスおよびラッチレスメカニズムを用いて、ロックの解放を待つことができる。
System Vメッセージキュー
本発明の実施形態に従うと、分散型トランザクションシステムは、クライアントが利用可能なサーバに作業を委託することを可能にするサーバ−クライアントモデルを用いることができる。クライアントは、作業が終わると結果を得ることができる。作業の委託およびその完了はメッセージキューを用いて伝えることができる。System Vメッセージキューは、オラクルTuxedo環境などの分散型トランザクション環境において単独のマシン上で作業の委託および完了を処理する効率的な方法を提供する。さらに、System Vメッセージキューは、複数のマシン間での作業を共有するために拡張させることができる。
図5は、本発明の実施形態に従った、ミドルウェアマシン環境においてマルチノードアプリケーションのためのSystem Vメッセージキューを用いる例を示す。図5に図示のとおり、シャドウキュー作成モデルは、ミドルウェアマシン環境500においてSystem Vメッセージキューに対して適用することができる。メッセージキューQ 511がノードA 501上で作成されると、そのノード上のブローカ、すなわちブローカA 504に対し、メッセージキューQ 511が存在していることを通知することができる。次いで、ブローカA 504は、他のノード502〜503上の同様のブローカと通信し、これらに、クラスタ内の各ノード上に同じ名前「Q」を有するキューを作成させることができる。
本発明の実施形態に従うと、ノードB 502上のプロセス507はローカルメッセージキューQ 512に書込みを行うことができる。ノードBはメッセージキューQ 511が最初に作成されたノードではないので、ノードB上のブローカプロセスでは、メッセージキュー512からメッセージを読取り、TCP接続を用いてネットワークを介してノードA上のブローカA 504にメッセージを送信することができる。次いで、ブローカA 504は、ノードA上のメッセージキューQ 511にメッセージを書込むことができる。このようにして、如何なるノード上のプロセスでも、キューがローカルであるかまたはリモートであるかどうかを実際に識別することなく、いずれのノードから作成されたキューにも書込みを行うことができる。加えて、ノードA上のブローカA 504はすべてのシャドウキューを絶えず監視することができ、シャドウキューのいずれかに書込まれたメッセージを、元のキューが作成されたノードAへと伝搬させることができる。
上述のプログラミングモデルに付随する限定事項がある。たとえば、1)リモートノードからキューに書込まれたメッセージは、いくつか(たとえば5個)のメモリコピーが宛先キューに達することを必要とし得る。このため、このモデルは、CPUバスに対して多くのストレスを与える;2)多数のキューが存在する場合、環境全体がブローカの処理量に左右され、これがボトルネックになる可能性がある。および、3)このモデルは、メッセージの転送をスケーリングすることのできる利用可能なRDMAネットワークを活用しない。
RDMAメッセージキュー
本発明の実施形態に従うと、Tuxedoシステムなどのトランザクションミドルウェアシステムは、Exalogicミドルウェアマシンなどの複数のプロセッサを備えた高速マシンおよび高性能ネットワーク接続を利用することができる。
当該システムは、Exalogicミドルウェアマシンを備えた利用可能なRDMA対応のIBネットワークを用いる能力をトランザクションミドルウェアシステム、たとえばOracle Tuxedoに与えることができる。RDMAは、ホストチャネルアダプタ(host channel adapter:HCA)および/またはネットワークインターフェイスカード(network interface card:NIC)に対するメッセージ転送に付随するほとんどのCPU作業の負担を軽減することができる。当該システムは、Exalogicマシンと同様の態様で、TuxedoがRDMA対応システム上でそのトランザクション処理容量をスケーリングするのを支援することができる。当該システムは、ユーザがRDMAを用いてIBネットワーク上でメッセージキューを実行させることができるように、既存のメッセージ通信インフラストラクチャ実現例にRDMA能力を追加することができる。
図6は、本発明の実施形態に従った、ミドルウェアマシン環境におけるマルチノードアプリケーションのためのRDMAメッセージキューの例を示す。図6に図示のとおり、2ノードのメッセージキューは、リモートリング構造を用いてメッセージキューを表わすことができる。リモートリング構造は、リーダ側で維持される1つのリング構造608とライタ側で維持される別のリング構造605とを含む2つの標準的なリング構造上にある。ローカルマシンすなわちマシンA 601上のメッセージ送信側603は、たとえばRDMAプロトコル620を用いて、リモートマシンすなわちマシンB 602上のメッセージ受信側604にメッセージを送信することができる。
本発明の実施形態に従うと、メッセージ受信側は、まず、リモートマシン内の共有メモリにおいてキューを作成し、ネットワークインターフェイスカードに共有メモリ内のキューのアドレスを通知することができる。メッセージキューは、ヘッドポインタおよびテールポインタを含むリングバッファデータ構造を用いて実現することができる。加えて、メッセージ受信側は、受信メッセージを含めるよう共有メモリにおいてヒープデータ構造を実現することができる。次いで、メッセージ受信側は、共有メモリにおいてヒープデータ構造のアドレス情報とともにメッセージキューの作成についてもメッセージ送信側に通知することができる。
加えて、ライタがメッセージキューに新しいメッセージを書込む場合、システムは両方のリング構造上のリングデータおよびヘッドポインタを更新する。当該システムは、リーダがリモートノード上にある場合、RDMAを用いてリーダ側の構造を更新することができる。同様に、リーダは、これらリーダがメッセージを読取るのに応じて両方のリングを更新させ続けることができる。
本発明の実施形態に従うと、メッセージは、リング構造へダイレクトに記憶されない。実際のメッセージをどこで検索できるかについてのメタデータだけがリング構造内に維持される。メッセージは、リーダノードにおいて維持されるヒープデータ構造610に記憶される。実際のメッセージは、RDMA書込み動作620を用いて、ライタプロセスからリーダノード上の割当てられたメモリにまで転送させることができる。リモートヒープ610の実現例は可変サイズのメッセージをサポートすることができる。このリモートヒープ610においては、たとえ実際のヒープメモリがリーダノード上で維持されたとしても、割当て動作および解放動作はライタノード上で遂行される。一例においては、ヒープメモリ610はリーダノード上にあり、ヒープメタデータ全体はライタノード上に記憶される。したがって、如何なるネットワーク通信も行わずにライタ側からヒープ割当てを行うことができる。さらに、ヒープ管理は、競合をさらに最小限にするために/リモートキューの回復を簡略化にするために、スロット割当てミューテックス/ステップから切離すことができる。
以下のリスト1は、メッセージを優先させることなくロックの助けを借りてキューが作成された場合のキュー書込みおよび読取り動作を示す擬似コードを含む。
本発明の実施形態に従うと、キュー動作全体は、さまざまなクライアントプロセスによってユーザモードで起こり得る。プロセスは、共有リング構造またはヒープメタデータを更新している間、たとえば、get_next_slot/allocate ring slotを実行しているときに、例外的に終了させることができる。回復メカニズムを用いてプロセスの終了(death)を検出し、メタデータを一定の状態にして、他のプロセスが依然として同じキュー上で動作できるようにする。
本発明の実施形態に従うと、起動メカニズムを提供することができる。リスト1中の上述の擬似コードは、単一の優先事項のために作成されるキューの場合に実行することのできるステップの概要を示す。当該システムは、また、各メッセージが優先事項を有することを可能にし、優先事項に基づいた検索を可能にする。しばしば、クライアントは、特定の何らかの特性(「n」未満の優先事項または「n」と等しい優先事項または「n」のない優先事項など)を有するメッセージを要求する可能性がある。この要求を満たすことのできるメッセージがそのときキューに存在しない場合、クライアントプロセスをスリープモードにすることができる。このクライアントプロセスは、いずれかのノードからのプロセスが、要求を満たし得るメッセージを書込む際に、起動させることができる。特定の要求を待機するプロセスを起動させるためのメカニズムがRDMAに基づいて実現され得る。
さまざまなクライアントプロセスが、同じキュー上で読取りおよび/または書込みを行うことができる。このようなシナリオでは、キューは共有メモリ(または共有ストレージ)上で作成することができる。大抵の共有メモリベースのアプリケーションにおいては、共有データを更新する場合、ミューテックスの利用が必要となる可能性がある。込み合った読取りおよび書込み経路におけるロックを回避するために、リング構造およびアトミックなコンペア・アンド・スワップ(compare and swap:CAS)命令に基づいた方法を実現することができる。
本発明の実施形態に従うと、メッセージ転送のためにRDMAを用いることによりメモリバスの利用を削減することができる。これによりメッセージ転送全体からCPUが解放され、これにより、CPUは、メッセージの転送中に他の作業を行うことができる。さらに、当該システムは、System Vメッセージキューのためのブローカなどのボトルネックが排除された状態ではよりスケーラブルになる。このため、RDMAを用いることにより、CPUの使用、メッセージ転送処理量およびメッセージ転送レイテンシに関して実質的な利点が得られる。
本発明の実施形態に従うと、当該システムは、ノード間メッセージ転送にRDMAを用いてメッセージキューを活用することができる。当該システムは、リモートリング構造を用いて、さまざまなマシンから同時にメッセージの読取りおよび書込みを行うことができる。当該システムは、リモートヒープが割当てられた可変サイズのメッセージを処理することができる。回復モデルを用いることにより、ローカルノード上またはリモートノード上で異常なプロセスが終了する場合にキューを回復させることができる。キューは、共有データに対するローカルな動作またはRDMA動作を行うために、考案されたメカニズムを用いて共有メモリ上で作成される。当該システムは、メッセージを待っているリモートプロセスのためにRDMAに基づいた起動メカニズムを用いることができ、並列実行される(concurrent)リーダおよびライタが、ユーザモードプロセスから、ラッチレス同期を用いて同じキュー上で動作することが可能となる。
本発明の実施形態に従うと、当該システムは、最新のネットワークインターフェイスカードにおいて利用可能なRDMA機構を活用することによってさまざまなノード間でキュー動作を行うためのインターフェイスを提供することができる。インターフェイスによって提供されるプログラミングインターフェイスは、System V APIのインターフェイスと同様であり得る。
メッセージキューの作成および管理
本発明の実施形態に従うと、ミドルウェアマシン環境におけるサーバノード上のデーモンプロセスは、共有メモリにおいてメッセージキューを作成および管理するのに用いることができる。
図7は、本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを作成および管理することのできるデーモンプロセスの例を示す。図7に図示のとおり、ミドルウェアマシン環境は、サーバノード701ならびにいくつかのクライアントノード702および703を含み得る。サーバノードはさまざまなクライアントからメッセージを受信するための共有メモリ704を含み得る。共有メモリは1つ以上のメッセージキュー711および712を維持する。
本発明の実施形態に従うと、サーバノード301は、さまざまなクライアントがメッセージを送信および受信するようメッセージキューを設定するようサーバに要求した場合にサーバ上の共有メモリにおける1つ以上のメッセージキューの作成を担うデーモンプロセス306を含み得る。たとえば、クライアントB 703がサーバ701との接続を開始すると、サーバ上のデーモンプロセス706は、メッセージ制御構造722を介してクライアントB 703と通信するためにキューB 712を動的に作成することができる。
本発明の実施形態に従うと、サーバと複数のクライアントとの間のこの通信方式はさらにプロキシを用いて拡張させることができる。たとえば、クライアントA 702上のキュー/制御構造A 721は、1つ以上のプロキシ、たとえばプロキシI 723〜プロキシIII 725を用いて拡張させることができる。これらのプロキシを用いると、クライアントA上のさまざまなプロキシに関連付けられたプロセスは、キュー/制御構造Aを用いてサーバと通信することができる。
このため、RDMAプロトコルを用いてさまざまなサーバとクライアントとの間の通信をサポートするためのミドルウェアマシンにおいて優れたスケーラビリティを達成することができる。というのも、プロセスがサーバ701上のヒープデータ構造705にメッセージをダイレクトに書込むことを可能にすることによって、サーバの干渉なしで、クライアントA 702上のプロセスから開始されたメッセージをサーバ701に送信することができるからである。
本発明の実施形態に従うと、サーバ701上のデーモンプロセス706はまた、ローカルなメッセージ通信を目的として、ローカルメッセージキュー、たとえばキューC 708を作成および保存することもできる。一例においては、ローカルサーバプロセス同士がローカルメッセージキューを用いて互いに通信することができ、System V IPCプロトコルをRDMAプロトコルの代わりに用いることができる。なぜなら、ローカルで用いられる場合にはIPCプロトコルの方がRDMAプロトコルよりも高速であるからである。
図7に図示のとおり、ローカルサーバプロセス707は、キューA 711およびキューB 712などのリモートメッセージキューに加えて、ローカルメッセージキューC 708からメッセージを受信することができる。ローカルサーバプロセス707は、ローカルメッセージキューとリモートメッセージキューとの差に対処する必要なしに、さまざまなメッセージキューからのメッセージを処理することができる。
本発明の実施形態に従うと、クライアントは、クライアント上のキューまたは制御構造を共有メモリまたは専用メモリにおいて作成できるかどうかを判断することができる。クライアントが特定のプロセスに関連付けられたクライアントマシンの専用メモリにおいてキューまたは制御構造を作成すると決めた場合、システムは、クライアント上の制御構造にアクセスするためにクライアントマシンおよびリモートマシン上の他のプロセスを妨害することができる。このことは有益となり得る。なぜなら、いくつかのメッセージが顧客の財務情報などの機密に関わる情報を含む可能性があるからである。
本発明の実施形態に従うと、中断は、サーバプロセス上で起こり得るかまたはサーバにおけるデーモンプロセス上でも起こり得る。クライアントは、サーバプロセスまたはデーモンプロセスの回復を待つ必要なしに、サーバマシン上の共有メモリにおいてRDMA書込み動作を実行し続けることができる。これにより、システムのための障害回復を堅調かつ簡単明瞭なものにする。加えて、クライアントは、キューがフルである場合に、サーバマシン上の共有メモリへの書込みを停止させることができる。
図8は、本発明の実施形態に従った、トランザクションミドルウェアマシン環境においてメッセージキューを作成および管理するための例示的なフローチャートを示す。図8に図示のとおり、ステップ801において、サーバは、ミドルウェアマシン環境において1つ以上のメッセージキューを維持する共有メモリをメッセージ受信側に設けることができる。次いで、ステップ802において、クライアントは、メッセージの送信および受信をサポートするよう少なくとも1つのメッセージキューをサーバ上で設定することを要求する。最後に、ステップ803において、サーバがクライアント要求を受信すると、サーバ上のデーモンプロセスは、共有メモリにおいて少なくとも1つのメッセージキューを動的に作成することができる。
メッセージキューを保護するためのセキュリティモデル
本発明の実施形態に従うと、ミドルウェアマシン環境においてメッセージキューを保護するのにセキュリティモデルを用いることができる。
図9は、本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを保護するのに用いることのできるセキュリティモデルの例を示す。図9に図示のとおり、メッセージ受信側902はメッセージ送信側901と通信するよう構成することができる。メッセージ受信側902に関連付けられるサーバノード上のデーモンプロセス910は、デーモンプロセスが最初にメッセージ送信側901と通信するためにサーバマシン上の共有メモリ904においてメッセージキュー906を作成する場合に、キーまたはセキュリティトークン914を作成することができる。
本発明の実施形態に従うと、デーモンプロセス910はさらに、IBネットワークにキーまたはセキュリティトークン914を登録し、セキュリティ保護されたネットワーク920を介してクライアントノード上でメッセージ送信側910にセキュリティトークン914を送信することができる。図9に図示のとおり、メッセージ送信側901をデーモンプロセス905に関連付けることもできる。メッセージ送信側901のデーモンプロセス910とメッセージ受信側902のデーモンプロセス905との間のセキュリティ保護されたネットワーク920において別個の通信リンク、たとえば専用のプロセス、が存在し得る。
本発明の実施形態に従うと、メッセージ送信側901がセキュリティトークン914を受信した後、メッセージ送信側901は受信側マシン内の共有メモリ904にダイレクトアクセスすることができる。図9に図示のとおり、クライアントノード上のメッセージ送信側901は、セキュリティトークン914を用いて、受信側の共有メモリ904内のヒープデータ構造908においてメッセージをダイレクトに書込むためのRDMA書込み動作921を実行することができる。
図10は、本発明の実施形態に従った、ミドルウェアマシン環境においてメッセージキューを保護するための例示的なフローチャートを示す。図10に図示のとおり、ステップ1001において、メッセージ受信側のデーモンプロセスは、デーモンプロセスが最初にクライアントノードと通信するためにサーバノード上で共有メモリにおいてメッセージキューを作成すると、サーバノード上でセキュリティトークンを作成することができる。次いで、ステップ1002において、メッセージ受信側のデーモンプロセスは、作成されたセキュリティトークンを、セキュリティ保護されたネットワークを介してサーバノードからクライアントノードに送信することができる。最後に、ステップ1003において、クライアント側でセキュリティトークンを受信した後、メッセージ送信側は共有メモリ内のメッセージキューにダイレクトにメッセージを書込むことができる。
この発明は、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能な記憶媒体を含む1つ以上の従来の汎用のまたは特化されたデジタルコンピュータ、演算装置、マシンまたはマイクロプロセッサを用いて、好都合に実現され得る。ソフトウェア技術の当業者に明らかとなるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に準備され得る。
いくつかの実施形態においては、本発明は、本発明のプロセスのいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ可読媒体であるコンピュータプログラムプロダクトを含む。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気または光学カード、ナノシステム(分子メモリICを含む)、または命令および/またはデータを格納するのに適した任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
本発明の上述の記載は、例示および説明を目的として与えられており、網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確となるであろう。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に適したさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの同等例によって定義されるよう意図されている。

Claims (10)

  1. ミドルウェアマシン環境においてメッセージキューを提供するためのシステムであって、
    前記ミドルウェアマシン環境において提供される複数のサーバマシンを備え、
    前記複数のサーバマシンの1つであるメッセージ受信側のサーバマシンは、第1のリング構造を有する第1のメッセージ制御データ構造体と、当該メッセージ受信側に関連付けられるヒープデータ構造体とが形成された共有メモリを含んでおり、前記共有メモリは他のサーバマシンからアクセス可能であり、
    前記複数のサーバマシンの別の1つであるメッセージ送信側のサーバマシンは、第2のリング構造を有する第2のメッセージ制御データ構造体が形成されたメモリを含んでおり、前記第2のメッセージ制御データ構造体は、前記メッセージ受信側のサーバマシンからの通知に応じて前記第1のメッセージ制御データ構造体とともに更新され、
    前記第1のリング構造および前記第2のリング構造の各々は、最新のメッセージを指すヘッドポインタおよび最も古いメッセージを指すテールポインタを有しており、
    前記メッセージ送信側のサーバマシンは、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いて、前記共有メモリ内のヒープデータ構造体にメッセージを書むと、前記ヒープデータ構造体に書込んだメッセージを特定するための、前記メッセージに関連付けられるメタデータを前記第1のメッセージ制御データ構造体に維持するとともに、当該メタデータに応じて、前記第1のリング構造および前記第2のリング構造の両方についての前記ヘッドポインタを更新し
    前記メッセージ受信側のサーバマシンは、前記共有メモリ内のヒープデータ構造体からメッセージを読取ると、前記第1のリング構造についての前記テールポインタを更新するとともに、前記第1のリング構造の更新を前記メッセージ送信側のサーバマシンへ通知する、システム。
  2. 前記メッセージ受信側のサーバマシンには、前記メッセージ送信側として、複数のクライアントが接続されており、
    前記複数のクライアントの各々は、前記共有メモリにおいて維持される前記第1のメッセージ制御データ構造体の専用コピーを保持する、請求項に記載のシステム。
  3. 前記第1のメッセージ制御データ構造体におけるエントリがクライアントによって更新されているとき、前記第1のメッセージ制御データ構造体上でロックが起動される、請求項に記載のシステム。
  4. 他のすべてのクライアントは、前記第1のメッセージ制御データ構造体がロックされていることを認識することができ、かつ、前記共有メモリのうち、前記第1のメッセージ制御データ構造体におけるエントリに関連付けられる対応部分にアクセスしないようにすることができる、請求項に記載のシステム。
  5. 別のクライアントが、前記共有メモリのうち、メッセージキューにおけるエントリに関連付けられる別の部分にアクセスすることが可能となる、請求項に記載のシステム。
  6. 複数のサーバマシンが提供されるミドルウェアマシン環境においてメッセージキューを提供するための方法であって、
    前記複数のサーバマシンの1つであるメッセージ受信側のサーバマシンの共有メモリ内に、第1のリング構造を有する第1のメッセージ制御データ構造体を形成するステップを備え、前記共有メモリは他のマシンからアクセス可能であり、
    前記共有メモリ内に前記メッセージ受信側のサーバマシンに関連付けられるヒープデータ構造体を形成するステップと、
    前記複数のサーバマシンの別の1つであるメッセージ送信側のサーバマシンのメモリ内に、第2のリング構造を有する第2のメッセージ制御データ構造体を形成するステップを備え、前記第1のリング構造および前記第2のリング構造の各々は、最新のメッセージを指すヘッドポインタおよび最も古いメッセージを指すテールポインタを有しており、
    記メッセージ送信側のサーバマシンが、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いて、前記共有メモリ内のヒープデータ構造体にメッセージを書むステップと
    前記メッセージ送信側のサーバマシンが、前記ヒープデータ構造体に書込んだメッセージの前記共有メモリのアドレスを特定するための、前記メッセージに関連付けられるメタデータを前記第1のメッセージ制御データ構造体に維持するとともに、当該メタデータに応じて、前記第1のリング構造および前記第2のリング構造の両方についての前記ヘッドポインタを更新するステップと
    前記メッセージ受信側のサーバマシンが、前記共有メモリ内のヒープデータ構造体からメッセージを読取ると、前記第1のリング構造についての前記テールポインタを更新するとともに、前記第1のリング構造の更新を前記メッセージ送信側のサーバマシンへ通知するステップとを含む、方法。
  7. メッセージ受信側が複数のクライアントに接続されるサーバ上に存在することを可能にするステップをさらに含み、各々の前記クライアントは、共有メモリにおいて維持される第1のメッセージ制御データ構造の専用コピーを保持する、請求項6に記載の方法。
  8. 第1のメッセージ制御データ構造におけるエントリがクライアントによって更新されているとき、第1のメッセージ制御データ構造上でロックを起動させるステップをさらに含む、請求項7に記載の方法。
  9. 他のすべてのクライアントが第1のメッセージ制御データ構造がロックされていることを認識できること、および、共有メモリのうち、第1のメッセージ制御データ構造におけるエントリに関連付けられる対応部分にアクセスしないようにすることができることを可能にする、請求項8に記載の方法。
  10. 別のクライアントが、共有メモリのうち、メッセージキューにおけるエントリに関連付けられる別の部分にアクセスすることを可能にするステップをさらに含む、請求項9に記載の方法。
JP2014533333A 2011-09-30 2012-09-27 ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 Active JP6238898B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161542119P 2011-09-30 2011-09-30
US61/542,119 2011-09-30
US13/572,501 2012-08-10
US13/572,501 US9558048B2 (en) 2011-09-30 2012-08-10 System and method for managing message queues for multinode applications in a transactional middleware machine environment
US13/572,491 2012-08-10
US13/572,491 US9996403B2 (en) 2011-09-30 2012-08-10 System and method for providing message queues for multinode applications in a middleware machine environment
PCT/US2012/057634 WO2013049399A1 (en) 2011-09-30 2012-09-27 System and method for providing and managing message queues for multinode applications in a middleware machine environment

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017170445A Division JP6549663B2 (ja) 2011-09-30 2017-09-05 ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法

Publications (3)

Publication Number Publication Date
JP2014531687A JP2014531687A (ja) 2014-11-27
JP2014531687A5 JP2014531687A5 (ja) 2015-10-08
JP6238898B2 true JP6238898B2 (ja) 2017-11-29

Family

ID=47993694

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014533333A Active JP6238898B2 (ja) 2011-09-30 2012-09-27 ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
JP2017170445A Active JP6549663B2 (ja) 2011-09-30 2017-09-05 ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017170445A Active JP6549663B2 (ja) 2011-09-30 2017-09-05 ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法

Country Status (7)

Country Link
US (2) US9996403B2 (ja)
EP (1) EP2761454A1 (ja)
JP (2) JP6238898B2 (ja)
KR (1) KR102011949B1 (ja)
CN (1) CN103827829B (ja)
IN (1) IN2014CN01390A (ja)
WO (1) WO2013049399A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422937B2 (en) 2019-03-20 2022-08-23 Kioxia Corporation Multiprocessor system and method for controlling shared memory

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996403B2 (en) * 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
CN104133728B (zh) * 2013-12-16 2015-07-22 腾讯科技(深圳)有限公司 一种进程间通讯的方法、及装置
US9495325B2 (en) * 2013-12-30 2016-11-15 International Business Machines Corporation Remote direct memory access (RDMA) high performance producer-consumer message processing
US10243869B2 (en) * 2014-05-21 2019-03-26 Oracle International Corporation System and method for providing a distributed queue in a distributed data grid
US20170140497A1 (en) * 2014-07-29 2017-05-18 Mitsubishi Electric Corporation Display operation system
GB2532227B (en) * 2014-11-12 2021-10-27 Arm Ip Ltd Methods of communication between a remote resource and a data processing device
US9342384B1 (en) * 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10509764B1 (en) 2015-06-19 2019-12-17 Amazon Technologies, Inc. Flexible remote direct memory access
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10169116B2 (en) 2015-10-21 2019-01-01 International Business Machines Corporation Implementing temporary message queues using a shared medium
CN105446936B (zh) * 2015-11-16 2018-07-03 上海交通大学 基于htm和单向rdma操作的分布式哈希表方法
US10375167B2 (en) * 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
CN105933408B (zh) * 2016-04-20 2019-08-13 中国银联股份有限公司 一种Redis通用中间件的实现方法及装置
US10044595B1 (en) * 2016-06-30 2018-08-07 Dell Products L.P. Systems and methods of tuning a message queue environment
CN107612950B (zh) * 2016-07-11 2021-02-05 阿里巴巴集团控股有限公司 一种提供服务的方法、装置、系统、电子设备
WO2018022083A1 (en) * 2016-07-29 2018-02-01 Hewlett Packard Enterprise Development Lp Deliver an ingress packet to a queue at a gateway device
US10313282B1 (en) * 2016-10-20 2019-06-04 Sprint Communications Company L.P. Flexible middleware messaging system
US10198397B2 (en) 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Flow control in remote direct memory access data communications with mirroring of ring buffers
CN106789431B (zh) * 2016-12-26 2019-12-06 中国银联股份有限公司 一种超时监控方法及装置
EP3568751B1 (en) * 2017-01-13 2023-06-07 Oracle International Corporation System and method for conditional call path monitoring in a distributed transactional middleware environment
CN109032821B (zh) * 2018-08-27 2021-12-28 百度在线网络技术(北京)有限公司 自动驾驶主题消息处理方法、装置、设备及存储介质
CN111327511B (zh) * 2018-12-14 2022-04-12 北京京东尚科信息技术有限公司 即时通讯方法、系统、终端设备与存储介质
CN109815029B (zh) * 2019-01-10 2023-03-28 西北工业大学 一种嵌入式分区操作系统分区间通信的实现方法
CN110109873B (zh) * 2019-05-08 2023-04-07 重庆大学 一种用于消息队列的文件管理方法
US11520572B2 (en) * 2019-09-13 2022-12-06 Oracle International Corporation Application of scheduled patches
CN110955535B (zh) * 2019-11-07 2022-03-22 浪潮(北京)电子信息产业有限公司 一种多业务请求进程调用fpga设备的方法及相关装置
CN111629054B (zh) * 2020-05-27 2022-06-03 北京金山云网络技术有限公司 消息处理方法、装置、系统、电子设备及可读存储介质
CN113626221B (zh) * 2021-08-10 2024-03-15 迈普通信技术股份有限公司 一种消息入队方法及装置
CN113742112B (zh) * 2021-09-15 2024-04-16 武汉联影智融医疗科技有限公司 心电图像的生成方法、系统和电子装置
CN114584566A (zh) * 2022-02-16 2022-06-03 深圳金融电子结算中心有限公司 基于消息队列的数据处理方法、装置、设备及存储介质

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
JPH0520100A (ja) * 1991-07-11 1993-01-29 Mitsubishi Electric Corp オペレーテイングシステム
JPH0721038A (ja) 1993-06-30 1995-01-24 Hitachi Ltd プログラム間通信方法
JPH07152709A (ja) 1993-11-30 1995-06-16 Hitachi Ltd プロセッサ間通信方法
US5784615A (en) 1994-12-13 1998-07-21 Microsoft Corporation Computer system messaging architecture
JPH08212180A (ja) * 1995-02-08 1996-08-20 Oki Electric Ind Co Ltd プロセス間通信処理装置
US5961651A (en) 1996-04-15 1999-10-05 Sun Microsystems, Inc. Event notification in a computing system having a plurality of storage devices
US5916307A (en) * 1996-06-05 1999-06-29 New Era Of Networks, Inc. Method and structure for balanced queue communication between nodes in a distributed computing application
US5951657A (en) * 1996-06-19 1999-09-14 Wisconsin Alumni Research Foundation Cacheable interface control registers for high speed data transfer
US6047391A (en) * 1997-09-29 2000-04-04 Honeywell International Inc. Method for strong partitioning of a multi-processor VME backplane bus
US6215792B1 (en) * 1998-06-30 2001-04-10 Motorola, Inc. System, device, and method for initial ranging in a communication network
US6557056B1 (en) 1998-12-30 2003-04-29 Nortel Networks Limited Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment
US6667972B1 (en) * 1999-01-08 2003-12-23 Cisco Technology, Inc. Method and apparatus providing multi-service connections within a data communications device
JP3437933B2 (ja) 1999-01-21 2003-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ブラウザ共有方法及びシステム
US6766358B1 (en) 1999-10-25 2004-07-20 Silicon Graphics, Inc. Exchanging messages between computer systems communicatively coupled in a computer system network
US7970898B2 (en) 2001-01-24 2011-06-28 Telecommunication Systems, Inc. System and method to publish information from servers to remote monitor devices
US6847991B1 (en) * 2000-09-06 2005-01-25 Cisco Technology, Inc. Data communication among processes of a network component
GB0028237D0 (en) * 2000-11-18 2001-01-03 Ibm Method and apparatus for communication of message data
US20020129172A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7248585B2 (en) 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6871265B1 (en) * 2002-02-20 2005-03-22 Cisco Technology, Inc. Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows
US7822980B2 (en) * 2002-03-15 2010-10-26 International Business Machines Corporation Authenticated identity propagation and translation within a multiple computing unit environment
US7330927B1 (en) * 2003-05-07 2008-02-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for a pointer manager
WO2004107673A1 (en) * 2003-05-27 2004-12-09 International Business Machines Corporation System for defining an alternate channel routing mechanism in a messaging middleware environment
GB0328576D0 (en) 2003-12-10 2004-01-14 Ibm Method and apparatus for browsing a list of data items
US7953903B1 (en) * 2004-02-13 2011-05-31 Habanero Holdings, Inc. Real time detection of changed resources for provisioning and management of fabric-backplane enterprise servers
US20050251856A1 (en) 2004-03-11 2005-11-10 Aep Networks Network access using multiple authentication realms
JP2005284840A (ja) 2004-03-30 2005-10-13 Matsushita Electric Ind Co Ltd メッセージ通信回路、メッセージ送信方法、メッセージ管理方法、およびメッセージ通信システム
US7613813B2 (en) * 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US7546613B2 (en) * 2004-09-14 2009-06-09 Oracle International Corporation Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
AU2005322959A1 (en) 2005-01-06 2006-07-13 Tervela, Inc. Intelligent messaging application programming interface
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
KR100725066B1 (ko) 2005-08-02 2007-06-08 한미아이티 주식회사 다수의 클라이언트와의 데이터 통신을 위한 시스템 서버 및데이터 처리 방법
US8196150B2 (en) * 2005-10-07 2012-06-05 Oracle International Corporation Event locality using queue services
US8255455B2 (en) 2005-12-30 2012-08-28 Sap Ag Method and system for message oriented middleware virtual provider distribution
US7464121B2 (en) * 2006-01-06 2008-12-09 International Business Machines Corporation Apparatus for sending a sequence of asynchronous messages to the same member of a clustered consumer
JP2007304786A (ja) 2006-05-10 2007-11-22 Nec Corp コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム
US8122144B2 (en) 2006-06-27 2012-02-21 International Business Machines Corporation Reliable messaging using redundant message streams in a high speed, low latency data communications environment
US7996583B2 (en) * 2006-08-31 2011-08-09 Cisco Technology, Inc. Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US7609703B2 (en) 2006-09-15 2009-10-27 Hewlett-Packard Development Company, L.P. Group communication system and method
US7949815B2 (en) * 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
US7921427B2 (en) * 2007-03-27 2011-04-05 Oracle America, Inc. Method and system for processing messages in an application cluster
JP2009199365A (ja) * 2008-02-21 2009-09-03 Funai Electric Co Ltd マルチタスク処理システム
US8849988B2 (en) * 2008-11-25 2014-09-30 Citrix Systems, Inc. Systems and methods to monitor an access gateway
JP2010165022A (ja) 2009-01-13 2010-07-29 Ricoh Co Ltd プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体
US20100250684A1 (en) * 2009-03-30 2010-09-30 International Business Machines Corporation High availability method and apparatus for shared resources
JP2011008678A (ja) 2009-06-29 2011-01-13 Hitachi Ltd データ転送装置及びコンピュータシステム
US20110030039A1 (en) 2009-07-31 2011-02-03 Eric Bilange Device, method and apparatus for authentication on untrusted networks via trusted networks
US20120221621A1 (en) * 2009-10-15 2012-08-30 Tomoyoshi Sugawara Distributed system, communication means selection method, and communication means selection program
US9094210B2 (en) 2009-10-26 2015-07-28 Citrix Systems, Inc. Systems and methods to secure a virtual appliance
CN101719960B (zh) 2009-12-01 2012-07-11 中国电信股份有限公司 通信装置和cdma终端
US8819701B2 (en) 2009-12-12 2014-08-26 Microsoft Corporation Cloud computing monitoring and management system
US8667575B2 (en) * 2009-12-23 2014-03-04 Citrix Systems, Inc. Systems and methods for AAA-traffic management information sharing across cores in a multi-core system
US9081501B2 (en) 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN102971727B (zh) 2010-05-11 2016-05-11 英特尔公司 在软件分布式共享存储器系统中记录脏信息
US8607200B2 (en) * 2010-06-01 2013-12-10 Red Hat, Inc. Executing a web application at different stages in the application life cycle
US8667505B2 (en) 2010-09-14 2014-03-04 Microsoft Corporation Message queue management
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8924964B2 (en) * 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US8595715B2 (en) * 2010-12-31 2013-11-26 International Business Machines Corporation Dynamic software version selection
US9100443B2 (en) * 2011-01-11 2015-08-04 International Business Machines Corporation Communication protocol for virtual input/output server (VIOS) cluster communication
US8839267B2 (en) * 2011-02-21 2014-09-16 Universidade Da Coruna-Otri Method and middleware for efficient messaging on clusters of multi-core processors
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8677031B2 (en) 2011-03-31 2014-03-18 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US8533734B2 (en) 2011-04-04 2013-09-10 International Business Machines Corporation Application programming interface for managing time sharing option address space
US20120331153A1 (en) 2011-06-22 2012-12-27 International Business Machines Corporation Establishing A Data Communications Connection Between A Lightweight Kernel In A Compute Node Of A Parallel Computer And An Input-Output ('I/O') Node Of The Parallel Computer
US8806269B2 (en) 2011-06-28 2014-08-12 International Business Machines Corporation Unified, workload-optimized, adaptive RAS for hybrid systems
US10216553B2 (en) * 2011-06-30 2019-02-26 International Business Machines Corporation Message oriented middleware with integrated rules engine
US9996403B2 (en) * 2011-09-30 2018-06-12 Oracle International Corporation System and method for providing message queues for multinode applications in a middleware machine environment
KR101515359B1 (ko) * 2011-09-30 2015-04-29 인텔 코포레이션 시스템 코-프로세서에 대한 직접 i/o 액세스

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422937B2 (en) 2019-03-20 2022-08-23 Kioxia Corporation Multiprocessor system and method for controlling shared memory

Also Published As

Publication number Publication date
CN103827829B (zh) 2017-03-22
JP6549663B2 (ja) 2019-07-24
IN2014CN01390A (ja) 2015-05-08
KR20140069126A (ko) 2014-06-09
JP2017208145A (ja) 2017-11-24
KR102011949B1 (ko) 2019-08-19
US9558048B2 (en) 2017-01-31
US9996403B2 (en) 2018-06-12
US20130086183A1 (en) 2013-04-04
WO2013049399A1 (en) 2013-04-04
EP2761454A1 (en) 2014-08-06
US20130086199A1 (en) 2013-04-04
CN103827829A (zh) 2014-05-28
JP2014531687A (ja) 2014-11-27

Similar Documents

Publication Publication Date Title
JP6549663B2 (ja) ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
EP3776162B1 (en) Group-based data replication in multi-tenant storage systems
AU2006262163B2 (en) Managing message queues
US7779165B2 (en) Scalable method for producer and consumer elimination
US20130246714A1 (en) System and method for supporting buffer allocation in a shared memory queue
CN111182008B (zh) 在用户空间中建立套接字连接
US6944863B1 (en) Queue bank repository and method for sharing limited queue banks in memory
JP6154385B2 (ja) トランザクションミドルウェアマシン環境において複合メッセージヘッダをサポートするためのシステムおよび方法
US20140156959A1 (en) Concurrent array-based queue
EP2951691B1 (en) System and method for supporting work sharing muxing in a cluster
CN111176855A (zh) 在用户空间中建立线程之间的队列
JP6151699B2 (ja) トランザクショナルミドルウェアマシン環境において異なるメッセージキューをサポートするためのシステムおよび方法
US7130936B1 (en) System, methods, and computer program product for shared memory queue
US20070079077A1 (en) System, method, and computer program product for shared memory queue
US7929526B2 (en) Direct messaging in distributed memory systems
JP2014528612A5 (ja)
WO2022194021A1 (zh) 并发控制方法、网卡、计算机设备、存储介质
AU2010201275A1 (en) A high performance and low latency messaging system
US20220253339A1 (en) Compact and Scalable Mutual Exclusion
Ong Network virtual memory
Gulati Reducing the Inter-Process Communication Time on Local Host by Implementing Seamless Socket like,“low latency” Interface over Shared Memory

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150821

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150821

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170905

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171031

R150 Certificate of patent or registration of utility model

Ref document number: 6238898

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250