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

1.session复制

session复制是早期企业应用系统使用比较多的一种服务器集群Session管理机制。应用服务器开启Web容器的的Session复制功能,在集群中的几台服务器之间同步Session对象,是的每台服务器上都保存所有用户的Session信息,这样任何一台机器宕机都不会导致Session数据的丢失,而服务器使用Session时候,也只需要在本机获取即可。如图:

缺点: 只能使用在集群规模比较小的情况下(本人目前也没参与过大集群项目开发),当集群规模比较大的时候,集群服务器之间需要大量的通信进行Session的复制,占用服务器和网络的大量资源,系统负担较大。而且由于用户的session信息在每台服务器上都有备份,在大量用户访问下,可能会出现服务器内存都还不够session使用的情况。

2.session绑定

session绑定可以利用负载均衡的原地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上,也可以根据cookie信息将同一个用户的请求每次都分发到同一台服务器上,不过这时的负载均衡服务器必须工作在HTTP协议层上。这样在整个会话期间,用户的所有请求都在同一台服务器上处理,就是把session绑定在某台特定的服务器,保证了session总能在一台服务器上回去。这种方法又被称为会话黏滞。

缺点: 该session绑定的方案不符合我们队系统高可用的需求。因为该情况下,一旦某台服务器宕机,则该服务器上的所有session信息就会不存在,用户请求切换到其他服务器后因为没有session信息而无法完成相关业务。所以这种方法用的比较少

3.利用cookie记录session

早期的一些企业应用架构就是C/S(客户端/服务器)架构,管理session 的方法就是讲session记录在客户端,每次请求服务器的时候讲session放在请求中发送给服务器,服务器处理过请求后再将修改过的session返回给客户端。网站虽然没有客户端,但是可以利用浏览器支持的cookie记录session。
当然,有人会说如果客户端禁用掉cookie怎么办。我另一篇文章写过这个相关的简单的解决办法。
客户端禁用Cookie后如何使用Session

缺点: 该方法受cookie大小限制,记录的信息有限。每次请求都需要传输cookie,影响性能。
但是,由于cookie简单易用,支持服务器的线性伸缩,而且大部分的session信息都比较小,所以其实很多网站或多或少的都会使用cookie来记录session。

4.session服务器

session服务器就是利用独立部署的session服务器(集群)统一管理session,应用服务器每次读写session时候,都去访问session服务器。

该方案实际上就是将应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器。
对于有状态的session服务器:

一种比较简单的方法就是利用分布式缓存,数据库等,在这些产品的基础上进行包装,使其符合session的存储和访问要求。
另一种就是业务场景对session管理有比较高的要求的时候,可以利用session服务器集成单点登录(SSO),用户服务等功能,
这就需要开发专门的session服务管理平台。

本文是在项目中遇到session相关问题的时候,刚好手头的一本书上有相关解决方法。有其他好的解决方法望留言指点。

应用服务器集群的session管理-多台服务器共享session问题相关推荐

  1. CLAN文件服务器是什么,APUSIC应用服务器集群配置与管理.ppt

    APUSIC应用服务器集群配置与管理 方案2:使用软件Apache Load Balancer 好处:成本低 坏处:有一定的性能损失 使用Apache Load Balancer的缺陷是要采用sess ...

  2. 多台es服务器搭建elasticsearch集群,es单机伪集群搭建,在一台服务器上以三个不同的端口模拟三台主机完成es伪集群搭建,windows和Linux操作方法一致

    目录 (一)es单机伪集群搭建 一.准备三台elasticsearch服务器(复制三个es目录) 二.修改每台服务器的配置 1.修改es配置文件 2.配置注意 (二)多台服务器es集群搭建: 1 安装 ...

  3. Hadoop集群安装-CDH5(5台服务器集群)

    CDH5包下载:http://archive.cloudera.com/cdh5/ 架构设计: 主机规划: IP Host 部署模块 进程 192.168.254.151 Hadoop-NN-01 N ...

  4. 大型网站架构演进(4)使用应用服务器集群

    使用应用服务器集群是解决高并发的常用手段,当一台应用服务器的处理能力不足时,不要企图更换配置更高的服务器,对于大型网站而言,不管多么强大的服务器,都满足不了持续增长的业务需求,在这种情况下,更好的做法 ...

  5. 应用服务器集群的Session管理

    应用服务器的高可用设计主要基于服务无状态这一特性,但事实上,业务总 是有状态: 在电商网站,需要有购物车记录用户的购买信息,用户每次购买请求都是向购物车中增加商品 在社交类网站,需要记录用户的当前登录 ...

  6. EJB应用服务器集群技术分析

    J2EE平台提供了一个基于组件的方法,用来设计.开发.装配及部署企业应用程序.而且提供了一个多层的分布式的应用模型.组件的复用.一致化的安全模型以及灵活的事务控制模型.近年来在企业系统中得到了大量使用 ...

  7. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?

    前面和大家聊了 Spring Security 如何像 QQ 一样,自动踢掉已登录用户(Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户?),但是前面我们是基于单体应用的,如果我 ...

  8. zookeeper集群配置说明以及window单台机器集群搭建

    zk tar.gz 目录: 在src/main 下面的源码是zk 服务端和客户端的源码!!!不过在服务运行起来的时候,服务是调用图中根目录下的zookeeper.jar. 在集群模式下,所有的zk进程 ...

  9. 安装hadoop集群---resourcemanager和NameNode同一台机器上

    1.复制虚拟机,搞了5台. 1:namenode,resourcemanager 2:secondardNameNode 3,4,5:DataNode 2.修改了网卡配置,连接上SecureCRT - ...

最新文章

  1. linuxSVN版本库及同步文件到WEB目录
  2. Wireshark使用学习
  3. 【转】mac os、linux及unix之间的关系
  4. 汇编-debug结果正确与执行结果错误
  5. python中mako中loop_python中Mako库实例用法
  6. hadoop框架详细分析
  7. 500万数据mysql_mysql 单表500万数据经过处理后新增到新表
  8. 腾讯被深圳南山法院强制执行:执行标的25元;B站就招聘争议致歉;华为云回应是否将独立运作|极客头条...
  9. Ubuntu 10.04正式发布
  10. 如何用EasyRecovery找回回收站信息(附注册机下载地址)
  11. Pr 入门教程,如何确保剪辑保持同步?
  12. 人脸服务器如何与门禁系统对接,人脸识别门禁系统功能介绍
  13. 从Netty基础到聊天系统和RPC实战-卷二
  14. DNS无法解析IP_DNS之基本原理
  15. 厦门情侣必去浪漫的餐厅
  16. 机器学习小组知识点4:批量梯度下降法(BGD)
  17. java边缘检测算子代码_图像边缘检测(Canny 算法)的Java实现
  18. SpringBoot源码解析(十一)@Primary
  19. Fastly 全球规模边缘云计算实践
  20. openlayers 计算绘制的矢量多边形的面积 (getArea方法)

热门文章

  1. [内核内存] slab分配器1---slab机制详解
  2. Brave Song
  3. 艺术科技杂志艺术科技杂志社艺术科技编辑部2023年第7期目录查阅
  4. redis执行lua脚本
  5. STM32CUBEMX配置教程(一)基础配置
  6. 【杂记】过滤模式中的Bilinear、Trilinear以及Anistropic Filtering 以及比较
  7. linux启动nfs守护进程,linux下搭建nfs共享并实现开机自动挂载的具体操作
  8. css给超出内容设置滚动条和去除滚动条显示:
  9. 简单认识React的生命周期
  10. 适合陪孩子一起看的电影