2

SOA (サービス指向アーキテクチャ) を見ると、主な問題は、サービスの負荷を複数のホストに分散してから、これらのホストを管理すること (ホストをオフラインにするか、新しいホストを追加すること) にあるようです。

あるサービスが別のサービスと通信する場合、(アプリケーション レベルで) ホスト情報を知る必要はありません。むしろ、SOA 環境は、ホストの現在の負荷特性に基づいてサービス要求を特定のホストにルーティングできる必要があります (したがって、サービスが実行されているすべてのホットとそれらの相対的な負荷を認識している必要があります)。

サービスがその存在と SOA 環境への負荷を報告するための既存のオープン プロトコルはありますか。

4

2 に答える 2

4

SOAは、一連の高レベルのソフトウェアアーキテクチャガイドラインです。これは技術的な標準や推奨事項ではなく、負荷分散などの技術的な実装の詳細とは関係ありません。

ロードバランシングは、サービスアクセステクノロジーに依存するアドレス指定に基づいています。「SOA-way」で構築されたシステムは、SOAP(HTTP、JMSなどを介して)、REST、JMSを介した非同期XMLメッセージなどのさまざまなサービスアクセステクノロジーを使用している可能性があります。

SOAPを使用すると、サービスコンシューマーはUDDIレジストリーを検索して、サービスプロバイダーを見つけることができます。最新のUDDIレジストリソフトウェアの中には、単純な(ラウンドロビンなどの)負荷分散を提供するものがあります。もう1つのSOAPのアイデアは、WS-Addressingを使用することですが、実際には負荷分散を目的としたものではありません。

現在、負荷分散に最適な場所は、基盤となるネットワークトランスポート層だと思います。HTTPトランスポートを使用すると、応答時間とタイムアウトに基づいて分散を適応させることができるハードウェアまたはソフトウェア(Apache HTTPDモジュールなど)のロードバランサーを選択できます。JMSトランスポートを使用すると、最も一般的なJMSサーバーが何らかの形の負荷分散を提供します。CORBAやRendezvousなどの他のプロトコルには、通常、カスタムソリューションが必要です。

OracleServiceBusやTIBCOAMXServiceBusなどのESBソフトウェアを利用することもできます。ESBを使用すると、サービスインスタンスの負荷分散プロキシを簡単に作成できます。プロキシは、ガイダンスのためにデータベーステーブルを検索するなど、いくつかのロジックで拡張できます。

ご覧のとおり、サービスの負荷分散に万能のソリューションはありません。最適なソリューションは、実際の実装アーキテクチャとベンダーの推奨事項に基づいています。

于 2010-08-28T07:10:37.203 に答える
0

たくさん読んだ後、私が実際に探していたコンセプトはEnterprise ServiceBusESPでした。

明示的なプロトコルを明示的に定義していませんが、上記の問題の解決を可能にするアーキテクチャスタイルを定義しています。

于 2010-09-13T19:12:35.943 に答える