ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Bus管理者ガイド
11g リリース1(11.1.1.4.0)
B61436-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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

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

37.1 分割-結合の概要

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

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

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

37.1.1 静的分割-結合

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

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

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

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

図37-1は、2つの既知のサービス・リクエスト(DSLのアクティブ化と電話のアクティブ化)に分割し、各リクエストを並列処理して、レスポンスを1つの返信に結合する静的分割-結合を示しています。

図37-1 静的分割-結合 - 既知の数のサービス・リクエスト

図37-1の説明が続きます
「図37-1 静的分割-結合 - 既知の数のサービス・リクエスト」の説明

37.1.2 動的分割-結合

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

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

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

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

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

図37-2 動的分割-結合 - 未知の数のサービス・リクエスト

図37-2の説明が続きます
「図37-2 動的分割-結合 - 未知の数のサービス・リクエスト」の説明

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

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

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

図37-3の説明が続きます
「図37-3 分割-結合フレームワーク」の説明

37.2 分割-結合の開発

Eclipseで分割-結合を作成および構成したら、実行時構成で使用できるようにOracle Service Busコンソールにインポートします。分割-結合の開発については、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の分割-結合の操作に関する項を参照してください。

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

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

  • typeId - FLOW

  • ワーク・マネージャの環境値のタイプ - 分割-結合ワーク・マネージャ