共享session的几种方式

1、为什么需要共享session

假设某个网站是由多台服务器提供服务,nginx采用轮询机制做负载均衡,那么同一个IP访问该网站时,请求就可能会被分配到不同的服务器上,如果session没有实现共享,就会出现重复登陆授权的情况。

2、共享session的几种方式

1)、基于NFS的session共享

NFS(Net FileSystem),顾名思义,也就是网络文件系统,即将session存储目录挂载到所有的服务器上,实现session的读写。该方案实现简单、快速,无需在应用程序上做太多操作。但是缺点也很明显,一是只适合小规模的网站,二是文件读写速度严重依赖网络速度,几台服务器在同一局域网内还能接受,如果跨机房就很容易受到影响而且安全问题也是需要考虑的,三是需要实时监控每一台服务器目录挂载情况。

2)、基于Cookie的session共享

简单的说就是登陆时,将创建的session信息经过加密处理后一并保存在客户端的Cookie里,其他服务器响应请求时,先判断本地服务器是否有已保存的session,如果没有就再将客户端的Cookie里保存的session信息同步到本地服务器。这种方式的缺点就是受客户端的影响较大,而且安全性无法得到保障。

3)、基于数据库的session共享

该方案就是将session数据直接存储在数据库中。该方案操作性较强、安全性高,缺点就是session的并发读写能力取决于数据库的性能,而且需要应用程序支持或者编写一个额外的维护脚本,实现session的更新和过期删除。

4)、基于Memcache/Redis的session共享

该方案时可以看作时方案三的升级版,该方案不仅性能好而且安全性也得到了保障,更重要的时Memcache/Redis原生支持数据的expire过期淘汰。

你可能感兴趣的:(session)