栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

session正在被淘汰吗?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

session正在被淘汰吗?

首先你需要明白 session 的本质是什么,然后你就会发现 session 一直都在。虽然可能换了个名字,或者换了存储方式,但 session 的本质并没有改变。例如你说的将状态信息写出来 redis,这就是换了个存储方式,目的是利用 redis 的共享性和速度。

session 的实现方式有很多种,redis 只是其中之一。除了像 JWT 这种将状态信息存储在客户端的“异类”,其他将信息存于服务端并通过唯一 ID 寻址的都是 session。

 

http 无状态,所以为了实现有状态 http,才有了会话(session)的概念。说实话,网上很多关于会话的讨论都过于具体,会牵扯到不同的实现方案,容易让人误会,下文的“会话”都指的是广义的 web 会话。

客户端保管方式

credential 由客户端保管,客户端怎么存放几乎不关服务器的事,浏览器,安卓 app,ios app,桌面应用等都是客户端

 

浏览器一般把 credential 放在cookie里,就像把曲奇饼(cookie)放在小罐子里,cookie 特殊的地方在于,浏览器会听服务器的话,比如服务器在设置cookie时指定了“http only”,那浏览器就不会允许 js 拿到,至于其他的客户端,想放哪放哪,直接存文件或存本地数据库都行,或者还有其他骚操作都行。

session的实质就是前端保存一个id,后端根据这个id来识别会话,存取数据。仅此而已,至于这个id怎么保存,可以放在url后面,可以放在cookie里,甚至可以放在header里。

在我看来,只要用到这种模式的都算session,只不过这种id(专业点叫token)的实现方式不同。session的缺点就是数据保存在哪里的问题,既然要保存,分布式的时候肯定要保证session一致性。

 

http.是无状态的,业务是有状态的,cookie也好,session也好,都是为了实现这个需求而创造的工具,无论技术怎么演进,万变不离其宗,还是会有个地方存储业务的状态,区别只是方式和实现的不同,本质并没有变。

此基本流程之上,cookie session https 存内存还是存redis还是存磁盘,存1天,1周,1月,自有协议,通用协议等等,并无本质区别,没谁死,都活得好好的

“大型网站”就没几个,一天1亿PV,qps160.25,乘5乘8随意也就1000qps峰值,存这些登录态7天活跃能有多大,百万级别至多了吧,一台4核16G的netty机器足够了,开swap都没啥大不了的。。。,不够?那是因为你缺台热备机,用到redis也就是因为切换主备用户最好没感知(对哦,我这可是叫做集群喔,毕竟2台机器+redis+小负载均衡网关),你要操心的所有问题可能都是mysql。

狭义的session,是基于http协议,通过浏览器cookie和服务端session对应来鉴权和保存用户状态。说到集群,php原生支持部署session到redis,memcached,mysql等。只需要几行简单的配置即可TG:li9047

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号