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

参考链接:
https://docs.spring.io/spring-session/docs/2.2.1.BUILD-SNAPSHOT/reference/html5/guides/boot-redis.html

常见的会话解决方案

  • 粘性会话
    Sticky Session 来自一个用户的会话,尽可能落到一台机器上 如果服务器有下线,会话信息就会不存在了,用户体验差

  • 会话复制
    Session Replication 每台机器都存会话,副本信息较大,会浪费资源

  • 集中会话
    Centralized Session 使用redis,Mongodb,jdbc等来实现,推荐使用

实现原理

定制HttpSession

  • 通过定制的HttpServletRequest返回定制的HttpSession,主要是用来屏蔽差异

  • 主要的类
    -- SessionRepositoryResponseWrapper
    -- SessionRepositoryFilter
    -- DelegatingFilterProxy

示例

https://github.com/laodwh/session-demo

你可能感兴趣的:(分布式环境中如何解决 Session 的问题)