`
bugyun
  • 浏览: 557344 次
社区版块
存档分类
最新评论

session共享的几种方式

 
阅读更多

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信息,此方法可能有一定延时,用户体验也不是很好,当服务器很多时(几十台),容易引起网络风暴。

 

分享到:
评论

相关推荐

    tomcat8集群实现session共享,内含session共享包

    在这个场景中,我们关注的是如何在Tomcat集群环境中实现Session共享,以便提高应用程序的可扩展性和可用性。标题和描述提到的“session共享包”是解决这一问题的关键。 **什么是Session?** 在Web应用中,Session是...

    C#不同域名之间的Session共享

    为了解决这个问题,我们可以采用以下几种策略: 1. **Cookieless Session**:ASP.NET允许我们设置应用程序使用Cookieless Session,即通过URL编码的方式传递Session ID。这样,即使在不同域名之间,只要URL被正确...

    tomcat7集群实现session共享

    Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:这是Tomcat默认的session复制方式。每个服务器都将session对象复制到其他服务器,通过Java远程方法调用(RMI)实现。这种方式简单易用...

    tomcat集群session共享

    2. **选择session复制策略**:Tomcat提供了几种session复制策略,包括基于内存的复制和基于JDBC的复制。在这个场景下,我们将采用基于第三方存储的策略,即使用`org.apache.catalina.session.PersistentManagerBase`...

    session共享插件

    在Java中实现session共享通常涉及到以下几个关键步骤: 1. **添加依赖**:首先,需要在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加对memcached客户端库(如spymemcached或xmemcached)的依赖...

    Tomcat实现session共享demo

    此外,使用Redis进行Session共享时,还需要注意以下几点: - **安全性**:由于Session通常包含敏感信息,如用户ID,因此在使用Redis时应考虑数据加密。 - **性能**:频繁的Session读写操作可能影响Redis性能,适当...

    SpringBoot集成Spring Security登录管理 添加 session 共享【完整源码+数据库】

    通常,我们可以使用以下几种方法实现session共享: 1. **Redis Session Store**: Spring Boot可以与Redis集成,将session存储在Redis中。这样,所有服务都可以访问同一个session存储,实现session共享。需要配置`...

    Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    这通常涉及到服务器集群的部署,其中Session共享是一个核心问题。本篇文章将探讨如何利用Redis、Tomcat和Nginx来实现Session共享,以便在分布式环境中保持用户状态的一致性。 首先,让我们了解一下Session的概念。...

    集群环境下memcache解决session共享

    然而,集群环境下的session共享问题是个棘手的问题,因为它涉及到用户状态的维护和一致性。本篇将深入探讨如何在Tomcat8的集群环境中使用memcache来解决session共享的问题。 首先,让我们理解什么是session。...

    memcached配置session共享依赖jar包集合

    Memcached是一种高性能、分布式的内存对象缓存系统,常被用来解决session共享的问题。本篇将详细阐述如何利用Memcached配置session共享,并涉及所需依赖的jar包。 首先,Memcached作为一个缓存服务,能够存储会话...

    Nginx+tomcat 实现负载均衡session共享demo

    有几种常见的解决方案: 1. **Cookie-Based**:将`session ID`存储在cookie中,每次请求时由客户端携带。这种方式简单但安全性较低,因为`session ID`可能被窃取。 2. ** Sticky Session**:`Nginx`配置中启用`...

    asp.net 跨子域共享SESSION

    在ASP.NET中实现跨子域共享SESSION,主要有以下几种方法: 1. **Cookie-Based Sharing**: 这是最常见的方法,通过设置Cookie的`Domain`属性来实现。将Session ID存储在Cookie中,并设置Cookie的域为父域,如`....

    Tomcat之间Session共享

    Tomcat 之间的 Session 共享 Tomcat 之间的 Session 共享是指在分布式 Tomcat 环境中,多个 Tomcat 实例...Tomcat 之间的 Session 共享是分布式 Tomcat 环境中的一种重要机制,可以提高系统的可用性、性能和可扩展性。

    java_session共享配置.jar

    在Java_session共享配置中,Jedis负责在Tomcat服务器之间同步session数据,将用户的session信息存储在Redis中,而不是传统的基于Cookie或服务器内存的方式。 最后,`kuanrf-tomcat-redis-session-manage-1.0.jar`是...

    tomcat8 session 共享

    以下是几种常见的Session共享方法: 1. **粘性会话(Sticky Sessions)**:这是最简单的实现方式,负载均衡器会记住用户第一次访问哪个服务器,然后将所有后续请求路由到同一台服务器。这种方法简单但不健壮,如果...

    多台服务器之间共享session

    为了解决这个问题,我们可以采取以下几种策略: 1. **Session复制**:这是一种简单的解决方案,即每当一个服务器上的Session数据发生变化时,都会广播这个变化到所有其他服务器。这种做法要求服务器之间有高效的...

    处理session跨域几种方案

    处理Session跨域问题通常涉及到多个网站或应用之间共享用户身份验证信息。Session是Web应用程序用来存储用户特定数据的一种机制,通常存储在服务器端,而Session ID通过Cookie在客户端与服务器之间传递。当用户在...

    session同服务器不同域名共享

    实现跨域名的Session共享主要依赖于以下几个关键技术和方法: 1. **Cookie的Domain属性**:默认情况下,Cookie只能由设置它的域名读取。但通过设置Cookie的`Domain`属性,可以让其他子域或指定域读取到这个Cookie。...

    tomcat session共享负载

    Tomcat提供了以下几种Session共享策略: 1. **粘滞会话(Sticky Sessions)**:这是最简单的解决方案,通过负载均衡器将用户的请求定向到最初创建Session的服务器。虽然实现简单,但可能会导致服务器负载不均,且当...

    nginx+tomcat的负载均衡session共享和ant构建全流程

    可以采用以下几种方式实现Nginx+Tomcat的Session共享: 1. Sticky Session:通过Nginx配置,确保用户的所有请求都路由到最初处理其请求的Tomcat实例。 2. 共享存储:使用Redis、Memcached等缓存服务作为共享存储,将...

Global site tag (gtag.js) - Google Analytics