|
|
IPC メッセージ・キュー
BEA Tuxedo システムでは、IPC メッセージ・キューを使用して、特定のマシン上で実行されるプロセス間の通信がサポートされています。IPC メッセージ・キューは一時メモリ領域で、通常はオペレーティング・システムによって提供され、クライアントとサーバ間の通信に使用されます。デフォルトでは、各サーバが専用の IPC メッセージ・キューを持ち、要求と応答を受け取ります。この方法は「単一サーバ、単一キュー (SSSQ)」と呼ばれます。必要に応じて、デフォルトを変更して、複数のサーバが同じキューから読み取るように設定することもできます。この方法は「複数サーバ、単一キュー (MSSQ)」と呼ばれます。同じアプリケーションで、SSSQ と MSSQ の両方を使用できます。サーバは、いずれかのタイプのキューに割り当てることができます。
単一サーバ、単一キュー (SSSQ) の使用
SSSQ を理解するために、スーパーマーケットを例に考えてみます。スーパーマーケットには、複数のレジの列があります。レジの列はそれぞれ別個のキューに相当します。各レジでは、顧客が 1 人のレジ係の作業を待ちます。その列の作業の速さは、レジ係によって異なります。ある顧客に対する作業に遅れが生じると、その列の後続の顧客にもそれぞれ遅れが発生します。ただし、ほかの列には何の影響もありません。この方式は、異なる種類のサービスを提供する複数のサーバ間でロード・バランシングを行い、作業量を調整するために使用します。要求が比較的小さい顧客は、通常の顧客とは別のキューを持つサーバによって処理することができます。小さい要求のためのサイクルまたはレジスタを確保することにより、スループットが向上します。
複数サーバ、単一キュー (MSSQ) のセットの使用
MSSQ では、オペレーティング・システムによって提供される IPC メッセージングを使用して、さらにロード・バランシングが進められます。1 つのキューには、常に同じサービスを提供する複数のサーバが対応しています。ある要求がサーバのキューに送信され、そのキューが MSSQ セットの一部である場合、メッセージがキューから取り出されて、使用可能な最初のサーバに送られます。このようにして、個々のキューのレベルでロード・バランシングが行われます。
MSSQ を構成するサーバには、そのサーバ固有の応答キューを設定する必要があります。このサーバがほかのサーバに対して要求を行った場合、その応答は要求元のサーバに返されなければなりません。つまり、MSSQ 内のほかのサーバによってキューから取り出されないようにする必要があります。
大半のアプリケーションでは、「複数サーバ、単一キュー (MSSQ)」は重要な役割を果たします。この方式は、サービスの待ち時間の合計を最小限に抑える場合に理想的です。MSSQ は、要求を処理できるサーバがアイドル状態のときに、サービス要求を待機させないようにする場合に使用します。
次の場合には、MSSQ の使用をお勧めします。
注記 障害耐久性から、MSSQ は常に複数のサーバで使用してください。
MSSQ は、長いメッセージがサービスに渡される場合には適していません。長いメッセージによって、キューがいっぱいになることがあるからです。キューがいっぱいになると、非ブロッキング送信が失敗するか、またはブロッキング送信がブロックされます。
次の場合には、MSSQ の使用をお勧めしません。
使用例
MSSQ を理解するために、銀行を例に考えてみます。銀行では、同じサービスを行う複数の窓口が 1 列に並んだ顧客に応対します。次に空く窓口が、常に列の次の顧客に応対します。この例では、各窓口がすべての顧客サービスを行うことができなければなりません。BEA Tuxedo 環境の場合、単一のキューを共有するように設定されたすべてのサーバは、常に同じサービスを提供する必要があります。MSSQ の利点は、個々のキューのレベルで、ロード・バランシングのもう 1 つの形式を提供していることです。
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|