cookie vs session

https://mp.weixin.qq.com/s/YVYKrLIk0gqC0WZU-U5XIw
https://www.nowcoder.com/discuss/98046

会话管理

这里写图片描述

步骤 1: 客户端把用户 ID 和密码等登录信息放入报文的实体部分
通常是以 POST 方法把请求发送给服务器。而这时, 会使用 HTTPS
通信来进行 HTML表单画面的显示和用户输入数据的发送。

步骤 2: 服务器会发放用以识别用户的 Session ID。 通过验证从客户
端发送过来的登录信息进行身份认证, 然后把用户的认证状态
Session ID 绑定后记录在服务器端。

步骤 3: 客户端接收到从服务器端发来的 Session ID 后, 会将其作为
Cookie 保存在本地。 下次向服务器发送请求时, 浏览器会自动发送
Cookie, 所以 Session ID 也随之发送到服务器。 服务器端可通过验证
接收到的 Session ID 识别用户和其认证状态

Session(ID)是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session(会话)的一种方式

分布式session的管理

作者:一k二叉树
链接:https://www.nowcoder.com/discuss/98046
来源:牛客网

1.Session Replication
方案原理:将一台机器上的Session数据广播复制到集群中其余机器上
使用场景:机器较少,网络流量较小
优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问
缺点:广播式复制到其余机器有一定廷时,带来一定网络开销

这里写图片描述

2.Session Sticky 方式管理
方案原理:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上
使用场景:机器数适中、对稳定性要求不是非常苛刻
优点:实现简单、配置方便、没有额外网络开销
缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

如果S1宕机就GG了.
这里写图片描述
3. 缓存集中式管理
方案原理:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息
使用场景:集群中机器数多、网络环境复杂
优点:可靠性好
缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入

第三种方式是现在几乎所有网站的实现方式。一来安全,二来不会导致单点故障。
这里写图片描述

区别

https://blog.csdn.net/junjunba2689/article/details/79468380#t9
cookie采用的是客户端的会话状态的一种储存机制。它是服务器在本地机器上存储的小段文本或者是内存中的一段数据,并随每一个请求发送至同一个服务器。

session是一种服务器端的信息管理机制,它把这些文件信息以文件的形式存放在服务器的硬盘空间上(这是默认情况,可以用memcache把这种数据放到内存里面)当客户端向服务器发出请求时,要求服务器端产生一个session时,服务器端会先检查一下,客户端的cookie里面有没有session_id,是否过期。如果有这样的session_id的话,服务器端会根据cookie里的session_id把服务器的session检索出来。如果没有这样的session_id的话,服务器端会重新建立一个。PHPSESSID是一串加了密的字符串,它的生成按照一定的规则来执行。同一客户端启动二次session_start的话,session_id是不一样的。

具体区别:

Cookie保存在客户端浏览器中,而Session保存在服务器上。Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE。
4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5)所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

猜你喜欢

转载自blog.csdn.net/junjunba2689/article/details/82016839