多台Web服务器之间共享Session的解决方案

[ 题目提出 ]

  为了满意足够大的使用,满意更多的客户,于是我们架设了N台Web效劳器(N>=2),在多台Web效劳器的状况下,我们会触及到一个题目:用户登陆一台效劳器当前,假如在逾越到另一台效劳器的时分可以持续运用客户的Session?

  (以下描绘计划只是针对Linux/Unix + Apache + Mysql + PHP的研发架构,当然,也能扩展到其他平台。)


  [ 题目处理计划 ]

  既然我们的题目已摆在眼前了,那么就要从技术角度去处理题目,给我们的客户更好的体验,总结了几个计划。

  1. 写客户端Cookie的方式

  当用户登陆胜利当前,把网站域名、用户名、密码、token、session有效工夫局部采用cookie的方式写入到客户真个cookie外面,假如用户从一台Web效劳器逾越到另一台效劳器的时分,我们的程式自动去检测客户真个cookie消息,停止判定,然后提供对应的效劳,当然,假如cookie过时,或有效,天然就不让用户持续效劳了。当然,这种办法的弊端就不问可知了,比方客户端禁用了cookie或cookie被黑客夺取了呢?

  2. 效劳器之间Session数据同步的方式

  假定Web效劳器A是一切用户登陆的效劳器,那么当用户考证登陆一下,session数据就会写到A效劳器里,那么就能本人写脚本或保护进程来自动把session数据同步到其他Web效劳器,那么当用户跳转到其他效劳器的时分,那么session数据是分歧的,天然就可以间接停止效劳不必再次登陆了。缺陷是,能够会速度慢,不波动,假如是单向同步的话,登陆效劳器呈现题目,那么其他效劳器也无法效劳,当然也能思索双向同步的题目。

  3. 应用NFS共享Session数据的方式

  实在这个计划和上面的Mysql计划相似,只是存储方式不相反。大致就是有一台公共的NFS效劳器(Network File Server)做共享效劳器,一切的Web效劳器登陆的时分把session数据写到这台效劳器上,那么一切的session数据实在都是保管在这台NFS效劳器上的,不管用户拜访那太Web效劳器,都要来这台效劳器获取session数据,那么就可以完成共享session数据了。缺陷是依靠性太强,假如NFS效劳器down掉了,那么自己都无法任务了,当然,能思索多台NFS效劳器同步的方式。


  4. 应用Mysql数据库共享Session数据的方式

  这个方式和NFS的方式相似,也是采用一台Mysql效劳器做共享效劳器,把一切的session的数据保管到Mysql效劳器上,一切Web效劳器都来这台Mysql效劳器来获取Session数据。缺陷也是依靠性太强,Mysql无法任务了影响一切的Web效劳器,当然,能思索多太Mysql数据库来共享session,运用同步Mysql数据的方式。

  5. 运用硬件装备

  这个算是比拟幼稚的处理计划了,运用相似BIG-IP的负载装备来完成资源共享,那么就可以又波动又公道的的共享Session了。目前十分多门户网站采用这种方式。缺陷十分分明了,就是要免费了,硬件装备一定需求购置本钱的,不过关于专业或大型使用来讲,是比拟公道并且值得的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值