【问题标题】:Dynamically Configuring a Zuul Proxy during Runtime?在运行时动态配置 Zuul 代理?
【发布时间】:2017-05-19 15:03:47
【问题描述】:

我有一个如下所示的 url 路径:

/{identifier}/rest/of/resource/path

如果identifierA,那么请求应该转到service_I。如果identifierB,那么请求也应该转到service_I。如果identifierC,那么请求应该转到service_II,以此类推。

稍后,新的identifiersMN 被添加到系统中,它们的请求应路由到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_iduserID 以确定哪个主机正在托管特定的 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


【解决方案1】:

您需要编写自定义ZuulFilter 来完成此操作。查看PreDecorationFilter 以获得一些提示,因为这是负责处理/path 的过滤器,其中路径是service-id(除其他外)。

【讨论】:

    猜你喜欢
    • 2016-06-28
    • 2017-09-30
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多