分布式环境中如何解决|分布式环境中如何解决 Session 的问题

参考链接:
https://docs.spring.io/spring-session/docs/2.2.1.BUILD-SNAPSHOT/reference/html5/guides/boot-redis.html
常见的会话解决方案

  • 粘性会话
    Sticky Session 来自一个用户的会话,尽可能落到一台机器上 如果服务器有下线,会话信息就会不存在了,用户体验差
  • 【分布式环境中如何解决|分布式环境中如何解决 Session 的问题】会话复制
    Session Replication 每台机器都存会话,副本信息较大,会浪费资源
  • 集中会话
    Centralized Session 使用redis,Mongodb,jdbc等来实现,推荐使用
实现原理 定制HttpSession
  • 通过定制的HttpServletRequest返回定制的HttpSession,主要是用来屏蔽差异
  • 主要的类
    -- SessionRepositoryResponseWrapper
    -- SessionRepositoryFilter
    -- DelegatingFilterProxy
示例 https://github.com/laodwh/session-demo

    推荐阅读