分布式系统session共享问题

来源:互联网 发布:cad of mac中文破解版 编辑:程序博客网 时间:2024/05/19 03:44

现在我们的服务器很多都是同一个服务部署多个,或者部署在不同服务器上面,架设成集群,实现负载均衡。那么问题来了。当同一个用户登入后,再次访问可能分发到不同的服务,这样我们就取不到之前登入session,出现未登入现象。所以我们必须解决共享session问题。

         

         方式一:

      存储在数据库中, 用户登入时,把session信息储存在数据库中,然后再需要获取session的地方进行读取。

              优点:开发简单  

              缺点 :依赖性太强,业务量大的时候数据库压力大,数据库出现问题影响整个系统。

     方式二 :

cookie共享session ;当用户登入时,把 cookie储存在客户端,当用户需要session判断是否登入时,首先判断本服务器是否有session,如果没有同步cookie信息。(购物车在数据库和cookie都存,就是为了把用户未登入时产生的购物车同步到登入用户上)

                优点:用起来方便,开发效率高

       缺点 : cookie安全性不高,容易伪造,当客户端禁用时则该方法失效

          方式三  ;

                  服务器共享session ,使用一台作为用户的登录服务器,当用户登录成功之后,会将session写到当前服务器上,我们通过脚本或者守护进程将session同步到其他服务器上,这时当用户跳转到其他服务器,session一致,也就不用再次登录。

优点:安全 ,一次配置永久使用

     缺点 ; 同步效率低,慢 ,有时出现没同步现象

           方式四  :通过缓存同步session,用户登入时,把登入信息放在redis或者memcache中,我们取session信息的时候都从缓存中取。(重写session创建 获取 销毁 方法 创建存缓存中  获取从缓存中获取  销毁缓存中记录和服务器记录)

优点: 比前几种方式效率高 读取速度快  安全

        缺点 :重写底层方法复杂 ,开发慢  

 




阅读全文
0 0
原创粉丝点击