在Spring Boot API Gateway中实现Sticky Session 小结 在Kubernetes微服务的云环境中,如何在Spring Boot API Gateway中实现Sticky Session,当服务请求被某一个服务器处理后,所有后续的请求都被转发到被第一次进行处理的同一个服务器再进行处理,这里进行了尝试,取得了想要的结果。 问题 Spring Boot API Gateway中实现Sticky Session在Spring Boot官方文档并没有特别详细的描述,看来看去语焉不详,如下: https://docs.spring.io/: 3.9. Request-based Sticky Session for LoadBalancer 解决这个问题不仅要自定义负载均衡策略和方法,并需要Spring Boot API Gateway能够用某种方法取得服务器实例的ID并将每一个收到的服务请求处理并转发到具有相应服务器实例ID的服务器。实际上在Github上已经有大神给出了解决方案,具体地址如下: Github: tengcomplex/spring-cloud-gateway-lb-sticky-session 在API Gateway中实现Sticky Session 实现的环境为Kubernetes微服务的云环境,这里需要使用cookie,并使用Eureka服务发现模块。具体思路如下: StickySessionLoadBalancer实现ReactorServiceInstanceLoadBalancer,相当于自定义了一个负载均衡策略 当Spring Boot API Gateway收到http服务请求,StickySessionLoadBalancer在cookie中找服务器实例ID: 自定义一个scg-instance-id为cookie的键值 如果scg-instance-id为cookie被找到,而且是一个有效的服务器实例ID,那么这个服务请求就会被路由到这个具有服务器实例ID的服务器实例进行处理 反之,如果没有找到scg-instance-id为cookie的键值,或者服务器实例ID无效(有可能服务器已经宕机),那么委托ReactorServiceInstanceLoadBalancer重新选择一个服务器,并将服务请求转发那个服务器 无论以上路由如何选择,Spring Boot API Gateway会将服务器实例ID更新到cookie中去,scg-instance-id为的键值 注:以上图片是Sticky Session的Spring Boot API Gateway路由示意图,来源于Github: Question: Sticky session in routes with load balancer […]
在Kubernetes环境中有关Nginx Ingress与API Gateway的连接问题 在Kubernetes环境中是通过Nginx Ingress来从外部访问Kubernetes内部的环境,并用API Gateway来分发请求,碰到了 `502 Bad gateway.`的问题,并尝试解决。
Spring Boot整合Log4j2.xml的问题 Spring Boot整合Log4j2.xml的时候返回以下错误: `Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j` 进行了解决。
Windows 10 VS2015旧项目缺少MFC42D.DLL, MFCD42D.DLL, mfco42d.dll, MSVCP60D.DLL和MSVCRTD.DLL 在Windows 10中的VS2015找开旧项目,由于缺少MFC42D.DLL, MFCD42D.DLL, mfco42d.dll, MSVCP60D.DLL和MSVCRTD.DLL,无法调试并运行程序,进行了解决。