私たちは、フロントエンドに Zuul を、バックエンドに多数の tomcat 対応マイクロサービスを備えた新しいマイクロサービス アーキテクチャを立ち上げようとしています。各サービスは、起動時にそれ自体を Eureka に登録し、それらのサービスを呼び出したいクライアントは Zuul を介してこれを行います。これはすべて配線されており、すべて正常に機能しています。
ただし、このアーキテクチャをより動的にする方法についていくつか質問があります。
- 私たちが想定していたことの 1 つは、Ribbon/Eureka ですぐに使用できると想定していましたが、まだ解決策を見つけていないということです。 ) Zuul のリボン クライアントは、新しいサービスの詳細 (vipaddress、負荷分散アルゴリズムなど) で自身を更新します。これまでのところ、機能する唯一の方法は、プロパティ ファイルを更新して Zuul を再起動することです (うーん)。
たとえば、今日、バックエンドに 2 つのマイクロサービスがあるとします。したがって、Zuul の eureka/ribbon クライアント構成には以下が含まれます。
リボン.client.niws.clientlist=サービス1|サービス2 zuul.ribbon.namespace=zuul.client
service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
さて、明日、service3 を追加する必要があるとしましょう。私たちが観察したことは、これらの詳細を同じ構成 (以下を参照) に追加すると、再起動後にのみ Zuul で利用できるようになるということです。新しいサービスの詳細を動的に導入できるようにするために欠落している他の構成パラメーターはありますか?それとも、これを行うために独自の Eureka/Ribbon クライアントをロールバックする必要がありますか?
リボン.client.niws.clientlist=サービス1|サービス2|サービス3 zuul.ribbon.namespace=zuul.client
service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service3.zuul.client.DeploymentContextBasedVipAddresses=myService3 service3.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
- 私のもう 1 つの質問は関連しており、Zuul がルーティングできるすべてのサービスに対して (eureka-client.properties に) クライアント構成を追加する必要があるのでしょうか? ある時点で、何百ものサービスが実行されている可能性があり、関連するすべてのクライアント構成を Zuul で維持しようとするのは少し不器用に思えます。Eureka から (または Eureka の一部のサービス メタデータに基づいて) クライアント リストにすべてのサービスをロードし、新しいサービスが Eureka に登録されるとこのリストを動的に更新するように Zuul をグローバルに構成する方法はありますか?
ありがとう!