会话保持:

方式:

1、session机制保持会话

缺点:

1.1当前服务器处于高并发的时候,对于服务器是一个压力,占用大量的服务器资源。

1.2如果一个业务系统是分布式部署在多个服务器的情况下,session不能相互间共享。

解决方式:

1.3高并发的时候可以将session存储到redis,如果用户长时间没有访问,将session存储到redis,就减少了服务器的压力。

1.4分布式或者集群的时候,先通过redis来判断用户状态也可以实现session共享.

2、cookie机制保持会话

登录验证后,创建登录凭证(比如:用户id+登录时间+过期时间),将登录凭证进行加密(为了避免暴露信息),加密后写到浏览器的cookie,以后,每次请求都发送cookie,服务器根据对应的解密算法对其进行验证(或者将加密过的cookie内容存储到数据库,请求服务器的时候,服务器在数据库进行查找)。

缺点:

2.1每次访问都提交cookie,增加请求量

2.2其他访问可能需要cookie(比如说购物车的信息存放在cookie),浏览器对每个域存储的cookie的大小有限制,那么需要控制加密后的凭证。

3、token机制保持会话

cookie 和session依赖于浏览器,如果客户端不是浏览器,那么需要手动添加token(和cookie类似,也是登录凭证),将token添加到http header或者做为参数添加到url。

缺点:

3.1每次访问的时候手动添加token

3.2和cookie 的方式一样增加了请求量

 

区别:

不同方式使用不同的应用场景

相同点:

1、所有的方式都是为了验证用户的状态

2、都需要在客户端存储凭证

不同点:

第一种是通过空间换时间,消耗内存存储session对象,但是判断用户状态不用复杂的逻辑。第二种第三种用时间换空间,在服务器端逻辑处理进行判断用户状态。

 

会话保持应用场景:

比如一个淘宝网站,你在登录了设备之后,点击其他页面(比如我的购物车),这个时候发现又需要再次登录才能查看,再点击其他界面(比如我的订单)又需要重新登录。用户体验不佳,这个时候就需要用到会话保持。

 

会话(连接)删除机制:

负载均衡设备都有一个会话/连接的时间限制,目的是设备性能决定,毕竟设备的最大并发连接数是有限的。

    

非会话保持:

不需要登录网站进行的操作,比如浏览新闻网站。常见策略:轮询等。