会话管理(Session、Cookie)

HTTP基本性质

  • 简单的
  • 可扩展的
  • 无状态的,有会话的

HTTP本身是一种同步协议,即客户端发送请求后会一直等待服务器响应,直到收到响应或发生超时才会继续执行后续操作。
在传统的HTTP请求中,客户端发送请求后会阻塞等待服务器响应,期间无法进行其他操作。这种同步方式适用于请求和响应需要按顺序处理的场景,例如获取页面内容、提交表单等。
然而,随着Web应用的发展和用户体验的要求提高,异步操作变得越来越重要。为了实现异步操作,出现了一些扩展HTTP协议的技术,如AJAX(Asynchronous JavaScript and XML)、WebSockets和Server-Sent Events等。这些技术可以在不刷新整个页面的情况下,通过异步方式与服务器进行通信,实现更加流畅和动态的用户体验。
HTTP本身是同步的协议,但通过一些技术和手段可以实现异步操作,提升用户体验。

Cookie

  • 服务器发送到浏览器,并在浏览器端中保存的一小块数据
  • 浏览器下次访问服务器时,会自动携带,将其发送给服务器
  • 依赖于浏览器,不安全

Session

  • JavaEE标准,在服务端记录客户端信息
  • 数据存放在服务端更安全,但是会增加服务端的压力
  • 依赖于Cookie

image.png
http://localhost:8080/community/alpha/session/set
image.png
http://localhost:8080/community/alpha/session/get
image.png

分布式部署会话管理

在分布式架构中可能会出现Session共享的问题:

浏览器发出请求访问Nginx,Nginx分发请求,在服务器1中创建一个Session对象,返回响应报文携带SessionId给浏览器,当下次请求携带SessionId时,Nginx分发给服务器2,但是服务器2没有对应的Session数据。

解决方案:

1、粘性Session
  • 设置负载均衡策略:根据客户端固定的ip分给同一个服务器处理
  • 缺点:很难保证服务器是负载均衡的,性能不好
2、同步Session
  • 当某一个服务器创建Session并保存数据后,都会同步给其他服务器,所有服务器就都包含Session信息
  • 缺点
    • 一台服务器需要同步给多台,对服务器性能产生影响
    • 服务器之间会产生耦合,对部署有影响
3、共享Session
  • 单独一台服务器存Session,所有服务器向这台服务器获取Session
  • 缺点:单体的会挂,集群处理Session又是冗余的
4、使用Cookie,敏感数据存到数据库(集群,主从备份)中
  • 缺点:数据存到硬盘里性能慢
  • 优化:会话数据存到Nosql中(Redis)

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyy_jin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值