应用服务器集群的session管理

简介:

1、什么是session

  a、web应用中将这些多次请求修改使用的上下文对象称作会话(session)

  b、Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

  c、当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话


2、session的应用场景

  在高可用的架构中,业务总是有状态的,比如电商交易类平台中,需要有购物车记录用户的购买信息;在社交类的网站中,需要记录用户的当前登陆状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息


3、session管理的几种手段

a)session复制

  应用服务器开启web容器的session复制功能,在集群中几台服务器之间同步session对象,使得每台服务器上都保存所有用户的session信息

  较大规模的情况下(session复制就会显得不足了)

wKiom1kuG5CzUnpGAABJUcA4Gc8169.jpg

b)session绑定

  ession绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一个IP的请求分发到同一台服务器上,显然session绑定不符合我们对系统高可用的要求,因为一旦服务器宕机,那么该机器上的session就不复存在了

  优点:实现简单、配置方便、没有额外网络开销

  缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

wKiom1kuG9ux6bWAAABMWrCJqbs722.jpg

c)利用cookie记录session

  说明:网站没有客户端,可以利用浏览器支持的cookie记录session(事实上,许多网站或多或少地使用cookie记录session)

  不足:

  •   受cookie大小限制,能记录的信息有限

  •   每次响应请求都要传输Cookie,影响性能

  •   如果用户关闭cookie,访问就会不正常

wKiom1kuHDXzTHLmAABLwqUlt7s388.jpg


d)session服务器

  •  利用独立部署的服务器(集群)统一管理session

  •  应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器

  •  对于有状态的session服务器:分布式缓存+数据库等

  •  业务场景要求高的情况下,利用session服务集成单点登录(SSO)、用户服务等功能,或者开发专门的session服务管理平台

wKioL1kuHIeADS4WAABUyzXM01M697.jpg










本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1930803,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Kubernetes 安全 Docker
在 K8s 集群中创建 DERP 服务器
在 K8s 集群中创建 DERP 服务器
|
SQL 关系型数据库 MySQL
MySQL集群-主从服务器搭建(一主多从)
MySQL集群-主从服务器搭建(一主多从)
440 0
MySQL集群-主从服务器搭建(一主多从)
|
3月前
|
Rust Ubuntu Linux
【一起学Rust | 进阶篇 | RMQTT库】RMQTT消息服务器——安装与集群配置
【一起学Rust | 进阶篇 | RMQTT库】RMQTT消息服务器——安装与集群配置
117 0
|
1月前
|
消息中间件 存储 Kafka
Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
【2月更文挑战第19天】Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
140 1
|
8月前
|
存储 NoSQL 网络协议
一台服务器上部署 Redis 伪集群
一台服务器上部署 Redis 伪集群
|
3月前
|
存储 关系型数据库 分布式数据库
在PolarDB中,集群地址对应一个代理服务器,主地址也是对应一个代理服务器吗?
在PolarDB中,集群地址对应一个代理服务器,主地址也是对应一个代理服务器吗?
25 0
|
4月前
|
存储 Java 网络安全
ZooKeeper【部署 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
ZooKeeper【部署 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
48 0
|
9月前
|
调度
Zookeeper 集群中三种类型的服务器角色介绍
Zookeeper 集群中三种类型的服务器角色介绍
104 0
|
9月前
|
负载均衡 大数据 应用服务中间件
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
|
6月前
|
监控 应用服务中间件 nginx
服务器端集群搭建、下载站点、用户认证模块
Nginx实现服务器端集群搭建 Nginx与Tomcat部署 Nginx在高并发场景和处理静态资源是非常高性能的,但是在实际项目中除了静态资源还有就是后台业务代码模块,一般后台业务都会被部署在Tomcat,weblogic或者是websphere等web服务器上。那么如何使用Nginx接收用户的请求并把请求转发到后台web服务器? 步骤分析: 1.准备Tomcat环境,并在Tomcat上部署一个web项目 2.准备Nginx环境,使用Nginx接收请求,并把请求分发到Tomat上 1 2 环境准备(Tomcat) 浏览器访问: http://192.168.200.146:8080/
74 0

热门文章

最新文章