【分布式下session的一致性】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数据库中、