2

私は春の雲に慣れていません。しかし、ZUULについて読むと、いくつかのサイトがZUULのapplication.ymlのルートを設定し、他のサイトでは、リクエストがそれぞれのマイクロサービスに転送されるため、経路を明示的に設定する必要はないと述べています。私は少し混乱していた。例の場合、以下のシナリオでは、ルートを設定するか、ルートを自動的に変更する方法は何ですか?いつzuulルートを設定するのですか

  1. 私はいくつかのマイクロサービスを実行しており、ZUULと一緒にそれらのすべてがユーレカに登録されているとしましょう。
  2. 私はフロントエンドが同じサーバー上の別のポートで実行されており、上記のマイクロサービスとやり取りする必要があります。
  3. また、データを取得するために上記のマイクロサービスとやりとりする必要がある他のアプリケーション(完全に別のサーバー上で実行する)はほとんどありません。

TIA ..

答えて

6

あなたmicroservices間の要求を転送するZuul(microservicesはユーレカを通じて取り組む知っている)を使用しましたか?その場合は、サーバー側の負荷分散パターンを使用しています。

ディスカバリーサービス(あなたのケースではユーレカ)を使用している場合、すべてのインターサービスリクエスト(システム内)に対してクライアントサイドのロードバランシングパターンを使用するのが最善の方法だと思います。 (リボンまたはRestTemplateを使用することができます)。

Zuulはシステムの統一されたフロントドアとして使用できます。これにより、ブラウザ、モバイルアプリケーション、またはその他のユーザーインターフェイスは、相互原産のリソース共有(CORS)とそれぞれの認証を管理せずに複数のホストからサービスを利用できます。

たとえば、すべての画像コメントのクライアント(モバイルアプリ)リクエスト。クライアントはコメントサービスアドレスを知る必要はありません。プロキシアドレスのみが必要で、Zuulは要求を適切なサービスに転送します。あなたは、要求がGET www.myproxy.mycompany.com/commentsなります

zuul.routes.comments.path=/comments/** 
zuul.routes.comments.service-id=comments 

によってapplication.yml/.propertiesでこれを行うことができます。あなたのサービス名を忘れないでくださいapplication.yml/.properties非常に重要です(spring.application.name)。 ZuulルートのサービスIDです(ユーレカの同じ識別子)。

あなたのシステムは外部サービスを要求する必要があります(3番目のメモに記載されています)。この場合、外部サービスは検出クライアントではなく、ZuulはユーレカからサービスIDを探すことができません。あなたは、あなたのサービスからのすべての要求/currencies/** Zuulが行われます THROUGH 、このルートで

zuul.routes.currencyprovider.path=/currencies/** 
zuul.routes.currencyprovider.url=https://currencies.net/ 

としてルートを使用します。 このアプローチでは、すべてのシステムに1つの扉があります。これはAPI Gateway patternです。

システムによっては、さまざまなサービスの複数の結果を集約して、クライアントの要求に応答する必要があることがあります。あなたはProxy(あなたの場合はZuul)でこれを行うことができます。

+0

こんにちは、redoff、応答ありがとうございます。それは私が必要以上に多くの情報を持っています:)。私は別の質問があります。ディスカバリサービス(クライアント側のロードバランシング)を使用している場合、パス名を明示的に設定してサービス名に基づいてリクエストをルーティングできるという利点はありますか? – Harish

+0

検出サービスを使用する場合、暗黙的にクライアント側のロードバランシングは使用されません。これは、サーバー側であるかクライアント側のLBであるかを定義するサービス間の通信アプローチです。 設定されたパスを使用する利点は、指定されたサービス(経路が設定されているもの)のみのアクセスを制限することができます**場合のみ、 'zuul.ignored-services = *'を追加します。 – redoff

+0

例:3つのサービス(コメント、ユーザー、メトリック)があります。 **プロキシ経由で1つのサービス(例:コメントサービス)へのアクセスを制限します。あなたは 'zuul.ignored-services = *'と 'zuul.routes.comments.path =/comments/**' '' zuul.routes.comments.service-id = comments'のように処理します。 このプロパティ行では、すべてのリクエスト**スルー**プロキシは 'www.myproxy.mycompany.com/comments'以外で拒否されます – redoff

関連する問題