跨伺服器session共享

2022-08-14 03:30:16 字數 1237 閱讀 9848

1. 基於nfs的session共享

nfs是net filesystem的簡稱,最早由sun公司為解決unix網路主機間的目錄共享而研發。

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

2. 基於資料庫的session共享

首選當然是大名鼎鼎的mysql資料庫,並且建議使用記憶體表heap,提高session操作的讀寫效率。這個方案的實用性比較強,相信大家普 遍在 使用,它的缺點在於session的併發讀寫能力取決於mysql資料庫的效能,同時需要自己實現session淘汰邏輯,以便定時從資料表中更新、刪除 session記錄,當併發過高時容易出現表鎖,雖然我們可以選擇行級鎖的表引擎,但不得不否認使用資料庫儲存session還是有些殺雞用牛刀的架勢。

3. 基於cookie的session共享

這個方案我們可能比較陌生,但它在大型**中還是比較普遍被使用。原理是將全站使用者的session資訊加密、序列化後以cookie的方式, 統一 種植在根網域名稱下(如:.host.com),利用瀏覽器訪問該根網域名稱下的所有二級網域名稱站點時,會傳遞與之網域名稱對應的所有cookie內容的特性,從而實現 使用者的cookie化session 在多服務間的共享訪問。

這個方案的優點無需額外的伺服器資源;缺點是由於受http協議頭信心長度的限制,僅能夠儲存小部分的使用者資訊,同時cookie化的 session內容需要進行安全加解密(如:採用des、rsa等進行明文加解密;再由md5、sha-1等演算法進行防偽認證),另外它也會占用一定的帶 寬資源,因為瀏覽器會在請求當前網域名稱下任何資源時將本地cookie附加在http頭中傳遞到伺服器。

4. 基於memcache的session共享

memcache由於是一款基於libevent多路非同步i/o技術的記憶體共享系統,簡單的key + value資料儲存模式使得**邏輯小巧高效,因此在併發處理能力上佔據了絕對優勢,目前本人所經歷的專案達到2000/秒 平均查詢,並且伺服器cpu消耗依然不到10%。

另外值得一提的是memcache的記憶體hash表所特有的expires資料過期淘汰機制,正好和session的過期機制不謀而合,降低了 過期session資料刪除的**複雜度,對比「基於資料庫的儲存方案」,僅這塊邏輯就給資料表產生巨大的查詢壓力。

基於memcache 的儲存是這幾個方案中推薦選用的!

SESSION 跨伺服器共享session

首先,建立儲存session的表sessions createtablesessions sidchar 32 notnull,expiryint 11 unsignednotnull,valuetextnotnull,primarykey sid 註冊session的頁面session reg.p...

PHP多台伺服器跨域SESSION共享

業務規模和訪問量的逐步發展,原本由單台伺服器 單個網域名稱的迷你 架構已經無法滿足發展需要。如 dns輪詢 radware f5 lvs等 讓多個頻道共享一組伺服器。ok,頭腦中我們已經構思了這樣的解決方案,不過進入深入開發後新的技術問題又隨之而來 我們把 程式分布部署到多台伺服器上,而且獨立為幾個...

伺服器實現 如何實現session跨伺服器共享

session共享有多種解決方法,常用的有四種 客戶端cookie儲存 伺服器間session同步 使用集群管理session 把session持久化到資料庫。1.客戶端cookie儲存 以cookie加密的方式儲存在客戶端,每次session資訊被寫在客戶端,然後經瀏覽器再次提交到伺服器,即使兩次...