关于项目中session一致性问题的解决

session 内存 tomcat创建。
session和cookie是一对一,cookie会保存sessionId–>>>JsessionId

分布式下session一致性问题解决方案

方案1 基于ngnix的ip_hash策略来做负载均衡
原理 根据ip做hash计算,同一个ip的请求始终会定位到同一台tomcat

缺点:如果一台tomcat宕机,就会出现用户session的缺失。

方案2 基于服务器session复制
原理: tomcat服务器创建session后,会通过组播方式把session发送到组播地址中的其他服务器上

优点:侵入式较少 需要配置web.xml 分布式。session备份、

 缺点 延迟 受限内存资源。高流量 带宽占用较大、不灵活

方案3 Session集中统一管理
原理 session不由tomcat管理,而是统一放到一个地方集中式管理,读取和写入session都依赖第三方软件
例如 redis mongodb mysql等等

 优点:大型分布式环境首选方案。

spring 如果做到session集中管理
 HttpSession是一个接口 --Servlet容器会实现HttpSession接口 给出实现(TomCat有一个Session容器)
    Spring Session本质:覆盖原有tomcat容器的HttpSession实现

Spring Session源码  理解。
Tomcat实现了对HttpSession接口的实现。但是使用SpringSession之后 在web.xml文件中配置了拦截器 就会是使用

Spring Session的配置。SpringSession实现类有JDBCSessionRespository Mongdb Redis。因此。在配置了RedisSession
仓库之后就会自动使用Redis的实现类。添加到Redis数据库中。将Session信息存储到Redis数据库中。

你可能感兴趣的:(业务)