Zuul自动发现问题

时间:2015-12-08 19:04:35

标签: microservices netflix-eureka netflix-zuul

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

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

  1. 我们假设有一件事是带有Ribbon / Eureka的开箱即用,但尚未找到解决办法,因为我们在后端添加了更多服务,不知何故(通过Archiaus并更新到Zuul' s eureka-client.properties文件)Zuul的Ribbon客户端将使用新的服务细节(例如vipaddress,负载平衡算法等)更新自己。到目前为止,唯一有效的方法是更新属性文件并重新启动Zuul(ughhh)。
  2. 例如,让我们说今天我们在后端有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客户端才能做到这一点?

    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中)吗?在某些时候,我们可能有100个服务正在运行,并试图维持Zuul中所有相关的客户端配置似乎有点笨拙。有没有办法全局配置Zuul从Eureka(或基于Eureka中的一些服务元数据)将所有服务加载到其客户端列表中,并在新服务向Eureka注册时动态更新此列表?
    2. 谢谢!

1 个答案:

答案 0 :(得分:0)

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