session共享问题

一。session会话机制

由于http 协议的特性是无状态性 ,http 协议本身是无状态的,客户端只需要向服务器请求下载某些文件,无论是客户端还是服务器都没必要记录彼此过去的行为,每一次请求之间对于服务端来说是独立的,如果能够提供一些按照需要生成的动态信息会使 web 变得更加有用。假如一个需要登录授权才能执行的动作,因为 http 协议没办法保存这个登录的用户的状态,因此当下一次再执行一个需要授权操作时,还需要再次登录,这将导致用户体验非常差。所以需要一种机制能够识别每次请求的用户,来实现会话保存的目的。针对这种情况提供的解决方法是session和cookie。
1.Session
服务端提供了一种叫 Session 的机制,对于每个用户的请求,会生成一个唯一的标识。当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先检查这个客户端的请求是否包含了一个 session 标识session id;如果已包含一个 session id 则说明以前已经为客户端创建过 session,服务器就按照 session id 把这个 session 检索出来使用(如果检索不到,会新建一个);如果客户端请求不包含 sessionid,服务端会为此客户端创建一个session 并且生成一个与此 session 相关联的 session id,session id 的值是一个既不会重复,又不容易被找到规律的仿造字符串。
2.Cookie
客户端是如何存储 sessionid 的呢?利用cookie保存。浏览器提供了一种叫 cookie 的机制,保存当前会话的唯一标识。每次 HTTP 请求,客户端都会发送相应的 Cookie 信息到服务端。客户端第一次请求,由于 cookie 中并没有携带 sessionid,服务端会创建一个 sessionid,写入到客户端的 cookie 中。以后每次请求,都会携带这个 id 给到服务器端。这样一来,便解决了无状态的问题。如果客户端浏览器禁用了 cookie,一般会通过 URL 重写的方式来进行会话,也就是在 url 中携带 sessionid。

二。session共享问题是如何产生的

如果网站请求流量较大,那么单台 服务器(tomcat) 设备是无法承接这些流量的,这个时候就需要开始对服务器做集群,采用了多台机器做集群以后,就要通过一种机制来实现请求的路由。因为对于用户来说,访问的是一个域名,至于后端请求到哪一台服务器,用户并不需要关心,这里一般会使用负载均衡设备。当有多台web服务器时就需要用到session共享,
例如࿱

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值