Zuul自动发现问题

我们正在 Build 一个新的微服务架构,前端有Zuul,后端有一堆tomcat启用的微服务 . 启动时,每个服务都会向Eureka注册,任何想要调用这些服务的客户都将通过Zuul进行注册 . 我们已将这一切都连接起来,一切正常 .

但是,我有几个问题,我们如何使这个架构更具动态性 .

  • 我们假设有一件事是开箱即用的Ribbon / Eureka,但尚未找到解决办法,因为我们在后端添加更多服务,不知何故(通过Archiaus和更新到Zuul 's eureka-client.properties file) Zuul'的Ribbon客户端会使用新的服务细节更新自己(例如vipaddress,负载 balancer 算法等) . 到目前为止,唯一有效的方法是更新属性文件并重新启动Zuul(ughhh) .

例如,假设今天我们在后端有2个微服务,因此,Zuul的eureka / ribbon客户端配置将包括以下内容:

ribbon.client.niws.clientlist = service1 | service2 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客户端才能做到这一点?

ribbon.client.niws.clientlist = service1 | service2 | service3 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

  • 我的另一个问题是相关的,我们真的需要为Zuul可能路由到的每个服务添加一个客户端配置(在eureka-client.properties中)吗?在某些时候,我们可能有100个服务正在运行,并试图在Zuul维护所有相关的客户端配置似乎有点笨拙 . 有没有办法全局配置Zuul从Eureka(或基于Eureka中的一些服务元数据)将所有服务加载到其客户端列表中,并在新服务向Eureka注册时动态更新此列表?

谢谢!

回答(1)

2 years ago

问题在于namespaces.If我们使用默认命名空间,它应该能够获取默认添加的新属性 .