第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

登錄的演變

標簽:
Java

单机时代

如果熟悉javaee的话,我们最开始会使用session来唯一标识一个访问者。默认时间30分钟。他的实现是web服务通过jsessionid做唯一标志。我们做的例如防止重复提交等操作都是依靠session来实现的。整体的样式如下
图片描述

集群时代1

随着业务的增多,单台服务器慢慢已经满足不了业务的发展了,例如单个服务器的tps只有2w,当客户超多2w的时候,就得排队或者拒绝,于是开始了水平扩展的方式,这样就带来了一个问题。当A客户第一次访问的时候,是web1接受请求的,于是进行了一次登录,A再次请求的时候,负载到了web2,虽然A传递了jsessionid过来,但是B并没有对应的信息,此时又要求A登录一次,返回了另外一个jsessionid,A拿着新的jsessionid去访问服务1,但是服务1里也没有这个session信息,于是服务变得不可用了。主要是登录信息在每个客户端之间无感知,导致了问题,最简单的方法就是让用户A一直访问web1。于是切分的做法开始了。
图片描述

这种切割的方式就依靠负载,把A的一直给1,B的一直给2。例如根据省份ip来hash。
不同的省份的访问量也不一样,A省的访问5000,B省的访问50。在分割不均匀的情况下,仍然不能完全避免,而且浪费机器资源。于是提出了session共享的做法。保证大家访问后,任意一个节点都可以知道信息。
图片描述
无论哪个节点,信息都从远处的redis取,这样保证了登录信息都可以共享。

集群时代2

以上方案虽然可以解决问题,但是如果访问量继续增大呢,服务不停的增多,登录信息也不停的变多,此时redis的内存也撑不住了。证明数据的集中处理都是有限的,于是提出了token机制,就是把登录信息用一种加密的方式保存,每个服务器都可以正常解析,token里都存有用户信息,过期信息,这样不论哪个服务器都可以解析出数据,只要能解析成功,并且时间没有过期,那就证明这个用户已经登录了,成功解决了登录信息过多导致的膨胀问题。
但是此时的设计变了,如果想做到防止重复提交,选择的方式不能依赖登录信息,因为服务1和服务2都可能收到连续点击的数据,所以最终的数据压力放到了db这层。

小结

session的单机玩法在业务量小的时候完全可以work,但是访问大的时候可以考虑redis这种缓存,再大的时候就得自己验证自己了,数据得有自己标识自己的方法。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.6萬
獲贊與收藏
380

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消