我们正在设计一个应用程序基础架构,目的是将Zuul作为Web应用程序的智能路由器(以及微服务,但这与此问题正交)。
我正在努力理解Zuul想要如何工作,我很失望,因为我无法找到一些信息丰富的概述,所以我可以理解如何做我想做的事情。有谁知道这样的参考?
我们有两个要求,我很难理解Zuul将如何(以及如果)处理。
我们希望实现基于应用程序版本的路由。此外,如果客户端处于升级模式,我们将返回"稍后再试一次"页。
我们可能不得不忍受Web应用的粘性会话。
对于基于版本的路由,我们将能够访问可用于分布式元数据缓存的微服务。在缓存中,我们将获得与基础架构相关的客户端信息。我们可以从请求URL确定客户端。
因此,我认为我们将在预过滤器中进行客户端查找,并在路由过滤器中使用该信息执行智能操作。有人可以让我开始这个吗?
对于粘性会话,我发现了以下内容:
这看起来非常聪明,似乎是我正在寻找的东西。但是,我想更好地了解其工作原理。有人可以建议吗?
答案 0 :(得分:1)
有关基于版本的路由的第一个要求,您可以使用版本后缀注册您的微服务。例如,在In Eureka服务器中,两个不同版本的服务 ABC 将注册为:
|--------------|---------|--------------|-------------| | Application | AMIs | Availability | Status | | | | Zones | | |--------------|---------|--------------|-------------| | ABCV1 |(n/a) (1)| (1) | UP(1) host1 | |--------------|---------|--------------|-------------| | ABCV2 |(n/a) (1)| (1) | UP(1) host2 | |--------------|---------|--------------|-------------|
在Zuul中,您可以根据URL和服务ID创建路由。例如,
zuul:
ignoredPatterns: /health/**
routes:
abc1:
path: /v1/abc/**
stripPrefix: false
serviceId: ABCV1
abc2:
path: /v2/abc/**
stripPrefix: false
serviceId: ABCV2