如何使用netflix在部署期间将所有请求转发到特定版本(相同服务)?

时间:2015-09-22 11:17:13

标签: spring-cloud microservices netflix netflix-eureka netflix-zuul

我在不同的主机上运行了4个相同服务的实例。我正在按节点为该服务节点部署新版本。部署时,传入请求会根据负载均衡器转发到任何版本(主机)。在netflix中有什么方法可以将所有传入的请求转发到特定版本吗?

是否有任何通用的方法可以定义版本(对于相同的serviceId)。如果传入请求在标头中定义了版本,我们可以使用它将请求转发到特定版本。

可能是这样的:

在Zuul Proxy中,

zuul:
  routes:
    sample:
      path: /sample/{version}/**
      serviceId: sample-service

在样本服务中,

eureka:
  instance:
    appname: sample-service
    metadataMap:
      version: v1

或实现同一服务版本控制的任何其他机制?

1 个答案:

答案 0 :(得分:5)

我认为你正朝着正确的方向前进。您可以编写自己的@RibbonClient,它基本上是@Configuration类,用于每项服务的负载均衡。

@RibbonClient(name = "yourServiceName", configuration = RibbonConfigForThatService.class)

您可以为自己的IRule - 以及其他任何组件 - 提供该服务。有了这个,您可以根据元数据过滤可用于负载均衡的实例。

RoundRobinRule执行简单的循环负载均衡,这是进一步需求的良好示例。