ユーザーズ ガイド

     前  次    目次     
ここから内容

分割-結合によるサービスのパフォーマンスの向上

Oracle Service Bus の「分割-結合」と呼ばれる高度な仲介機能を使用すると、1 つの要求の個々のメッセージを同時に処理できるため、サービスのパフォーマンスが向上します。このトピックでは、分割-結合について説明します。内容は次のとおりです。

 


分割-結合の概要

Oracle Service Bus の分割-結合機能を使用すると、注文などのサービス ペイロードを個々のメッセージに分割して同時に処理することができます。順次処理ではなく、同時処理を実行することにより、サービスのパフォーマンスが大幅に向上します。分割-結合では、入力メッセージ ペイロードをサブメッセージに分け (分割)、それらのサブメッセージを送り先に同時にルーティングして、応答を 1 つの戻りメッセージに集約 (結合) することで、このタスクを実現します。ペイロードを分割し、応答を集約するこのプロセスを分割-結合パターンと呼びます。

分割-結合は、高速システムから低速システムの応答サービスに向けてペイロードを配信するシナリオで、全体的な応答時間を最適化する場合に特に役立ちます。分割-結合を使用しない場合、通常、ペイロードの個々のメッセージは受信者によって順次解決されます。そのため、応答側のシステムが低速の場合、応答時間が長くなる可能性があります (全体的な応答時間は、メッセージごとの応答時間の合計になります)。分割-結合を使用すると、複数のメッセージが同時に処理されるため、応答側のシステムの負担が減り、応答時間が大幅に向上します (全体的な応答時間は、個々のメッセージの最長応答時間とシステムのわずかなオーバーヘッドの合計とほぼ同じになります)。

分割-結合機能では、次の 2 つのパターンがサポートされています。

静的分割-結合

静的分割-結合では、分割-結合のコンフィグレーションに従って、ペイロードを固定数の新しいブランチに分割することで、Oracle Service Bus メッセージ フローのメイン実行スレッドから分岐します。設計時に、呼び出すサービスの数と種類を決定します。

静的分割-結合 - サンプル シナリオ

ある電話会社で、顧客からの通信サービス パッケージの注文を処理するときに、静的分割-結合を使用するとします。この例では、顧客は DSL サービスとボイス サービスを一度に申し込むことになります。電話会社は、ペイロードの各要求を順次個別に実行するのではなく、Oracle Service Bus メッセージ フローから静的分割-結合パターンを使用する分割-結合へのコールアウトを使用して、メッセージを並列実行できます。

開発者には、このサービス パッケージの受信サービス要求が必ず 2 つ (DSL とボイス) になることがわかっているため、この場合、静的分割-結合が理想的なパターンといえます。要求を並列ブランチに分割することにより、要求を同時に処理できるようになるため、ペイロードを処理する際の全体的な応答時間が向上します。すべてのメッセージの処理が完了すると、生成された応答が実行スレッドの 1 つの返信に集約されます。

図 4-1 は、2 つの既知のサービス要求 (DSL のアクティブ化と電話のアクティブ化) に分割し、各要求を並列処理して、応答を 1 つの返信に結合する静的分割-結合を示しています。

図 4-1 静的分割-結合 – 既知数のサービス要求

静的分割-結合 – 既知数のサービス要求

動的分割-結合

動的分割-結合では、受信ペイロードの内容に基づいて新しいブランチを動的に作成することで、Oracle Service Bus メッセージ フローのメイン実行スレッドから分岐します。動的分割-結合では、条件ロジックを使用して作成するブランチの数を決定します。すべての要求が同時に処理され、各応答が 1 つの返信に集約されます。

動的分割-結合 - サンプル シナリオ

ある会社で、従業員の事務用品を自動的に注文するときに動的分割-結合を使用するとします。注文が従業員による送信に基づいて毎週自動的に行われる場合、各週の注文で発生する個々の注文数を知る方法はありません。この会社では、各注文を個別に行うのではなく、Oracle Service Bus メッセージ フローから動的分割-結合パターンを使用する分割-結合へのコールアウトを使用して注文を同時に行うことができます。

開発者には毎週送信される注文数がわからないため、この場合、動的分割-結合が理想的なパターンといえます。動的分割-結合では、すべての注文をループ処理し、並列に配置します。開発者は、処理する注文数を制限することもできます。すべての注文の処理が完了すると、生成された注文応答が実行スレッドの 1 つの返信に集約されます。

図 4-2 は、15 件の注文を分割し、それらの注文を同時に処理して、応答を 1 つの返信に結合する動的分割-結合を示しています。

図 4-2 動的分割-結合 – 未知数のサービス要求

動的分割-結合 – 未知数のサービス要求

分割-結合フレームワーク

Workshop for WebLogic の .flow ファイルの形式をとる分割-結合は、WSDL 操作に基づいています。分割-結合は、FLOW 転送 (分割-結合専用の転送) による通信を行う WSDL ベースのビジネス サービスにラップされます。このビジネス サービスは、プロキシ サービスから呼び出されます。図 4-3 は、分割-結合フレームワークを示しています。

図 4-3 分割-結合フレームワーク

分割-結合フレームワーク

 


分割-結合の開発

Workshop for WebLogic で分割-結合を作成およびコンフィグレーションしたら、実行時コンフィグレーションで使用できるように Oracle Service Bus Console にインポートします。分割-結合の開発については、Workshop for WebLogic ヘルプシステムの「分割-結合の操作」を参照してください。

分割-結合のリソース タイプと環境変数

任意のスクリプトまたはカスタム コードで分割-結合を参照する場合は、表 4-1 に示す値を使用してください。

表 4-1 分割-結合のリソース タイプと環境変数
typeId
FLOW
ワーク マネージャの環境値のタイプ
分割-結合ワーク マネージャ


  ページの先頭       前  次