集中式session

集中式的Seesion管理

这次给平台升级将原先Cookie会话,切换到集中式的Session管理
技术使用:redis或者zookeeper存储会话数据
1.会话
所谓会话,即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中保存一些数据。如访问一些网站时登录成功后,网站可以记住用户,且在退出之前都可以识别当前用户是谁。
2.技术实现
 二种方式实现:
 1.重写Servlet容器session的方案
 2.放弃Servlet容器的会话管理,自己维护着会话
3.Servlet方案
 1.继承HttpServletRequestWrapper类,重新实现getSession的两个方法
 2.自己实现SessionManager,来控制sessinid
 3.通过Filter拦截器替换ServletRequest的实现,完成代理模式
 4.后台有个任务线程去删除用户最后一次时间跟当前时间比较比较,超过设置的过期时间的用户session
4.自定义实现
 1.创建一个SessionIdGenerator用来生成sessionId。并存入此用户的cookie中,此唯一标识唯一对应着某一个用户
 2,生产的sessionId存放到服务器中心服务器上
 3.客户每次请求都将cookie与请求一起传输到服务器上,服务器通过sessionid去redis或者zookeeper查询
 4.每个请求都需要更新此用户请求的时间
 5.后台有个任务线程去删除用户最后一次时间跟当前时间比较比较,超过设置的过期时间的用户session
 这个方式做的好的话,可以每台服务器也存储一个session,通过中心session服务器跟本地seesion双重验证提高效率

你可能感兴趣的:(session)