大数据环境下Session和Cookie的管理

在大型系统中,单独使用Cookie和Session都是不行的。因为,如:Cookie存储在系统的客户端,则可以很好的解决分布式的访问,但是随着统一域名下的不同服务器,用户每次访问所产生的值存储在Cookie中就会导致Cookie的负荷变重,同时,Cookie也会有大小限制,不超过4KB,还有安全等等问题,所以在分布式访问的情况下不适合用Cookie来进行存储用户的一些关键信息。 分布式session框架的提出就是解决分布式下session存储用户信息的问题。总体框架如下图所示:

增加一个缓存服务器,来有效的资源管理,session存储在这个分布式缓存中,可以随时写入和读取,如:MemCache。对于Cookie,统一配置服务器推送配置可以有效的集中管理资源,所以,可以省去每个应用来配置服务器,如果一个应用新增的一个Cookie,则可以通过一个统一的平台的申请,申请通过将这个配置添加到这个订阅服务器。如果一个应用要使用全局的Cookie,则只需将这个Cookie通过统一推送出去就行了。 关于其存储问题的实现:在应用中web.xml中配置一个SessionFilter,用于请求到达MVC框架之前封装的HttpServletRequest和HttpServletResponse,并创建自己的InnerHttpSession对象,把他设置在request和response对象中,这样的应用系统通过request.getHttpSession()返回的就是我们创建的InnerHttpSession对象,我们可以拦截response的addCookie设置的cookie,其过程如下图所示:


还有另外一个问题就是跨域名共享Cookie问题,要实现session,需要另外一个应用的跳转,,这个应用可以被一个或多个域名访问,它主要就是从一个域名取得sessionID,然后,将这个sessionID同步到另外一个域名下,这个sessionID就是一个Cookie,相当于我们经常遇到的JSESSIONID,具体实现过程如下图:

本文章参考自深入javaweb技术内幕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值