cookie session 区别:
cookie只能是string类型,session可以是Java任何类型,cookie有大小限制,而session没有,cookie的存储限制了数据量,只允许4KB,而session是无限量的,
cookie和session结合使用
1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。
2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。
分布式session:
1、session复制:即在每个服务器上都保存一个session,这样肯定不够好,浪费资源,当应用集群达到数千台的时候,会出现内存不够用。
2、cookie保存session,缺点:比如受cookie大小的限制,能记录的信息有限;每次请求响应都需要传递cookie,影响性能,如果用户关闭cookie,访问就不正常,
3、ip绑定策略:利用hash算法,比如nginx的ip_hash,使得同一个Ip的请求分发到同一台服务器上。
4、spring-session以及集成好的解决方案,存放在redis中(这个还要细看)