网站开发实施方案进度,软件工程很难学吗,淘客cms系统,网页界面设计图我是一个web服务器我的工作是给人类提供上网服务#xff0c;我每天要为数以万计的人提供网页浏览服务。已经是深夜了#xff0c;我还在和手下几个兄弟为了一件事紧张讨论着。“老大#xff0c;现在咱们每天处理的请求越来越多了#xff0c;session同步的问题不能再拖了我每天要为数以万计的人提供网页浏览服务。已经是深夜了我还在和手下几个兄弟为了一件事紧张讨论着。“老大现在咱们每天处理的请求越来越多了session同步的问题不能再拖了必须想个办法”“二哥说是啊老大不能再拖了”“老二老三咱们是一个集群你们说的问题我不是不知道我昨天听程序员们在讨论说要给我们接入一个叫Redis的家伙相信这一问题很快就能得到解决啦大家再忍忍。”“Redis他是谁什么来头怎么没听过这号人物” “我也没见过等等看吧”session-cookie时代到底是什么问题让我们兄弟几个如此着急上火事情还得从多年以前说起······那时候这俩兄弟还没来就我一个web服务器每天处理的不过是一些静态资源文件像HTML、CSS、JS、图片等等日子过的清闲自在。 日子一天天过着互联网却悄然发生着变化。除了静态网页之外可以动态交互的网络应用开始如雨后春笋般涌现像各种各样的论坛啊购物网站啊之类的。这家公司的老板也不例外招了一帮程序员要搞一套支持动态网页交互的网站出来。 以往的时候我只需要按照HTTP协议的规范处理请求就完事儿了。不过动态交互应用出现后我还得记住每一个请求背后的用户是谁要不然就张冠李戴全乱套了。为了解决这个问题程序员们想出了一个叫session的办法浏览器登陆以后我就分配一个session ID表示一个会话然后返回给浏览器让它保存着。后续再来请求的时候就把它给带上我就能知道是谁啦 还别说这办法还是挺管用的成功解决了用户身份识别的问题这一用就是好几年。不过互联网的发展实在是太快了用户量蹭蹭上涨而我却发起了愁。 原先用户量少的时候session ID管理起来倒也简单现在用户越来越多对应的session ID数量也与日俱增我有点不堪重负了。终于前不久公司对web服务器进行了扩展给我找来了两个小弟还专门添置了一个nginx来进行负载均衡这一下我们变成了3台web服务器组成的小集群了。 我的工作一下轻松了许多两位小兄弟分担了不少。我原以为以后的日子要好过一些了可没想到两位小兄弟的加入却引入了新的问题。 原先的session ID虽然很多我一个人累是累点但是方便管理啊现在人手是增加了可是这个session ID的管理问题却变得复杂起来。因为咱们现在是个集群请求如果发到我这我给登记了session ID但下一次请求说不定就发到老二那里一会儿又发到老三那里这个就说不准了这样我们几个手头的信息不一致就会出现一些异常情况用户估计要破口大骂这什么辣鸡网站后来我们跟nginx商量了一下让他同一个用户来的请求都发给我们固定的一个人这才稳住了局面。 不过好景不长后面我们三兄弟都相继出现过宕机的情况这时候nginx还是得把请求交给还在工作的兄弟原来的问题就又出现了我们几个逼急了商量了一下干脆大家伙来同步session ID的信息好了有新增、失效的情况都给其他几个兄弟招呼一下大家都管理一份这样就不会出现不一致的问题了。 搞了半天又变成以前一个人管理所有session ID的情况了不仅如此还要抽出时间和几位兄弟同步把session ID搬来搬去工作量不减反增了。就这样艰难的过了一段日子大家都怨声载道所以有了开头的那一番讨论。这一次希望这位新来的叫Redis的伙伴能拯救我们。独立缓存——Redis过了几天总算把这个叫Redis的小伙伴给盼来了这小子看起来特别精神了解清楚情况后告诉我们说“三位老哥以后这session ID都统一存在我这里吧你们别各自保存了这不是各位的擅长”“你行吗”老二看着不太相信他的话一脸不屑。“行不行试试不就知道了吗”接下来我们听从了Redis的建议不再保存这烦人的session ID全部一股脑儿交给了他我们需要的时候再找他获取。你还别说这小子个子不大本事不小读写速度都特快让我们头疼的问题总算是解决了Token时代几个月后的一天···“听说了吗程序员们又要更改session ID的存储方案了”这一天老二神神秘秘的说到。“不对不对我听到的版本是以后不用session ID了要变天了”老三也凑了上来。一旁的redis老哥一听不乐意了“咋的是嫌我干的不好吗”我也赶紧催促“你俩就别卖关子了听到了什么快说说”老三示意大家围拢一些小声说到“我上次听两个程序员在议论不知道他们在哪里学来了一套叫JWTJSON Web Token 的技术硬说让我们来管理保存session ID负担太重了以后不保存了还说还说···”“还说啥你倒是说啊”“还说Redis也不是万能的也有崩溃的风险一崩溃就全完了所以要革新技术”老三继续说到。Redis一听更着急上火了“我工作这么久以来从没有撂过挑子吧怎么能这么说我呢再不行我也可以像你们搞个集群嘛”“Redis老弟你先别急。唉老三这不保存session ID以后怎么鉴别用户呢你有没有听到他们怎么说的”“听他们说没有session ID但是换了一个token用它来识别用户”老二一听不以为意“换了个名字换汤不换药嘛咱们还不是要保存token才能匹配谁是谁”老三摇了摇头“不是的这可不只是改了个名字那么简单这个token是由三部分构成就像这样 你们看第一部分是JWT的基本信息然后把用户的身份信息放在第二部分接着和第一部分合在一起做一个计算计算的时候加入了一个只有我们才知道的密钥secretkey计算结果作为第三部分。最后三部分拼在一起作为最终的token发送给客户端保存着···”还没等老三说完老二点出了其中的关键“我知道了后面咱们再收到这个token的时候就可以通过同样的算法验证前面两部分的结果和第三部分是不是相同就知道这个token是不是伪造的啦因为密钥只有我们知道别人没办法伪造出一个token的最后确认有效之后再取第二部分的用户身份信息就知道这是谁了”听完他们的分析我和Redis老兄都默默的点了点头“有点意思啊这样一来咱们确实不用存了不过现在咱们几个工作配合的也挺好的他们费这么大劲是为了什么啊”“我猜他们是想节约开支把Redis老哥给裁掉”老二说到。老三摇了摇头“依我看八成他们是想展示技术给领导看这不又快到职级晋升答辩了他们想搞事情唉老大这事你怎么看”“我啊我···”朋友们你们怎么看