国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

多Web服務器之間共享Session的解決方案

2024-05-04 23:04:19
字體:
來源:轉載
供稿:網友

  很多開發中涉及到用戶的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服務器同步的形式。
(關于nfs的經典文章:http://linux.vbird.org/linux_server/0330nfs.php)


  4. 利用mysql數據庫共享session數據的方式

  這個方式與nfs的方式類似,也是采用一臺mysql服務器做共享服務器,把所有的session的數據保存到mysql服務器上,所有web服務器都來這臺mysql服務器來獲取session數據。缺點也是依賴性太強,mysql無法工作了影響所有的web服務器,當然,可以考慮多太mysql數據庫來共享session,使用同步mysql數據的方式。

  (mysql同步我寫過文章:http://blog.csdn.net/heiyeshuwu/archive/2005/10/31/520007.aspx)

  5. 使用硬件設備

  這個算是比較成熟的解決方案了,使用類似big-ip的負載設備來實現資源共享,那么就能夠又穩定又合理的的共享session了。目前很多門戶網站采用這種方式。缺點很明顯了,就是要收費了,硬件設備肯定需要購買成本的,不過對于專業或者大型應用來講,是比較合理并且值得的。
(關于big-ip設備:http://www.f5.com.cn/channel.php?channel=product&type=big-ip-%d3%a6%d3%c3%c1%f7%c1%bf%b9%dc%c0%ed&id=36)

  以上這些只是我的個人愚見,沒有經過試驗,不保證其準確實在性,只是提供一種想法和參考。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邹平县| 梨树县| 大名县| 乾安县| 云浮市| 同江市| 密云县| 苍溪县| 贵溪市| 江陵县| 阜平县| 邵武市| 绩溪县| 望谟县| 南丰县| 含山县| 绥棱县| 福清市| 崇文区| 武功县| 新疆| 衡东县| 玉田县| 托克逊县| 宣恩县| 全州县| 革吉县| 光山县| 讷河市| 西贡区| 荥阳市| 汕尾市| 汉寿县| 东乌| 雅安市| 吉隆县| 磐安县| 土默特右旗| 乌海市| 寿光市| 石阡县|