写点什么

Session 会话

作者:littleFuBaby
  • 2023-05-16
    北京
  • 本文字数:799 字

    阅读完需:约 3 分钟

一、session 管理


1、session 复制


实现每一个服务器都拥有相同的 session 会话信息,保证处理的一致性

缺点:一旦应用服务器数量较大,上百台以上,一个应用服务器就需要针对一个 session 会话,将其复制到其他的机器上,这样性能耗损非常大

实际环境中,不用这种 session 复制方案


2、session 绑定


会话绑定,会话粘滞,也即是源地址散列的方式

实际环境中,几乎不使用这种方式,尤其高可用和高性能的应用要求,一旦一个用户请求的 IP 一直使用同一台应用服务器进行处理,机器出现崩溃,session 丢失了,然后,负载均衡服务器将用户的请求分发给其他的服务器,导致之前做的处理消失了,用户之前的处理信息消失,又得重新开始,会导致用户体验很差

升级程序,就需要杀掉之前的程序,导致会话信息丢失,有没有好的处理方式呢?可以让程序升级之前,停掉所有的请求奔向该台服务器,然后,升级完成之后,再重新接收请求


3、利用 Cookie 记录 session


HTTP 协议包含 Cookie,Cookie 会在请求和响应中传递,请求中包含 Cookie 发送给服务器,服务器修改 Cookie,再返回给客户端,客户端下次请求会把 Cookie 重新提交,Cookie 正好记录了 session 多次请求处理的数据信息

缺点:Cookie 大小有限,不可能记录太多的上下文内容,只能记录简单必要的上下文,由于浏览器会由禁止 Cookie 的情况,不能传递 Cookie,导致 Session 管理失效,但是,这种方式依然有着高效的功能

实际上,该方式用的最多


4、Session 服务器


由于 Cookie 依然会有问题,最常用的就是 Session 服务器,专门通过一个 session 服务器管理所有 session 的会话信息,应用服务器不再记录任何的 Session 信息,请求分发给不同的服务器,然后通过应用服务器的一次请求进行会话上下文管理,去 session 服务器获得 session 信息,对 session 进行管理,增删改查各种操作

该方式,又叫无状态的应用服务器

share-nothing 架构,这种架构可以无限伸缩,互联网应用尽量采用这种架构,实际上,就是状态记录进行转移,有其他的部分进行管理


用户头像

littleFuBaby

关注

强准备+强信念+强执行 2019-11-21 加入

以前是T型人才,当下是π型人才,未来是梳子型人才

评论

发布
暂无评论
Session 会话_littleFuBaby_InfoQ写作社区