我要部署同一应用程序的两个版本,并根据它们的版本(即Canary版本)将请求路由到这些应用程序。这两个版本的应用都将使用相同的应用名称注册到Eureka。
环境由Zuul网关,Eureka服务发现,用于负载平衡的Ribbon和用于内部应用程序间通信的Feign组成。除此之外,还有两个其他应用程序,App1和App2。当App1收到请求时,它将使用Feign调用App2。
This image显示了我要完成的流程。
Eureka有一个metadataMap,可以在其中设置键/值对。部署App1或App2的Canary版本时,可以在此映射中设置“ canary = true”。
遵循此PR。一个请求将被发送到Zuul网关,在那里preFilter会检查X-Canary-Test
头是否设置。接下来,自定义的Ribbon IRule将基于是否请求发布Canary版本从Eureka中选择实例的子集。
我也不确定Feign会如何工作。如果原始请求是针对Canary版本的,那么我希望对Canary版本进行所有后续调用(如果存在)。