分布式Session

今天我們來講解一下分布式Session的幾種實現(xiàn)方法

為什么要使用分布式Session

在分布式場景下,負(fù)載均衡會將用戶請求隨機(jī)分發(fā),如果單機(jī)存儲Session,會造成用戶需要頻繁登陸。

分布式Session的實現(xiàn)方式

  • 粘性Session(將用戶請求固定在一臺服務(wù)器)
  • 服務(wù)器Session復(fù)制(廣播實現(xiàn)Session同步)
  • 緩存存儲(Sticky模式和Non-Sticky模式)
  • 持久化存儲(將Session存儲到數(shù)據(jù)庫)

粘性Session

  • 原理:將用戶鎖定到某一臺服務(wù)器上,用戶的每次請求都會被發(fā)送到第一次請求的服務(wù)器上。
  • 優(yōu)點:簡單易用,無需操作Session,直接配置Nginx即可。
  • 缺點:缺乏容錯性,如果當(dāng)前訪問的服務(wù)器發(fā)生宕機(jī),請求被轉(zhuǎn)發(fā)到其他服務(wù)器,用戶需要重新登錄。

服務(wù)器Session復(fù)制

  • 原理:任何一個節(jié)點的Session發(fā)生變化,都會廣播給其他所有節(jié)點,以保證Session的同步。
  • 優(yōu)點:容錯性較強(qiáng),Session可以實時響應(yīng)。
  • 缺點:會影響到網(wǎng)絡(luò)負(fù)荷,當(dāng)并發(fā)量較大時,會降低服務(wù)器的性能。

緩存存儲

  • 原理:
    • Sticky模式:請求處理完成后,將Session同步到緩存中,每次請求都會被映射到同一臺服務(wù)器,直到服務(wù)器宕機(jī),再去緩存中讀取Session。
    • Non-Sticky模式:每次請求被映射到的隨機(jī)一臺服務(wù)器,請求到來時從緩存中加載Session,請求處理完成,再將Session回寫到緩存中。
  • 優(yōu)點:容錯性較強(qiáng),Session可以實時響應(yīng)。
  • 缺點:一旦緩存重啟,Session也會丟失(Redis默認(rèn)保存快照,不會丟失),需要重新登錄。
image.png

持久化存儲

  • 原理:將Session存到數(shù)據(jù)庫中,進(jìn)行持久化。
  • 優(yōu)點:服務(wù)器宕機(jī),Session不會丟失。
  • 缺點:高并發(fā)時,對數(shù)據(jù)庫造成很大的壓力。

參考

我們今天所付出的一切,不過是為了能見到明天的太陽

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容