事实上,网站总是有状态的。每一个登录信息、用户信息常常被存储在session内部。而当一个网站被部署在不止一台服务器的时候,就会遇到session同步的问题。事实上即使一个很小的网站,也要至少有两台服务器互为备份,分单流量是必须得,更重要的是无缝切流量升级。为了保证服务的不间断又要进行网站的维护升级,切流量是最简单的。那么如何保证切流量的时候session也会跟着同步过去呢?在集群环境下,大致有以下几种手段:

一、Session复制

这是一种在早期应用系统中使用较多的服务器session管理方式。应用服务器开启Web容器的session的复制功能,在集群中的几台服务器之间同步session对象,这样一台服务器宕机不会导致session数据丢失。即每一台服务器都持有集群中所有的session,每次访问仅从本机获取就可以了。其工作形式如下所示:

从session复制的几条线就可以看出,这种方式仅适用用小型集群。当服务集群规模很大时,集群服务器间的复制就需要大量的通讯,占用大量网络资源,甚至会出现内存不够的情况。

二、Session绑定

Session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来自同一个IP地址的访问分发到同一台服务器上。这样整个会话期间,用户所有的请求都来自一台服务器,保证了Session总是从这台服务器获取。其工作形式如下图所示:

但是这样的系统显然不符合我们对系统的需求。如果一台服务器宕机,那么其处理的所有请求Session会话全部丢失,用户因为切换服务器后没有Session而导致无法完成业务。

三、利用Cookie记录Session

   这种管理方式将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完成后再将修改后的Session响应给客户端。

利用Cookie记录当然也有缺点,比如Cookie大小限制,能记录的信息也有限,因为很多时候我们在Session中储存的也并非String类型的记录。每次请求都需要传输Cookie,影响性能;另外如果用户关闭Cookie功能就不能用了。但是这种方式因此高可用性、支持服务器的线性伸缩,许多网站都在使用这种方式。我的学校网站也应用了这种技术。

四、Session服务器

如果有这样一个服务器,可用性高、伸缩性好、性能也不错,对信息大小又没有限制,那它就是Session服务器。利用独立部署的Session服务器统一管理Session,应用服务器每次读写Session时,都访问Session服务器。其工作形式如下所示:

这种方式实际上是将应用服务器的状态分离,分为无状态的应用服务器和有状态的Session服务器,然后针对这两种服务器的不同特性分别设计其架构。

对于有状态的Session服务器,一种比较简单的方式是利用分布式缓存、数据库等。

文章转载自:https://www.cnblogs.com/moonandstar08/p/5582281.html

集群服务器session同步相关推荐

  1. web集群时session同步的3种方法

    web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话 ...

  2. Shiro结合Redis解决集群中session同步问题

    Shiro结合Redis解决集群中session同步问题 参考文章: (1)Shiro结合Redis解决集群中session同步问题 (2)https://www.cnblogs.com/Luke-M ...

  3. 集群服务器session共享

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制. 目前,在集群系统下实现session统一的有如下几种 ...

  4. Weblogic12C 集群实现session同步

    测试地址:http://vanatita.com/ 刷新可以看见效果 读取 Session ID=gnFx9OTVFkfNOWCXFqQqeZi07m9BdHhvnqCv0Cq1t3n1EA2ljUG ...

  5. 应用服务器集群的session管理-多台服务器共享session问题

    应用服务器集群的session管理:这是我在一本网站技术架构分析的书上看到的.这一章主要写在高可用架构设计之下服务无状态这一特性下怎么管理会话(session).以下是几例解决方案(示例图为转载图片) ...

  6. 如何实现 集群化/Session 复制-doc(cluster-howto.html)

    源文档链接: http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 翻译日期: 2014年3月19日 翻译人员: 铁锚 感受: Tomc ...

  7. Nginx+tomcat集群的session共享问题

    请求负载过程中会话信息不能丢失.那么需要在多个tomcat中session需要共享.所以需要进行相关问题的解决 配置Tomcat的session共享可以有三种解决方案: 第一种:是以负载均衡服务器本身 ...

  8. 分布式集群的Session问题

    1.Session的实现 在Session开始时候,分配一个唯一的Session标识sessionId,通过Cookie把 sessionId 告诉浏览器,以后每次请求的时候,浏览器都会带上 sess ...

  9. Nginx+Tomcat+Memcached实现tomcat集群和session共享

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 [http://blog.csdn.net/shimiso/article/details/8979044] 为什 ...

最新文章

  1. 加密ASP为DLL的详细步骤给点RMB不多是个心意尊重脑力劳动者的付出
  2. 纯CSS实现3D照片墙
  3. mac上latex生成不了pdf_Mac 10.8 下安装Sphinx并支持生成中文PDF
  4. txt文档下载另存为解决
  5. WPF 加载Gif动态图片的方法
  6. docker配置阿里云镜像加速器
  7. Insyde BIOS@G50-80 初探
  8. 砍掉3721 reg
  9. 超级科技网络安全风险评估服务,全面了解网络系统面临的安全风险
  10. gaussian窗口函数_几种常见窗函数及其matlab应用
  11. 华硕ASUS手机平板官方刷机包raw格式解压修改工具
  12. java调用word模板文件_Java使用模板导出word文档
  13. 二分图的匹配——匈牙利算法
  14. 下载好看的壁纸,这五个网站就够了
  15. c语言如何解超越方程
  16. 前端初中级面试题及部分答案
  17. python中的copy.deepcopy()
  18. 关于中文的数字转化为阿拉伯的数字的解决方法
  19. django一个html先后两个form,Django教程(三)- Django表单Form
  20. Windows桌面图标和分类美化小工具

热门文章

  1. 音频转码 via FFmpeg
  2. Toast偶尔不显示
  3. HTML中body元素的属性
  4. document.body详解
  5. STM32CubeMX
  6. 不要在朋友圈晒火车票了,Python 会算出你的身份证号!
  7. 一篇写给准备升级PHP7的小伙伴的文章
  8. Normalized Softmax Loss
  9. python没有模块_关于python如果没有numpy模块如何处理
  10. HTML——选择器总结(直观 一目了然)