1. 基于NFS的Session共享
NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发。
优点:实现最为简单,无需做过多的二次开发,仅需将共享目录服务器mount到各频道服务器的本地session目录即可;
缺点:NFS依托于复杂的安全机制和文件系统,因此并发效率不高。尤其对于session这类高并发读写的小文件,会由于共享目录服务器的io-wait过高,最终拖累前端WEB应用程序的执行效率。
2. 基于数据库的Session共享(偶尔.net)
优点:使用内存表Heap,提高session操作的读写效率。这个方案的实用性比较强。
缺点:session的并发读写能力取决于Mysql数据库的性能,同时需要自己实现session淘汰逻辑,以便定时从数据表中更新、删除 session记录,当并发过高时容易出现表锁。虽然我们可以选择行级锁的表引擎,但不得不否认使用数据库存储Session还是有些杀鸡用牛刀的架势。
3. 基于Cookie的Session共享
原理:将全站用户的Session信息加密、序列化后以Cookie的方式,统一种植在根域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有Cookie内容的特性,从而实现用户的Cookie化Session 在多服务间的共享访问。
实现机制:当用户发起一个请求的时候,服务器会检查该请求中是否包含sessionid,如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。这里需要注意的是session始终是有服务端创建的。
优点:无需额外的服务器资源;
缺点:受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时Cookie化的 Session内容需要进行安全加解密,另外它也会占用一定的带宽资源,因为浏览器会在请求当前域名下任何资源时将本地Cookie附加在http头中传递到服务器,敏感信息有安全隐患。
4. 基于缓存的Session共享(经常)
session数据保存到Redis等数据库中,设计一个Filter,利用HttpServletRequestWrapper,实现自己的 getSession()方法,替换掉Servlet容器创建和管理HttpSession的实现。Servlet容器启动时加载。
5. session复制
服务器间同步,定时同步各个服务器的session信息,此方法可能有一定延时,用户体验也不是很好,当服务器很多时(几十台),容易引起网络风暴。
相关推荐
如何解决Nginx的负载均衡的配置?如何解决使用nginx负载均衡后留下session不同步的隐患? Tomcat的session共享有几种解决方案?文档中均有涉及!欢迎大家转载!
六种session共享的方法,是服务器水平扩展必须的内容之一,自己收集,推荐给大家
在集群系统下实现session统一的有如下几种方案: 1、请求精确定位:session sticky,例如基于访问ip的hash策略,即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息,如果宕机,...
ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X 共享行专用(SRX):阻止其他...
所有Web程序都会使用Session保存数据. 使用独立的Session服务器可以解决负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session服务器的几种办法, 并介绍在使用Session时的各种经验和技巧。
使用独立的Session服务器可以解决负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session服务器的几种办法, 并介绍在使用Session时的各种经验和技巧. 二.关于Session,SessionID和CookiesSession数据保存在...
.net mvc中,Session失效需要考虑几种情况: •基于权限认证的Action,使用非Ajax请求; •基于权限认证的Action,使用JQueryt Ajax请求; •基于权限认证的Action,使用.net mvc封装的Ajax请求; •无权限认证的...
3、Tomcat 有几种部署方式? 4、tomcat 容器是如何创建 servlet 类实例?用到了什么原理? 5.tomcat 如何优化? 6.内存调优 7.垃圾回收策略调优 8.共享 session 处理 8.添加 JMS 远程监控 9.专业点的分析工具有哪些 ...
Token,你将以一种极其简单的方式实现系统的权限认证部分登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录权限认证 —— 权限认证、角色认证、会话二级认证Session会话 —— 全端共享Session、单端独...
Hibernate的第二级缓存是SessionFactory级别的缓存,它被所有的Session共享. Hibernate的第二级缓存是一个插件,下面是几种常用的缓存插件: EhCache SwarmCache JBossCache等. 其中,EhCache是Hibernate的...
负载均衡的几种方式: 1.轮询:默认按照时间顺序对所有服务器一个一个的访问,如果有服务器宕机,会自动剔除; 2.weight:服务器的方位几率和weight成正比,这个可以在服务器配置不均的时候进行配置; 3.ip_hash...
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...
列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34.........
二级缓存是全局缓存,它可以被所有的session共享。 二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。 常用的缓存插件 Hibernater二级缓存是一个插件,下面是几种常用的缓存...
深入理解多线程实现的另一种方式Callable.docx 红黑树简介.docx 线程死锁及解决办法.docx 线程锁之重入锁.docx 线程间的通信.docx 虚拟机内存结构和垃圾回收docx.docx 锁分类的了解.docx 集合的扩容机制.png ...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...
76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端...
一个Servlet环境不能在虚拟主机之间共享。 Servlet引擎能够允许一个Servlet环境有它自己的活动范围。 例如,一个Servlet环境是属于bank应用的,它将被映射到/bank目录下。在这种情况下,一个对getContext方法的调用...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...