我正在使用 Spring Netflix Eureka、Zuul 和 Ribbon 开发一个专门的、动态的 Web 应用程序路由器。我需要知道功能区负载平衡器从在 Eureka 中使用给定服务 ID 注册的服务器池中选择了哪个服务器来路由请求。
Zuul 似乎没有在 RequestContext 中跟踪 Ribbon 选择的服务器。
上下文:这不是传统的无状态 REST 服务路由。此路由器正在管理使用不可共享(目前)会话的遗留 Java Web 应用程序池。这些遗留服务器正在被改造为 Spring Boot Eureka 感知应用程序。他们将在给定的服务器 ID 下向 Eureka 注册。他们还将注册一个 GUID 作为 Eureka 元数据,该元数据唯一地定义了应用程序的执行实例。
我正在实现一个粘性会话方案,它将 Java 会话 ID 与生成会话的服务器的唯一服务器 ID(GUID)相关联。
因此,当收到带有会话 cookie 的请求时,我将使用我已经编写的功能区规则和谓词过滤器(出于其他原因)将服务器列表过滤为仅与会话关联的 GUID 的服务器列表。
可能还有其他方法可以做到这一点,但就我而言,除了知道实际执行请求的服务器的知识之外,我拥有我需要的所有材料。