分布式Session的實現

2021-08-14 10:10:45 字數 776 閱讀 1267

一、session複製,專業名詞叫session replication

二、session 粘性,主頁名詞叫session sticky

三、快取集中式管理

簡介:將session存入分布式快取集群中的某台機器上,當使用者訪問不同節點時先從快取中拿session資訊

這個是主流的實現方式,最大的缺點就是實現複雜、穩定性依賴於快取的穩定性、session資訊放入快取時要有合理的策略寫入

就說說第三種的實現方式,假設現在同乙個應用,線上有三颱伺服器a1, a2,a3,通過nginx做負載均衡,這樣使用者a的請求就都會按照某種規則落在這三颱機器上,使用者a第一次進行登入的請求是在a1上進行處理的,所以在a1上建立了這個使用者的會話,接下來使用者的請求落在了其他兩台伺服器上,還想拿到a1上建立的會話資訊,那麼就需要在使用者a登入時,將建立的會話資訊儲存在這三颱伺服器之外的其他伺服器d上,不管在哪台機器上進行請求,都從d伺服器獲取會話,以上就是大體的實現思路。

至於實現,方式就多了,如果是本地開發或者是自己公司的內部測試環境dev,那麼就直接設定成單點的應用,既然是單點的,那麼使用者a登入建立會話的會話資訊可以直接儲存在這台機器的記憶體中,最簡單的就是維護乙個常量map,這樣也省去了部署測試機器,環境太複雜的問題。

對於線上伺服器,實際上也就是所謂的應用伺服器與快取伺服器分離,應用伺服器只負責處理請求,而會話的資訊都儲存在快取伺服器上。

這台快取伺服器,可以是基於資料庫的,比如redis,也可以是基於記憶體的memcached的。

接下來,有時間我會寫乙個簡單點的本地開發服務的基於記憶體版本的會話保持的demo出來。

Redis實現分布式Session

對於多web的環境現在已經是必須的了,很難想像一台web伺服器面對百萬併發的響應,所以,我們需要多台web伺服器集群合作,來緩解這種高併發,高吞吐的場景,而對於多web的場景又會有個問題出現,即session儲存的問題,如乙個使用者登陸後,把乙個狀態資訊儲存到當前web伺服器的session裡,而你...

分布式如何實現session共享

我們實現的方案可以說是第二種方案和第三種方案的合體,可以利用gemfire實現session複製共享,還可以將session維護在redis中實現session共享,同時可以將session維護在客戶端的cookie中,但是前提是資料要加密。這三種方式可以迅速切換,而不影響應用正常執行。我們在實踐中...

分布式Session的幾種實現方式

分布式session的幾種實現方式 1.基於資料庫的session共享 2.基於nfs共享檔案系統 3.基於memcached 的session,如何保證 memcached 本身的高可用性?4.基於resin tomcat web容器本身的session複製機制 5.基於tt redis 或 jb...