`
daweiangel
  • 浏览: 326485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

(转)web集群时session同步的3种方法

 
阅读更多
在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是登录状态。所以本文就根据这种情况给出三种不同的方法来解决这个问题:

一,利用数据库同步session

在做多服务器session同步时我没有用这种方法,如果非要用这种方法的话,我想过二种方法:

1,用一个低端电脑建个数据库专门存放web服务器的session,或者,把这个专门的数据库建在文件服务器上,用户访问web服务器时,会去这个专门的数据库check一下session的情况,以达到session同步的目的。

2,这种方法是把存放session的表和其他数据库表放在一起,如果mysql也做了集群了话,每个mysql节点都要有这张表,并且这张session表的数据表要实时同步。

说明:用数据库来同步session,会加大数据库的负担,数据库本来就是容易产生瓶颈的地方,如果把session还放到数据库里面,无疑是雪上加霜。上面的二种方法,第一点方法较好,把放session的表独立开来,减轻了真正数据库的负担

二,利用cookie同步session

session是文件的形势存放在服务器端的,cookie是文件的形势存在客户端的,怎么实现同步呢?方法很简单,就是把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。你访问web服务器A,产生了session把它放到cookie里面了,你访问被分配到web服务器B,这个时候,web服务器B先判断服务器有没有这个session,如果没有,在去看看客户端的cookie里面有没有这个session,如果也没有,说明session真的不存,如果cookie里面有,就把cookie里面的sessoin同步到web服务器B,这样就可以实现session的同步了。

说明:这种方法实现起来简单,方便,也不会加大数据库的负担,但是如果客户端把cookie禁掉了的话,那么session就无从同步了,这样会给网站带来损失;cookie的安全性不高,虽然它已经加了密,但是还是可以伪造的。

三,利用memcache同步session

memcache可以做分布式,如果没有这功能,他也不能用来做session同步。他可以把web服务器中的内存组合起来,成为一个"内存池",不管是哪个服务器产生的sessoin都可以放到这个"内存池"中,其他的都可以使用。

优点:以这种方式来同步session,不会加大数据库的负担,并且安全性比用cookie大大的提高,把session放到内存里面,比从文件中读取要快很多。

缺点:memcache把内存分成很多种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能完全利用内存,会产生内存碎片,如果存储块不足,还会产生内存溢出。

四,总结

上面三种方法都是可行的

第一种方法,最影响系统速度的那种,不推荐使用;

第二种方法,效果不错,不过安全隐患一样的存在;

第三种方法,个人觉得第三种方法是最好的,推荐大家使用
分享到:
评论

相关推荐

    web服务器集群(多台web服务器)session同步、共享的3种解决方法

    所以本文就根据这种情况给出三种不同的方法来解决这个问题: 一、利用数据库同步session 在做多服务器session同步时我没有用这种方法,如果非要用这种方法的话,我想过二种方法: 1,用一个低端电脑建个数据库专门...

    Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache

    需要注意的是,虽然memcache提供了一种简单的方法来处理session同步,但在大型系统中,你可能还需要考虑其他解决方案,比如使用更强大的分布式存储系统(如Redis)或采用基于token的身份验证机制,以应对更大的负载...

    web项目集群时共享session方案实践

    本实践将探讨几种在Web项目集群中实现Session共享的策略。 1. **基于数据库的Session共享** - Session信息可以持久化到数据库中,每当用户操作导致Session变化时,更新数据库记录。 - 优点:数据可靠,不会因...

    tomcat集群实现session复制

    为了解决这个问题,Session复制技术应运而生,它使得Session数据能够在集群内的所有服务器之间同步,从而保证了无论哪个服务器处理用户请求,都能获取到完整的Session信息。 ### Session复制的实现方式 #### 1. **...

    web项目集群时共享session方案实践。 war包

    3. **集群中的Session问题**:当Web项目集群时,每个服务器都有自己的Session存储,如果用户请求被分发到不同的服务器,那么原服务器的Session信息就无法在新服务器上找到,导致用户状态丢失。 4. **Session共享...

    集群中几种session同步解决方案的比较共1页.pdf

    在分布式系统和Web服务中,Session同步是确保用户在不同服务器之间切换时保持登录状态和购物车信息等关键数据一致性的关键问题。集群环境下的session管理对于提高系统的可扩展性和可用性至关重要。以下是对集群中几...

    tomcat-session同步所需jar.rar_session集群共享_tomcat session

    "tomcat-session同步所需jar.rar_session集群共享_tomcat session"这个标题表明我们关注的是如何在Tomcat集群环境中实现session的共享。这涉及到多个知识点,包括session的基本概念、session复制、粘滞会话、以及...

    使用terracotta进行web session 同步

    总结,使用Terracotta进行Web Session同步是一种强大且灵活的解决方案,能够帮助开发者构建可扩展、高可用的分布式Web应用。通过深入理解Terracotta的工作原理和配置,你可以更好地驾驭这一工具,为用户提供无中断的...

    redis 集群共享Session

    使用Redis集群共享Session是分布式系统中解决Session管理的有效方法,它提供了一种高效、可靠的方案。不过,实施时需要注意数据序列化、安全性以及与其他系统的集成,确保整体架构的稳定性和安全性。通过理解这些...

    redis+tomcat集群配置session共享

    Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器环境下,Session信息存储在服务器的内存中。然而,在集群环境中,由于服务器之间的数据隔离,简单的内存...

    Tomcat7集群共享Session 基于redis进行统一管理

    在IT行业中,尤其是在Web...总的来说,利用Redis进行Tomcat集群Session共享是一种高效且灵活的方法,能够提高系统的可用性和用户体验。通过深入理解这一技术,开发者可以更好地构建和维护大规模分布式Web应用程序。

    PHP实现分布式memcache设置web集群session同步的方法

    主要介绍了PHP实现分布式memcache设置web集群session同步的方法,结合实例形式分析了php设置与使用memcache实现web集群session同步的相关操作技巧与注意事项,需要的朋友可以参考下

    tomcat集群session共享

    5. **集群同步策略**:Tomcat可以通过`distributable`属性在`web.xml`中声明应用可分布式部署,这会启用session ID的跨节点同步。同时,`Manager`配置中的`copyOnWrite`属性控制了session更新时是否需要完全复制整个...

    针对分布式或集群session同步问题,改用jwt的续期解决方案.docx

    ### 针对分布式或集群Session同步问题:JWT续期解决方案 #### 一、背景介绍 随着前后端分离架构的普及和技术的发展,越来越多的应用选择使用轻量级的身份验证方法来确保数据安全。其中,JSON Web Token (JWT) 成为...

    Tomcat8 session同步测试,配置好的Tomcat

    Tomcat8的session同步是通过集群功能实现的,它允许多台Tomcat实例协同工作,共同处理来自同一用户的请求。要实现这一功能,我们首先需要配置Tomcat的集群设置。在`conf/server.xml`文件中,我们需要添加`<Cluster>`...

    tomcat7集群实现session共享

    当我们谈论“Tomcat7集群实现session共享”时,我们关注的是如何在多个Tomcat实例之间有效地同步用户会话信息,以便在集群环境中提供高可用性和负载均衡。 首先,理解session共享的重要性。在Web应用中,session是...

    tomcat7集群session共享memcache依赖包1.8.3

    总的来说,"tomcat7集群session共享memcache依赖包1.8.3"提供了一种有效的方法,解决了在Tomcat7集群中Session共享的问题,通过Memcached作为中间件,实现了跨节点的Session一致性,提高了系统的可用性和用户体验。...

    采用memcache在web集群中实现session的同步会话

    本文主要介绍使用Memcache实现Web集群中session同步的方法。 首先,Memcache是一个高性能的分布式内存对象缓存系统,常用于减少数据库负载,提高访问速度,它非常适合用来存储session数据。在Web集群中使用Memcache...

Global site tag (gtag.js) - Google Analytics