分佈式session的管理

在分佈式架構或微服務架構下,必須保證一個應用服務器上保存Session後,其它應用服務器能夠同步或共享這個Session,可能會出如今A1系統登陸後建立並保存Session,再次發起請求,請求被轉發到A2系統上顯示未登陸的狀況。如下是幾種常見的分佈式session管理方案:緩存

1.Session複製

將Session同步到其它Web服務器上,達到每一個Web服務器上都保存一致的Session。
優勢:代碼上不須要作支持和修改。
缺點:須要依賴支持的Web服務器,一旦更換成不支持的Web服務器就不能使用了,在數據量很大的狀況下不只佔用網絡資源,並且會致使延遲。
 

2.Session粘滯

將用戶的每次請求都經過某種方法強制分發到某一個Web服務器上,只要這個Web服務器上存儲了對應Session數據,就能夠實現會話跟蹤。
優勢:使用簡單,沒有額外開銷。
缺點:一旦某個Web服務器重啓或宕機,相對應的Session數據將會丟失,並且須要依賴負載均衡機制。
適用場景:對穩定性要求不是很高的業務情景。
 

3.Session集中管理

在單獨的服務器或服務器集羣上使用緩存技術,如Redis存儲Session數據,集中管理全部的Session,全部的Web服務器都從這個存儲介質中存取對應的Session,實現Session共享。
優勢:可靠性高,減小Web服務器的資源開銷。可用性高。安全

通常分佈式架構下這種方式使用的最多。服務器

 

4.基於Cookie管理

這種方式每次發起請求的時候都須要將Session數據放到Cookie中傳遞給服務端。
優勢:不須要依賴額外外部存儲,不須要額外配置。
缺點:不安全,易被盜取或篡改;Cookie數量和長度有限制,須要消耗更多網絡帶寬。
適用場景:數據不重要、不敏感且數據量小的狀況。網絡

在微服務架構下的JWT方案就是採用相似於這種方案。
相關文章
相關標籤/搜索