0

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

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

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

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

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

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

所以,我想我们将在预过滤器中进行客户端查找,并在路由过滤器中对这些信息进行智能处理。有人可以让我开始吗?

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

使用功能区的粘性会话

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

4

1 回答 1

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
于 2017-09-18T20:11:08.740 回答