Cookie

Cookie Session_服务器

作用:
服务器发送到浏览器,并保存在浏览器端的一小块数据
浏览器下次访问该服务器时,会自动携带该块数据,讲求发送给服务器

功能:
会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
个性化设置(如用户自定义设置、主题等)
浏览器行为跟踪(如跟踪分析用户行为等)

缺点:
不安全
流量压力

Session

Cookie Session_前端_02

作用:

是JavaEES的标准,用于在服务端记录客户端信息
数据存放在服务端更加安全,但也会增加服务端的内存压力

适用场景:
如果数据比较隐私敏感,应该用Session技术,否则用cookie比较合适
 

Session与分布式服务器:

在分布式服务器上,session存在这样的问题。一个负载均衡器将一个http请求转发给了服务器1,使得服务器1存储了该请求的session。当下一次同一个用户发起请求时,如果负载均衡器将请求装发给了不同服务器。该服务上没有存储相应的sessionId。导致该服务器不能正确地为该客户端提供服务

黏性sesion:
负载均衡器,对来的sessionId进行判断,同一个Id,会派送给同一个服务器。
这样的话,如果某个Id持续请求大量服务,而其他Id请求少量服务。不利于负载均衡。

同步session:

每一个session再发给任一个服务器时,都会将所有session信息同步更新。这样保证了每个服务器都存有所有的session信息。
缺陷是会导致性能的降低,每一次session都需要更新所有服务器,而且会导致服务器之间不够独立,耦合度较高,但是可以避免单点失效问题。

共享session:
有i一个服务器专门用于记录session,内次只更新这一个服务器,但是可能会有单点失效问题,一旦这个服务器挂掉了,所有session数据都会失效

存到数据库里:
将session数据存到数据库中们可以使每个服务器都能得到session信息。
但是从关系型数据库中提取数据需要调用硬盘,速度慢了。
解决:内存数据库Redis