社区
Web 开发
帖子详情
JAVA WEB开发中,跨服务器如何保证session的延续?
shenyi0106
2011-04-27 09:47:49
在WEB开发中,跨服务器如何控制session的延续?
...全文
287
15
打赏
收藏
JAVA WEB开发中,跨服务器如何保证session的延续?
在WEB开发中,跨服务器如何控制session的延续?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shenyi0106
2011-04-27
打赏
举报
回复
[Quote=引用 10 楼 rainsilence 的回复:]
分布式存贮解决方案
[/Quote]
提供何种IO接口?
hepeng_8
2011-04-27
打赏
举报
回复
可以把session放在数据库吗 这样想在那用就在那用啊
rainsilence
2011-04-27
打赏
举报
回复
分布式存贮解决方案
shenyi0106
2011-04-27
打赏
举报
回复
非常感谢各位,尤其是ouwaner,还提供了好几种方案。
Memcache是一种内存数据库产品吗?
rainsilence
2011-04-27
打赏
举报
回复
session复制不是一种好的方法。当集群中的session流量总和超过一台计算机的承受极限的时候,将会造成大面积崩溃。。我建议你从sna架构的角度去考虑
用RequestWrapper+SessionWrapper+Filter把session给包裹掉,集成Memcache。
ouwaner
2011-04-27
打赏
举报
回复
跨服务器之间的Session共享方案需求变得迫切起来,最终催生了多种解决方案,下面列举4种较为可行的方案进行对比探讨:
1. 基于NFS的Session共享
NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。
这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的 本地session目录即可,缺点是NFS依托于复杂的安全机制和文件系统,因此并发效率不高,尤其对于session这类高并发读写的小文件, 会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。
2. 基于数据库的Session共享
首选当然是大名鼎鼎的Mysql数据库,并且建议使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强,相信大家普遍在 使用,它的缺点在于session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁,虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。
3. 基于Cookie的Session共享
这个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式,统一 种植在根域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有Cookie内容的特性,从而实现 用户的Cookie化Session 在多服务间的共享访问。
这个方案的优点无需额外的服务器资源;缺点是由于受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时Cookie化的 Session内容需要进行安全加解密(如:采用DES、RSA等进行明文加解密;再由MD5、SHA-1等算法进行防伪认证),另外它也会占用一定的带 宽资源,因为浏览器会在请求当前域名下任何资源时将本地Cookie附加在http头中传递到服务器。
4. 基于Memcache的Session共享
Memcache由于是一款基于Libevent多路异步I/O技术的内存共享系统,简单的Key + Value数据存储模式使得代码逻辑小巧高效,因此在并发处理能力上占据了绝对优势,目前本人所经历的项目达到2000/秒 平均查询,并且服务器CPU消耗依然不到10%。
另外值得一提的是Memcache的内存hash表所特有的Expires数据过期淘汰机制,正好和Session的过期机制不谋而合,降低了过期Session数据删除的代码复杂度,对比“基于数据库的存储方案”,仅这块逻辑就给数据表产生巨大的查询压力
ouwaner
2011-04-27
打赏
举报
回复
session复制的方法,一种是基于db的,一种是基于memory的
session replication 的数据库持久化配置,也可以不用编程的:
1、创建数据库
create database was_sess;
2、在管理控制台创建 datasource
Resource -> JDBC -> JDBC provider -> data sources -> jndi: jdbc/sessions
3、在管理控制台配置session replication
Servers -> Application servers -> app name -> session management -> distributed environment -> in database
设置数据源 JNDI 名称、用户名、密码、行大小即可(DB2专用)、是否使用多行(推荐,特别Session Object里面内容太多的时候)即可。
qingyuan18
2011-04-27
打赏
举报
回复
你说的应该是多个服务器集群的session复制吧?这个所有的Web服务器厂商都有这样的功能
shenyi0106
2011-04-27
打赏
举报
回复
听说weblogic可以配置session复制?
是不是有这么一说?
ouwaner
2011-04-27
打赏
举报
回复
因为SessionId是一致的,所以你可以在跨服务器间建立查询机制,通过SessionId,和key查询想要的数据
阿凡提提
2011-04-27
打赏
举报
回复
跨服务器。。。这个真有点难。。。不过来学习学习。
wangjiangbo2
2011-04-27
打赏
举报
回复
感觉不成,session应该只针对一个服务器
shenyi0106
2011-04-27
打赏
举报
回复
谢谢
结贴给分
rainsilence
2011-04-27
打赏
举报
回复
搜百度,很多的。
什么是
Session
?
Web
开发
中
Session
的使用与注意事项
本文围绕
Web
开发
中
的
Session
展开,介绍了其基本定义、工作原理和使用场景。详细讲解了在
Java
Web
和Spring Boot
中
使用
Session
的方法,包括获取、读取、注销等操作。还提及了使用
Session
的注意事项,如安全性、性能和过期时间问题,并给出了相应解决方案。
Java
Web
之
Session
详解
本文围绕
Java
Web
开发
中
的
Session
展开,介绍了其基础知识、本质、工作原理,阐述了在
Java
Servlet API
中
的操作及使用示例。同时,分析了
Session
的安全性、限制,给出替代方案,总结了优缺点。了解这些能助力
开发
者打造安全便捷的
Web
应用。
java
session
使用_究竟如何
保证
session
一致性?
本文介绍了
Web
开发
中
session
的概念,它用于存储用户信息以保持登录状态。同时阐述了
session
一致性问题,即在多台
web
- server
保证
高可用时,请求可能无法正确路由到
session
。还详细介绍了
保证
session
一致性的方法,如
session
同步法、客户端存储法等,并给出了方案推荐。
Web
开发
中
实现
Session
清空的实战指南
本文聚焦
Web
开发
中
Session
技术,介绍其基本概念与工作原理,阐述清空
Session
的必要性及场景。详细讲解
Java
Servlet和PHP实现
Session
清空的步骤,给出代码示例,并强调提升用户注销安全性的策略。最后探讨
Session
管理未来趋势与挑战,助力
开发
者保障
Web
应用安全。
深入理解
Web
开发
中
的Cookie和
Session
管理
本文详细介绍了Cookie和
Session
在
Web
开发
中
的重要性,包括它们的工作原理、使用案例、安全性和隐私问题,以及在不同场景下的选择和管理,帮助
开发
者优化
Web
应用的性能和安全性。
Web 开发
81,110
社区成员
341,727
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章