8

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

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

可能是这样的:

在 Zuul 代理中,

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

在样品服务中,

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

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

4

1 回答 1

6

我认为你的方向是正确的。您可以编写自己的@RibbonClient,这基本上是@Configuration每个服务的负载平衡类。

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

在那里,您可以为该服务放置您自己的IRule- 如果需要,还可以放置任何其他组件。有了这个,您可以根据元数据过滤可用于负载平衡的实例。

RoundRobinRule做一个简单的循环负载平衡,满足进一步需求的好例子。

于 2015-09-22T14:10:06.083 回答