我有一组微服务,我们使用 zuul 从前端进行路由,作为使用 Spring Cloud 将 uri 上下文路径映射到特定微服务的一种方式。
在内部和外部,我们使用 spring OAuth2,效果非常好。
然而,对于一项特定服务,出现了对 SAML 的要求,这对该服务提出了粘性会话要求。
另一个人考虑过这一点以及为 zuul 提供粘性会话支持的正确方法是什么。
在我弄清楚这一点之前,作为一种解决方法,我将前端的 HAProxy 的一些请求直接路由到该服务。
我假设如果您需要粘性会话,则您有多个后端,因此您必须使用功能区过滤器。粘性会话可以添加为IRule
, e.g.
@RibbonClient(value="myui", configuration=UiRibbonConfiguration.class)
public class UiRibbonConfiguration {
@Bean
public IRule loadBalancerRule() {
return new MyStickySessionRule();
}
}
plus a ZuulFilter
(或者一个servletFilter
在你的后端)添加一个用于关联的 cookie - 每个后端实例必须唯一地标识自己,然后在MyStickySessionRule
您必须查看传入的 cookie 来决定将请求发送到哪个实例(例如,如果后端是 Spring Boot 应用程序,您可以将“X-Application-Context”标头值作为 cookie 发送)。
注意:如果您可以在后端使用 Spring Session,则不需要粘性会话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)