专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
稀土掘金技术社区  ·  做了个渐变边框的input输入框,领导和客户 ... ·  22 小时前  
程序员的那些事  ·  程序员:在 8 ... ·  3 天前  
老刘说NLP  ·  48个流行开源ML数据集及KG三元组抽取工具 ... ·  4 天前  
51好读  ›  专栏  ›  程序猿

干掉状态:从session到token

程序猿  · 公众号  · 程序员  · 2017-06-24 22:46

正文

请到「今天看啥」查看全文


Session


但是好日子没持续多久, 很快大家就不满足于静态的Html 文档了, 交互式的Web应用开始兴起, 尤其是论坛, 在线购物等网站。


我马上就遇到了和邮件服务器一样的问题, 那就是必须管理会话,必须记住哪些人登录系统,  哪些人往自己的购物车中放了商品,  也就是说我必须把每个人区分开。


这对我来说是个不小的挑战, 由于HTTP协议的无状态特性, 我必须加点小手段,才能完成会话管理。


我想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字符串,每个人收到的都不一样,  每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了。


3

沉重的负担


大家都很高兴, 可是我就不爽了。


每个人只需要保存自己的session id,而我需要保存所有人的session id !  如果访问我的人多了, 就得由成千上万,甚至几十万个。


这对我来说是一个巨大的开销 , 严重的限制了我的扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统,  那session id会保存在机器A上,  假设小F的下一次请求被转发到机器B怎么办?  机器B可没有小F的 session id啊。


有时候我会采用一点小伎俩: session sticky , 就是让小F的请求一直粘连在机器A上, 但是这也不管用, 要是机器A挂掉了, 还得转到机器B去。


那我只好做session 的复制了, 把session id  在两个机器之间搬来搬去, 快累死了。







请到「今天看啥」查看全文