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