关闭

Session和Cookie

126人阅读 评论(0) 收藏 举报

Session 和Cookie的作用:

都是为了保持访问用户和后端服务器的交互状态。


Cookie的优缺点:

Cookie中存储数据时,需要占用网络带宽,但是能实现多台服务器之前的数据共享。当PV(页面浏览量)很多时,需要占用的网络带宽是非常庞大的。


Session的优缺点:

当遇到这种大数据流量的时候用Session很合适,但是Session有一个很大的缺点就是不能实现服务器之间的数据共享。


当数据量很庞大是就必须要用到Session,也就必须要解决多台服务器共享Session的问题:

解决办法:

1、通过一台专门的mysql数据库来共享Session

a.用户访问时,可以用专门的数据库来检查Session,打到Session同步。

 缺点:当这太mysql数据库出问题时,会影响到整个系统。

b.每一个数据库都需要有一张表来存储Session,将这张表和业务表实现主从表的关系,并且需要实现这张Session表实现数据实时同步。

缺点:用数据库来同步session,会加大数据库的负担,数据库本来就是容易产生瓶颈的地方,如果把session还放到数据库里面,无疑是雪上加霜。上面的二种方法,第一点方法较好,把放session的表独立开来,减轻了真正数据库的负担 。但是session一般的查询频率较高,放在数据库中查询性能也不是很好,不推荐使用这种方式。

2、通过Cookie共享Session

      用户访问时,将页面产生session数据放在Cookie中,以Cookie作为中转站。

当访问服务器A时,登录成功之后将产生的session信息存放在cookie中;当访问请求分配到服务器B时,服务器B先判断服务器有没有这个session,如果没有,在去看看客户端的cookie里面有没有这个session,如果cookie里面有,就把cookie里面的sessoin同步到web服务器B,这样就可以实现session的同步了。

            缺点:cookie的安全性不高,容易伪造、客户端禁止使用cookie等都可能造成无法共享session。

     

3.通过服务器之间的数据同步session

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

  缺陷:速度慢,同步session有延迟性,可能导致跳转服务器之后,session未同步。而且单向同步时,登录服务器宕机,整个系统都不能正常运行。

4.通过NFS共享Session

  选择一台公共的NFS服务器(Network File Server)做共享服务器,所有的Web服务器登陆的时候把session数据写到这台服务器上,那么所有的session数据其实都是保存在这台NFS服务器上的,不论用户访问那太Web服务器,都要来这台服务器获取session数据,那么就能够实现共享session数据了。

  缺点:依赖性太强,如果NFS服务器down掉了,那么大家都无法工作了,当然,可以考虑多台NFS服务器同步的形式。

5.通过memcache同步session

  memcache可以做分布式,如果没有这功能,他也不能用来做session同步。他可以把web服务器中的内存组合起来,成为一个"内存池",不管是哪个服务器产生的sessoin都可以放到这个"内存池"中,其他的都可以使用。 

  优点:以这种方式来同步session,不会加大数据库的负担,并且安全性比用cookie大大的提高,把session放到内存里面,比从文件中读取要快很多。 

  缺点:memcache把内存分成很多种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能完全利用内存,会产生内存碎片,如果存储块不足,还会产生内存溢出。 

6.通过redis共享session

  redis与memcache一样,都是将数据放在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

   根据实际开发应用,一般选择使用memcache或redis方式来共享session.





1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

浅谈Session与Cookie的区别与联系

一、Session的概念Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Se...
  • duan1078774504
  • duan1078774504
  • 2016-07-14 21:02
  • 23704

cookie和session的基本用法小结

这两天初步看了下cookie和session的用法,就个人理解,总结如下: 总结这些之前,先说下一次会话的概念,一次会话可以简单的认为是一个进程,也就是打开一个浏览器,只要不点那个×,都是一次会话,包括在浏览器的后面新建选项卡。关闭浏览器,一次会话结束。   coo...
  • u010242979
  • u010242979
  • 2014-05-24 23:13
  • 884

asp.net中cookie和session的区别和相关使用

彻底研究了下cookie和session的原理,发现了很多有趣的东西,原来我的很多想法和制定协议的那些大神们也有相同之处! cookie是存放于用户的本地的机器上的小文件,由浏览器创建和读写这个文件, 此文件的作用,是存放了用户访问某个网站时的一些资料,比如登陆的帐号,密码等 . ...
  • wangyh_128
  • wangyh_128
  • 2014-08-14 11:21
  • 778

session与cookie的介绍和两者的区别之其相互的关系

本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。 cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。...
  • weixin_37196194
  • weixin_37196194
  • 2017-02-19 18:28
  • 3307

PHP Cookie与Session的使用与区别

Cookie与Session Cookie和session是目前使用的两种存储机制。 cookie是从一个WEB页到下一个WEB页面的数据传送方法,cookie存储在客户端。 Session是让数据在页面中持续有效的一个传递方法,session存储在服务器端。 掌握了cookie与sessi...
  • czh0423
  • czh0423
  • 2015-06-02 16:09
  • 2836

SESSION是否依赖COOKIE问题总结

Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Sess...
  • CNYYGJ
  • CNYYGJ
  • 2016-12-01 00:21
  • 1332

Cookie与Session的区别与联系及生命周期

前几天面试问了一个问题,当时记不太清了,上网查了下发现这个问题还真的很有讲究而且很重要,自己总结下做下记录。 一、Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小...
  • tanyunlong_nice
  • tanyunlong_nice
  • 2015-08-01 18:01
  • 16299

第三章 Java基础之cookie和session的区别和联系

在介绍cookie和session之前先废话两句,最近面试了两家公司,第一家公司在笔试题中问道了对cookie的属性作介绍,第二家在面试的过程中问道了cookie和session的区别,自己只说了两点区别,也没有进行比较深入的介绍,面试官问道了session和cookie的关联,呵呵,我说没有关联。...
  • wangbiao007
  • wangbiao007
  • 2016-03-05 16:58
  • 1496

Session是通过Cookie来传id的

版权声明:本文为博主原创文章,未经博主允许不得转载。 1、HttpSession session = request.getSession(); 根据情况当这句代码需要创建session的时候,服务器每创建一个session都会有一个想对应的session_id,并且服务器会把这个sessi...
  • qq_35114086
  • qq_35114086
  • 2016-08-30 21:51
  • 1321

禁用cookie后,如何使用session?

问题大家都知道,session的sessionid是通过cookie来保存的,那么如果我们的浏览器禁用了cookie,还可以使用session吗?这道面试题是不是经常被问?你能答得出来吗?禁用cookie后,session还是可以使用的。禁用后的情况禁用cookie后,服务器每次session_st...
  • baochao95
  • baochao95
  • 2017-06-06 16:36
  • 1522
    个人资料
    • 访问:802次
    • 积分:79
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类