【问题标题】:Netflix Zuul - Lookup metadata to influence routing?Netflix Zuul - 查找元数据以影响路由?
【发布时间】:2018-02-25 12:44:03
【问题描述】:

我们正在设计一个应用程序基础架构,目的是让 Zuul 作为 Web 应用程序(以及微服务,但与这个问题正交)的智能路由器。

我在努力理解 Zuul 想要如何工作,我很失望我找不到一些信息丰富的概述,因此我可以理解如何做我想做的事情。有谁知道这样的参考资料吗?

我们有两个要求,我很难理解 Zuul 将如何(以及是否)处理。

  1. 我们希望实现基于应用程序版本的路由。另外,如果客户端处于升级模式,我们会返回一个“稍后重试”页面。

  2. 我们可能不得不忍受 Web 应用的粘性会话。

对于基于版本的路由,我们将可以访问位于分布式元数据缓存前面的微服务。在缓存中,我们将拥有与基础设施相关的客户端信息。我们可以根据请求的 URL 来判断客户端。

所以,我想我们将在预过滤器中进行客户端查找,并在路由过滤器中使用该信息进行智能操作。有人可以帮我开始吗?

对于粘性会话,我发现了以下内容:

Sticky Sessions using Ribbon

这对我来说看起来很聪明,似乎正是我要找的。但是,我想更好地了解这是如何工作的。有人可以建议吗?

【问题讨论】:

  • github.com 链接失效

标签: spring-boot spring-cloud netflix-zuul netflix netflix-ribbon


【解决方案1】:

对于基于版本的路由的第一个要求,您可以使用版本后缀注册您的微服务。例如,在 Eureka 服务器中,两个不同版本的服务 ABC 将注册为:

|-------------|----------|--------------|--------- ----| |应用 | AMI |可用性 |状态 | | | |区域 | | |-------------|----------|--------------|--------- ----| | ABCV1 |(n/a) (1)| (1) |上(1)主机1 | |-------------|----------|--------------|--------- ----| | ABCV2 |(不适用) (1)| (1) |上(1)主机2 | |-------------|----------|--------------|--------- ----|

在 Zuul 中,您可以根据 URL 和服务 ID 创建路由。例如,

zuul:
  ignoredPatterns: /health/**
  routes:
    abc1:
      path: /v1/abc/**
      stripPrefix: false
      serviceId: ABCV1
    abc2:
      path: /v2/abc/**
      stripPrefix: false
      serviceId: ABCV2

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2016-09-11
    • 2020-05-06
    • 1970-01-01
    • 2015-05-14
    • 2016-06-15
    • 2019-09-11
    • 2017-11-02
    • 2016-07-28
    相关资源
    最近更新 更多