web-dev-qa-db-ja.com

ズールルートを設定するタイミング

私はSpringCloudを初めて使用し、快適にするためにオンラインで入手できるいくつかの例と資料を調べています。ただし、ZUULについて読んでいるときに、一部のサイトはZUULのapplication.ymlでルートを構成し、他のいくつかのサイトは、リクエストがそれぞれのマイクロサービスに転送され、ルートを明示的に構成する必要がないと述べました。私は少し混乱しました。たとえば、以下のシナリオでは、ルートを構成する、またはzuulルートを自動的に許可するアプローチは何ですか?

  1. 実行中のマイクロサービスがほとんどなく、それらすべてがZUULとともにEurekaに登録されているとします。
  2. 同じサーバー上の別のポートで実行されているフロントエンドがあり、上記のマイクロサービスと対話する必要があります。
  3. また、データをフェッチするために上記のマイクロサービスと対話する必要がある他のアプリケーション(完全に異なるサーバーで実行されている)はほとんどありません。

TIA ..

6
Harish

Zuul(Eurekaを介してマイクロサービスのアドレスを知っている)を使用して、マイクロサービス間でリクエストを転送しましたか?その場合は、サーバー側の負荷分散パターンを使用しています。

検出サービス(あなたの場合はEureka)を使用する場合、(システム内の)すべてのサービス間要求にクライアント側の負荷分散パターンを使用するのが最善のアプローチだと思います。 (そのためにRibbonまたはRestTemplateを使用できます)。

Zuulをシステムへの統合されたフロントドアとして使用できます。これにより、ブラウザー、モバイルアプリ、またはその他のユーザーインターフェイスで、オリジン間リソース共有(CORS)や認証を管理することなく、複数のホストからサービスを利用できます。

例:すべての画像コメントに対するクライアント(モバイルアプリ)のリクエスト。クライアントはコメントサービスアドレスを知る必要はありません。必要なプロキシアドレスのみで、Zuulはリクエストを適切なサービスに転送します。 application.yml/.propertiesでこれを行うことができます

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

リクエストはGET www.myproxy.mycompany.com/commentsになります。 application.yml/.propertiesのサービス名は非常に重要です(spring.application.name)。これは、ズールルートのサービスIDです(ユーレカの同じ識別子です)。

何らかの理由で、システムは外部サービスを要求する必要があります(3番目のメモで述べたように)。この場合、外部サービスは検出クライアントではなく、ZuulはEurekaからservice-idを検索できません。ルートを次のように使用します

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

このルートを使用すると、サービスからのすべての/currencies/**リクエスト[〜#〜]から[〜#〜]Zuulが実行されます。このアプローチでは、すべてのシステムに1つのドアがあります。これは APIゲートウェイパターン です。

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

10
redoff