在日常的web开发过程中,Session共享有多种解决方式,常用的有以下几种:
1、基于cookie的共享
将session信息以加密的方式保存在客户端浏览器的cookie中,session信息会随每次请求再次提交到服务器上。
优点:
可以减轻服务器端的压力。
缺点
cookie大小是有限制的,只能存储小部分用户信息;同时传输时,也会占用一部分带宽资源。另外这种方式在客户端禁用cookie的情况下会失效。
2、基于关系型数据库的共享
这种方式,是将session信息保存到关系型数据库中,例如mysql,其他应用从数据库中查出session信息。该方法有一定的实用性,但是缺点同样明显:
1)、session的并发、读写均从数据库中完成,对数据库性能要求较高。
2)、需要额外添加session失效逻辑,包括在数据库中更新和删除session信息。
这种方式对于可靠性要求较高的系统,可以采用,即使服务挂掉,也会保存当时的会话信息。
3、基于缓存服务器的session共享
将session统一存储到缓存服务器上,例如:Redis、Memcahe等。这样可以保证比较高的读、写性能,同时这些缓存服务器都有数据失效机制,从而避免第二种共享方式中的第二条缺点。
该共享方式,在缓存服务器重启的时候,里面保存的session也就丢失了,需要用户重新建立回话。不过,该问题可以通过搭建缓存集群来避免。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KjU5GqX1-1598512374407)(images/image-20200827150433522.png)]
综上所述,建议采用第三种方式。