(58)【調査した分野】(Int.Cl.,DB名)
トランザクションサーバが複合メッセージヘッダ内のアドレス情報に基づいてトランザクションクライアントに応答メッセージを送信することを可能にするステップをさらに含む、請求項3から5のいずれかに記載の方法。
トランザクションクライアントがローカルブリッジプロセスを介して第1のタイプのトランザクションサーバと通信することを可能にするステップをさらに含む、請求項2から6のいずれかに記載の方法。
トランザクションクライアントが、高性能ネットワークを介して、直接、第2のタイプのトランザクションサーバと通信することを可能にするステップをさらに含む、請求項2から7のいずれかに記載の方法。
高性能ネットワークは、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いるInfiniband(IB)ネットワークである、請求項8に記載の方法。
第1のタイプのトランザクションサーバに、複合メッセージヘッダにおける第2のデータ構造内のアドレス情報を理解させないことを可能にするステップをさらに含む、請求項2から9のいずれかに記載の方法。
第2のデータ構造は、特定されたIDを介して各々がアクセス可能である動的な数のフィールドを備えた柔軟なトランザクションデータ構造である、請求項2から10のいずれかに記載の方法。
【発明を実施するための形態】
【0006】
詳細な説明:
複数のプロセッサを備えた高速マシンおよび高性能ネットワーク接続を活用することのできるTuxedoなどのトランザクションミドルウェアシステムをサポートするためのシステムおよび方法をこの明細書中に記載する。柔軟なトランザクションデータ構造は、トランザクションミドルウェアマシン環境にメッセージヘッダを記憶するために用いることができる。柔軟なトランザクションデータ構造は、動的な数のフィールド(dynamic numbers of fields)を有することができ、特定されたIDを介してアクセス可能である。メッセージヘッダは、第1のメッセージキューを用いてクライアントにアクセスするためのアドレス情報を記憶する第1のデータ構造と、第2のメッセージキューを用いてクライアントにアクセスするためのアドレス情報を記憶する第2のデータ構造とを含み得る。第1のタイプのサーバは、第1のメッセージキューを用いてクライアントにアクセスするためのアドレス情報を得るために、第1のデータ構造だけを用いるよう動作する。第2のタイプのサーバは、第1のデータ構造からキーを得るよう動作し、次いで、当該キーを用いることにより、第2のメッセージキューを用いてクライアントにアクセスするためのアドレス情報を第2のデータ構造から得るよう動作する。
【0007】
本発明の実施形態に従うと、当該システムは、高性能ハードウェア(たとえば64ビットプロセッサ技術、高性能の大きなメモリ、ならびに冗長なInfinibandおよびイーサネット(登録商標)ネットワーキング)と、WebLogic Suiteなどのアプリケーションサーバまたはミドルウェア環境との組合せを含み、これにより、迅速に設けられ得るとともにオンデマンドでスケール変更可能な大規模並列メモリグリッドを含む完全なJava(登録商標) EEアプリケーションサーバコンプレックスを提供する。一実施形態に従うと、当該システムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびInfiniband(IB)ネットワークを提供するフルラック、ハーフラック、もしくはクォーターラック、または他の構成として展開され得る。ミドルウェアマシンソフトウェアは、たとえばWebLogic Server、JRockitまたはHotspot JVM、Oracle Linux(登録商標)またはSolaris、およびOracle VMといった、アプリケーションサーバと、ミドルウェアと、他の機能性とを提供し得る。一実施形態に従うと、当該システムは、IBネットワークを介して互いに通信する複数の計算ノードと、IBスイッチゲートウェイと、ストレージノードまたはユニットとを含み得る。ラック構成として実施される場合、当該ラックの未使用部分は、空のままとされ得るか、またはフィラー(filler)によって占有され得る。
【0008】
本願明細書において「Sun Oracle Exalogic」または「Exalogic」と称される本発明の実施形態に従うと、当該システムは、Oracle Middleware SW suiteまたはWeblogicといったミドルウェアまたはアプリケーションサーバソフトウェアをホスティングするための、展開が容易なソリューションである。本願明細書に記載されるように、一実施形態に従うと、当該システムは、1つ以上のサーバと、ストレージユニットと、ストレージネットワーキングのためのIBファブリックと、ミドルウェアアプリケーションをホストするのに必要な他のすべてのコンポーネントとを含む「グリッド・イン・ア・ボックス(grid in a box)」である。たとえばReal Application ClustersおよびExalogic open storageを用いて大規模並列グリッドアーキテクチャを活用することにより、すべてのタイプのミドルウェアアプリケーションのために有意な性能が与えられ得る。このシステムは、線形のI/Oスケーラビリティとともに向上した性能を与え、使用および管理が簡易であり、ミッションクリティカルな可用性および信頼性を与える。
【0009】
本発明の実施形態に従うと、Tuxedoは1セットのソフトウェアモジュールであって、高性能の分散型ビジネスアプリケーションの構築、実行および管理を可能にし、複数の多層アプリケーション開発ツールによってトランザクションミドルウェアとして用いられてきた。加えて、Tuxedoシステムなどのトランザクションミドルウェアシステムは、Exalogicミドルウェアマシンなどの、複数のプロセッサを備えた高速マシン、および、Infiniband(IB)ネットワークなどの高性能ネットワーク接続を利用することができる。
【0010】
本発明の実施形態に従うと、トランザクションミドルウェアシステムは、ローカルメッセージ転送と同様の態様で、たとえばブリッジプロセスを回避し、シングル・ポイント・ボトルネック(single point bottleneck)を防ぐ態様で、待ち時間を短くするために、リモートダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)プロトコルを用いて、ローカルマシンとリモートマシンとの間でメッセージをやり取りすることができる。RDMAプロトコルを用いたローカルマシンとリモートマシンとの間のメッセージのやり取りが、2012年3月8日に出願され、「トランザクションミドルウェアマシン環境においてシングル・ポイント・ボトルネックを防ぐためのシステムおよび方法(SYSTEM AND METHOD FOR PREVENTING SINGLE-POINT BOTTLENECK IN A TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT)」と題された米国出願第13/415,760号に開示され、その出願全体が引用によりこの明細書中に援用されている。
【0011】
複合メッセージヘッダのサポート
本発明の実施形態に従うと、マシン間でメッセージをやり取りする際にブリッジプロセスの回避をサポートし、シングル・ポイント・ボトルネックを防ぐために、トランザクションミドルウェアマシン環境は複合メッセージヘッダを用いることができる。複合メッセージヘッダは、RDMAメッセージキューおよびシステムVプロセス間通信(Inter-process Communication:IPC)メッセージキューなどのさまざまなメッセージキューをトランザクションミドルウェアマシン環境においてサポートするための柔軟なデータ構造を用いることができる。
【0012】
図1は、本発明の実施形態に従った、複合メッセージヘッダをサポートするトランザクションミドルウェアマシン環境の例を示す。
図1に示されるように、トランザクションクライアント101はさまざまなサービス要求メッセージ、すなわちメッセージA 104およびメッセージB 105、をさまざまなタイプのトランザクションサーバ、すなわちサーバA 102およびサーバB 103に送信することができる。サーバAは、IPCキューを用いる第1のタイプのサーバであり得、サーバBは、RDMAキューを用いる第2のタイプのサーバであり得る。加えて、サーバは、IPCキューおよびRDMAキューの両方を同時に受信することができる。サーバA 102およびサーバB 103はハードウェア計算ノードであり得る。サーバA 102およびサーバB 103はミドルウェアマシンのラックに設けられ得る。
【0013】
本発明の実施形態に従うと、複合メッセージヘッダは、ブリッジプロセスの回避をサポートし、シングル・ポイント・ボトルネックを防止するために柔軟なデータ構造を用いることができる。
図1に示されるように、メッセージヘッダA 106は、第1のデータ構造A 108および第2のデータ構造A 110を含み、メッセージヘッダB 107は、第1のデータ構造B 109および第2のデータ構造B 111を含む。第1のデータ構造A 108および第1のデータ構造B 109の各々は、IPCキューを用いてクライアントにアクセスするためのアドレス情報を記憶する単純なデータ構造であり得る。加えて、メッセージヘッダB 107における第2のデータ構造B 111は、第2のメッセージキューを用いてクライアントにアクセスするためのアドレス情報を記憶するデータバッファであり得、メッセージヘッダA 106における第2データ構造A 110は、空のままにしておくことができるか、存在し得ないかまたは最初に作り出すことができない。
【0014】
図1に示されるような例においては、システムV IPCキューA 122を用いることが好ましいサーバであるサーバA 102は、単純なデータ構造108だけを用いて、ブリッジプロセスA 120およびブリッジプロセスC 118を介してIPCメッセージキューC 116を用いてクライアントにアクセスするためのアドレス情報を得ることができる。他方で、RDMAキューを用いることが好ましいサーバであるサーバB 103は、単純なデータ構造109を用いて、キー113、たとえば負の長い値(negative long value)を有する偽のIPCキューアドレスを得ることができる。さらに、サーバB 103は、キー113または特定されたフィールド名を用いてデータバッファを調べて、第2のメッセージキューを用いてクライアントにアクセスするためのアドレスB 114についての情報を得ることができる。
【0015】
本発明の実施形態に従うと、クライアントはIPCキューおよびRDMAキューを同時に維持することができる。クライアントがサービス要求メッセージをターゲットサーバに発信する前に、クライアントは、まず、クライアントが事前に受信した情報に基づいてターゲットサーバのタイプを判断することができる。ターゲットサーバがIPCキューを用いることが好ましいと判断された場合、クライアントは、
図1に図示のとおり、メッセージヘッダA 106と同様のフォーマットのメッセージヘッダを備えたサービス要求メッセージを送信することができる。逆に、ターゲットサーバがRDMAキューを用いることが好ましいと判断された場合、クライアントは、
図1に図示のとおり、メッセージヘッダB 107と同様のフォーマットのメッセージヘッダを備えたサービス要求メッセージを送信することができる。
【0016】
図2は、本発明の実施形態に従った、トランザクションミドルウェアマシン環境において複合メッセージヘッダをサポートするための例示的なフローチャートを示す。
図2に図示のとおり、ステップ201において、第1のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶するために第1のデータ構造が設けられる。また、ステップ202において、第2のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶するために第2のデータ構造が設けられる。次いで、ステップ203において、第1のタイプのトランザクションサーバは、第1のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を得るために、複合メッセージヘッダにおける第1のデータ構造だけをチェックすることができる。また、ステップ204において、第2のタイプのトランザクションサーバは、複合メッセージヘッダにおける第1のデータ構造からキーを得ることができ、このキーを用いることにより、第2のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を複合メッセージヘッダにおける第2のデータ構造から得ることができる。
【0017】
Tuxedoでのメッセージキュー情報の搬送
本発明の実施形態に従うと、Tuxedoアプリケーションは、システムV IPCキューに関連付けられるブリッジプロセスを回避するために、RDMAプロトコルを活用し、RDMAキューを用いることができる。システムV IPCキューに関連付けられるブリッジプロセスは、Tuxedo環境におけるシングル・ポイント・ボトルネックになり得る。RDMAキューを用いて、さまざまなTuxedoマシン間でリモートメッセージをやり取りすることにより、ローカルメッセージ転送と同様の態様でより短い待ち時間を実現することができる。
【0018】
Tuxedoクライアントおよびサーバは、さまざまなバージョンでコンパイルすることができ、さまざまなマシンにおいて展開することができる。すべてのマシンがバイパスブリッジプロセス特徴をサポートしない可能性がある。システムは、マシン間でのメッセージ互換性を維持することができる。たとえば、あるバージョンのTuxedoサーバは、Tuxedoメッセージヘッダ内における正確なオフセットのすべてのフィールドにアクセスすることができるが、但し、このTuxedoサーバはバイパスブリッジ特徴をサポートしない。このように、さまざまなバージョンのTuxedo上で実行されるアプリケーションは、互いから送信されるメッセージを認識することができる。
【0019】
図3は、本発明の実施形態に従った、トランザクションミドルウェアマシン環境における複合メッセージヘッダの例を示す。
図3に図示のとおり、複合メッセージヘッダは、C−構造301および302にいくつかのTuxedoメッセージヘッダと、FML32タイプのバッファ303にTuxedoメッセージヘッダとを含む。
【0020】
クライアントは、システムV IPCキューアドレス情報をC−構造に記憶することができる。相互運用性の問題を解決するために、バイパスブリッジ特徴が作動される場合であっても、複数のC−構造をメッセージヘッダにおいて同じ位置で変化させずに維持することができる。加えて、クライアントは、その完全なRDMAメッセージキュー情報を、システムV IPCキューアドレスには用いられないIDで、柔軟なトランザクションヘッダに、たとえばFML32タイプのバッファヘッダ303に記憶することができる。
【0021】
FML32タイプのバッファ内のRDMAメッセージキュー情報は、一般に、C−構造においてシステムV IPCキューアドレス情報よりも多くのバイトを含む。たとえば、Tuxedo要求メッセージヘッダにおけるC−構造は8バイトの「長い」変数を含み、RDMAメッセージキューアドレスは128バイトの配列である。
【0022】
FML32タイプのバッファは、フィールドが索引付けされた柔軟なトランザクションデータ構造である。FML32タイプのバッファにおけるすべてのエントリは特定されたフィールド名によって検索することができる。プロセスによりFML32タイプのバッファを得る場合、当該プロセスは、それ自体が知らないフィールド名によって値が得られない場合には、如何なる問題も引起こさない。さらに、如何なるプロセスでも、それ自体が知らないフィールドを介して値を得ようとする可能性はないだろう。
【0023】
本発明の実施形態に従うと、動的な数のフィールド304および305は、特定されたIDを介してアクセス可能である同じバッファに入力することができる。バイパスブリッジ特徴が作動されない場合、プロセスはFML32ヘッダを調査せず、システムV IPCキューにアクセスするだけでよい。というのも、C−構造ヘッダが変更されないからである。
【0024】
バイパスブリッジ特徴が作動されると、クライアントは、システムV IPCキューの代わりにRDMAメッセージキューを用いてサーバにメッセージを送信することができ、かつ、サーバが応答を返信することができるように、その返答RDMAメッセージキューアドレスを要求メッセージに記憶することができる。
【0025】
図3に図示のとおり、TuxedoサーバプロセスでTuxedoクライアントからメッセージが受信されると、Tuxedoサーバプロセスでは、まず、C−構造におけるIPCキューアドレス、たとえばTuxedoメッセージヘッダX 302、を得ることができる。Tuxedoサーバプロセスにより、エントリが負の長い値を有していることが判明した場合、Tuxedoサーバプロセスでは、特定されたフィールド名により、FML32タイプのバッファにあるTuxedoメッセージヘッダY 303からRDMAメッセージキューアドレスを得ることができる。
【0026】
さらに、Tuxedoクライアントは、要求の送信前にサーバからバージョン情報を得ることができる。このように、バイパスブリッジ特徴なしでコンパイルされたサーバの場合、システムV IPCキューアドレスだけを要求メッセージヘッダに入力することができ、FML32タイプのバッファには触れられない。
【0027】
バイパスブリッジ特徴が無効にされると、FML32バッファ303にはRDMAメッセージキューアドレスフィールドは存在しない。メッセージバッファ(C−構造部分)におけるキューアドレスは、正のIPCキューアドレスであってもよく、システムV IPCキューアドレスを示す。このように、Tuxedoがメッセージバッファからこのキューアドレスを得た場合、システムはFML32バッファを調査しない。
【0028】
本発明の他の実施形態は、トランザクションミドルウェアマシン環境において複合メッセージヘッダをサポートするためのシステムを含む。当該システムは、第1のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶する第1のデータ記憶ユニットと、第2のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶する第2のデータ記憶ユニットと、第1のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を得るために、複合メッセージヘッダにおける第1のデータ構造だけをチェックするよう動作する第1のタイプのトランザクションサーバと、複合メッセージヘッダにおける第1のデータ構造からキーを得るよう動作し、当該キーを用いることにより、第2のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を複合メッセージヘッダにおける第2のデータ構造から得るよう動作する第2のタイプのトランザクションサーバとを備える。
【0029】
別の実施形態が含むシステムにおいては、トランザクションクライアントは、複合メッセージヘッダを用いてトランザクションサーバにメッセージを送信するよう動作する。
【0030】
別の実施形態が含むシステムにおいては、トランザクションクライアントは、メッセージの送信前にトランザクションサーバについての情報を得るよう動作する。
【0031】
別の実施形態が含むシステムにおいては、トランザクションサーバは、複合メッセージヘッダ内のアドレス情報に基づいてトランザクションクライアントに応答メッセージを送信するよう動作する。
【0032】
別の実施形態が含むシステムにおいては、第1のデータ構造はCデータ構造であり、第2のデータ構造は型付けされたバッファデータ構造である。
【0033】
別の実施形態が含むシステムにおいては、トランザクションクライアントは、ローカルブリッジプロセスを介して第1のタイプのトランザクションサーバと通信するよう動作する。
【0034】
別の実施形態が含むシステムにおいては、トランザクションクライアントは、高性能ネットワークを介して、直接、第2のタイプのトランザクションサーバと通信するよう動作する。
【0035】
別の実施形態が含むシステムにおいては、高性能ネットワークは、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いるInfiniband(IB)ネットワークである。
【0036】
別の実施形態が含む請求項1のシステムにおいては、第1のタイプのトランザクションサーバは、複合メッセージヘッダにおける第2のデータ構造内のアドレス情報を理解しない。
【0037】
別の実施形態が含むシステムにおいては、第2のデータ構造は、特定されたIDを介して各々がアクセス可能である動的な数のフィールドを備えた柔軟なトランザクションデータ構造である。
【0038】
別の実施形態は、トランザクションミドルウェアマシン環境における複合メッセージヘッダをサポートするための装置を含む。当該装置は、第1のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶する第1のデータ構造を設けるための手段と、第2のメッセージキューを用いてトランザクションクライアントにアクセスするためのアドレス情報を記憶する第2のデータ構造を設けるための手段と、第1のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を得るために、第1のタイプのトランザクションサーバが複合メッセージヘッダにおける第1のデータ構造だけをチェックすることを可能にするための手段と、第2のタイプのトランザクションサーバが、複合メッセージヘッダにおける第1のデータ構造からキーを得ることを可能にし、当該キーを用いることにより、第2のメッセージキューを用いてトランザクションクライアントと通信するためのアドレス情報を複合メッセージヘッダにおける第2のデータ構造から得ることを可能にするための手段とを含む。
【0039】
別の実施形態が含む装置はさらに、トランザクションクライアントが複合メッセージヘッダを用いてトランザクションサーバにメッセージを送信することを可能にするための手段を含む。
【0040】
別の実施形態が含む装置はさらに、トランザクションクライアントが、メッセージの送信前にトランザクションサーバについての情報を得ることを可能にするための手段を含む。
【0041】
別の実施形態が含む装置はさらに、トランザクションサーバが、複合メッセージヘッダ内のアドレス情報に基づいてトランザクションクライアントに応答メッセージを送信することを可能にするための手段を含む。
【0042】
別の実施形態が含む装置においては、第1のデータ構造はCデータ構造であり、第2のデータ構造は型付けされたバッファデータ構造である。
【0043】
別の実施形態が含む装置はさらに、トランザクションクライアントが、ローカルブリッジプロセスにより第1のタイプのトランザクションサーバと通信することを可能にするための手段を含む。
【0044】
別の実施形態が含む装置はさらに、トランザクションクライアントが高性能ネットワークを介して、直接、第2のタイプのトランザクションサーバと通信することを可能にするための手段を含む。
【0045】
別の実施形態が含む装置においては、高性能ネットワークは、リモートダイレクトメモリアクセス(RDMA)プロトコルを用いるInfiniband(IB)ネットワークである。
【0046】
別の実施形態が含む装置はさらに、第1のタイプのトランザクションサーバに、複合メッセージヘッダにおける第2のデータ構造内のアドレス情報を理解させないことを可能にするための手段を含む。
【0047】
別の実施形態が含む装置においては、第2のデータ構造は、特定されたIDを介して各々がアクセス可能である動的な数のフィールドを備えた柔軟なトランザクションデータ構造である。
【0048】
この発明は、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能な記憶媒体を含む1つ以上の従来の汎用のまたは特化されたデジタルコンピュータ、演算装置、マシンまたはマイクロプロセッサを用いて、好都合に実現され得る。ソフトウェア技術の当業者に明らかとなるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【0049】
いくつかの実施形態においては、本発明は、本発明のプロセスのいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した記憶媒体またはコンピュータ可読媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリ素子、磁気または光学カード、ナノシステム(分子メモリICを含む)、または命令および/またはデータを格納するのに適した任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【0050】
本発明の上述の記載は、例示および説明を目的として与えられており、網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確となるであろう。上記の実施形態は、本発明の原理およびその実際的な適用をもっともよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に適したさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの同等例によって定義されるよう意図されている。