模仿HttpSession自定义Session并且使用Redis支持共享,能完美接入负载均衡
2017-09-19 15:03
381 查看
模仿HttpSession自定义Session并且使用Redis支持共享,能完美接入负载均衡
首先声明:上一次AOP的文章是从本人个人公众号转过来的,因为是复制的所以图片无法加载,如果需要原文可以直接访问http://mp.weixin.qq.com/s/9AsSgYn7PJGAcn6rTaof8g
开始前首先理解几个概念:
负载均衡:
对象序列化:
HttpSession:
负载均衡:
假如当前的Tomcat服务器只最大只能承受1200的用户访问,但是此时有5000的需求量,这样会导致Tomcat拒绝服务,使用我们会横向拓展,使用多个Tomcat平均分散这些请求,一起服务这5000个量,这样的方式称作负载均衡
对象序列化:
当需要把已经实例化的对象持久化到内存中的时候,需要对其进行序列化成二进制或者JSON,当再次使用的时候将其反序列化成实例到内存中(这样既有利于数据传输,又有利于数据持久化)
HttpSession:
当客户机(浏览器)使用Http协议访问服务器的时候,服务器会默认在自己的内存中开辟一块空间用来保存这个客户机的数据的那个对象
现在开始进入正题:
本次我自己写了一个实例对象,模仿HttpSession并且将其序列化到redis里面这样使整个Web应用可以支持负载均衡(Httpsession是自己服务器内存中的,单多台服务器运行的时候session默认无法共享访问)
1、首先写Mysession
这个Mysession就是我自己写的session
这里的ID是需要模仿HttpSession id那样唯一的,所以我使用了MD5加密算法的方式生成(用随机数+salt(盐)+时间戳)这样能保证ID的唯一性
2、编写对Redis的操作
将Mysession序列化后放入redis
从Redis中取出Mysession
我这里使用的是protostuff去序列化对象,打击可以百度先了解这个东西的使用
3、将Mysession的ID写到客户机浏览器的cookie里面
这里通过客户机提供的SessionID去redis查找Mysession的实例(我这里里将业务功能写在拦截器里面)
4、在认证阶段取出Mysession
以上就是简答自己实现类似于HttpSession的Mysession的方式,并且使其可以序列化并且配合redis使用
欢迎大家提出自己宝贵的意见
相关文章推荐
- 负载均衡中使用 Redis 实现共享 Session
- 负载均衡,最理想使用 redis实现session共享
- 负载均衡中使用 Redis 实现共享 Session
- SpringSession使用redis存储HttpSession(共享session)
- springboot利用springsession实现redis共享session,并且自定义sessionid
- 分布式中使用Redis实现Session共享(二)
- 分布式中使用 Redis 实现 Session 共享(下)
- 负载均衡之Nginx+tomcat+redis实现session共享的负载均衡
- (转)分布式中使用Redis实现Session共享(二)
- 使用 Redis 共享 Session 会话
- 分布式中使用Redis实现Session共享
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
- 使用redis解决tomcat6在nginx负载下多节点共享session问题
- Redis学习笔记(七)nginx+tomcat反向代理下使用tomcat-redis-session-manager进行session共享中值得注意的一个问题
- tomcat使用redis共享session并实现单点登录
- 好久没有写博客了,今天来一片php使用redis共享session
- 分布式中使用Redis实现Session共享(二)
- 分布式中使用Redis实现Session共享(二)
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- (转)分布式中使用Redis实现Session共享(一)