2

REST API を公開している複数のバックエンド モジュールがある場合、モジュールの 1 つは API を介して他のモジュールを呼び出し、すぐに応答する必要があります。

解決策は、この「トップ」モジュールから REST API を直接呼び出すことです。問題は、カップリングが作成され、スケーリングやフェイルオーバーがネイティブにサポートされないことです。

一種のバス (JMS、ESB) を使用すると、モジュールが認識しているエンドポイントが不要になるため、モジュールを分離できます。彼らはバスに「話しかける」だけです。

バスを介して高速応答を有効にするには、何を使用しますか?

また、引き続き REST API に依存することは合理的ですか、それとも JMS リスナーの方が優れているでしょうか? JMS、Camel、ESB について考えました。そのようなアーキテクチャを使用している企業について知っていますか?

ps: モジュールは、たとえば tomcat インスタンスで実行されている Java war である可能性があります。

4

1 に答える 1

3

トップモジュールが他のモジュールを呼び出すことを「知っている」場合、はい、カップリングがありますが、これは望ましくない可能性があります。代わりに、最上位モジュールがリンク、フォーム、および/または中間モジュールからの応答からのリダイレクトを介して他のモジュールに向けられている場合、JMS ソリューションが提供するのと同じ量の結合があります。

スケーラビリティとフェイルオーバーが必要な場合(以前ではありません)、 F5Varnishなどのキャッシング リバース プロキシを追加します。これは、どの JMS ベースのソリューションよりもスケーラブルで回復力があります。

アップデート

他のモジュールからの応答を集約および/または変換したい状況では、単純に構成されたサービスを作成しています。最上位のモジュールが中間のモジュールを呼び出し、中間のモジュールがバックエンド モジュールに対して 1 つ以上の呼び出しを行い、結果を構成して適切な応答を送信します。各ホップ間 (トップ -> ワニス -> ミドル -> ワニス -> バックエンド) で HTTP キャッシュを使用すると、特注の JMS ベースのソリューションと比較して、はるかに簡単かつ効率的にデータをキャッシュできます。

于 2012-02-28T22:09:34.210 に答える