[ 题目提出 ]
为了满意足够大的使用,满意更多的客户,于是我们架设了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了。目前十分多门户网站采用这种方式。缺陷十分分明了,就是要免费了,硬件装备一定需求购置本钱的,不过关于专业或大型使用来讲,是比拟公道并且值得的。