1. 程式人生 > >session分散式共享

session分散式共享

OK,頭腦中我們已經構思了這樣的解決方案,不過進入深入開發後新的技術問題又隨之而來:

我們把網站程式分佈部署到多臺伺服器上,而且獨立為幾個二級域名,由於Session受實現原理的侷限(PHP中Session預設以檔案的形式儲存在本地伺服器的硬碟),使得我們的網站使用者不得不經常在幾個頻道間來回輸入使用者名稱、密碼登入,導致使用者體驗大打折扣;另外,原本程式可以直接從使用者Session變數中讀取的資料(如:暱稱、積分、登入時間等),因為無法跨伺服器同步更新Session 變數,迫使開發人員必須實時讀寫資料庫,從而增加了資料庫的負擔。

於是,解決網站跨伺服器之間的Session共享方案需求變得迫切起來,最終催生了多種解決方案,下面列舉4種較為可行的方案進行對比探討:

1. 基於NFS的Session共享

NFS是Net FileSystem的簡稱,最早由Sun公司為解決Unix網路主機間的目錄共享而研發。

這個方案實現最為簡單,無需做過多的二次開發,僅需將共享目錄伺服器mount到各頻道伺服器的本地session目錄即可,缺點是NFS依託於複雜的安全機制和檔案系統,因此併發效率不高,尤其對於session這類高併發讀寫的小檔案,會由於共享目錄伺服器的io-wait過高,最終拖累前端WEB應用程式的執行效率。