【发布时间】:2017-05-19 15:03:47
【问题描述】:
我有一个如下所示的 url 路径:
/{identifier}/rest/of/resource/path
如果identifier 是A,那么请求应该转到service_I。如果identifier 是B,那么请求也应该转到service_I。如果identifier 是C,那么请求应该转到service_II,以此类推。
稍后,新的identifiersM 和N 被添加到系统中,它们的请求应路由到service_IV。
是否可以动态配置 Spring cloud zuul 代理来执行上述任务?
编辑
此question offered 包含检查问题的不同方式。
其中Zuul有如下配置:
zuul:
routes:
<service_id>:
path: /path/**
Zuul 将与 Eureka 合作找到service-id 并返回主机参数,以便可以访问服务。如果我们有 /{userID} 而不是 /path 并且 userID 实例分布在多个 service_id 主机上怎么办?
Zuul / DiscoveryClient 能否查询 Eureka 中的 service_id 和 userID 以确定哪个主机正在托管特定的 userID?
【问题讨论】:
-
您使用的是 Spring Cloud Config 服务器吗?您是否尝试过更改 Zuul 的配置,然后调用
/refresh端点? -
我会尝试使用它。不确定 Zuul 是否支持多对一映射 - 单个服务器的多个标识符...
-
Eureka 目前没有任何工具来映射 serviceid 和查询参数来查找服务主机。您需要编写一个自定义 zuul 过滤器。
-
@spencergibb 在我的情况下,我认为 serviceid 可能是多余的,因为 {identifier} 参数是全局唯一的,因此它应该足以识别包含它的主机。你认为 Zuul 过滤器仍然是正确的路线吗?我基本上只是用 {identifier} 替换 serviceID,它很可能是一个 UUID 字符串。
-
是的,你需要写一个过滤器
标签: spring-cloud netflix-zuul netflix-eureka netflix-ribbon