分布式集群的Session问题
1、Session的實現(xiàn)
? ? ? ? ?在Session開始時候,分配一個唯一的Session標識sessionId,通過Cookie把 sessionId 告訴瀏覽器,以后每次請求的時候,瀏覽器都會帶上 sessionId 告訴web服務(wù)器,這個請求屬于哪個Session。
? ? ? ? 在web 服務(wù)器上,每個Session都有獨立的存儲,保存不同的Session信息。
? ? ? ? 如果遇到禁用Cookie的情況,一般做法是把sessionId方法 放到 URL 參數(shù)中。
2、集群的Session 問題的解決方案
? ? ? ? 因為Session數(shù)據(jù)保存在單機上,當(dāng)應(yīng)用服務(wù)器變成多臺之后,要保證對用戶透明。
(1)、Session 粘貼
負載均衡器根據(jù)每次請求的Session進行轉(zhuǎn)發(fā),即保證同一Session請求都在同一臺Web 服務(wù)器上處理,那么對這個Session個體來說,與之前安單機的情況是一致的。
優(yōu)點:簡單容易實現(xiàn),有利于服務(wù)器端本地對Session進行緩存。
缺點:(a)、如果集群上有一臺服務(wù)器down,則上面的Session數(shù)據(jù)全部丟失,用戶需要重新登錄。
? ? ? ? ? ? ?(b)、負載均衡器需要解析Session的請求,開銷很大
? ? ? ? ? ? ?(c)、負載均衡器變成了有狀態(tài)的節(jié)點,內(nèi)存消耗大,容災(zāi)麻煩。
(2)、Session 復(fù)制
Web服務(wù)器進行Session數(shù)據(jù)同步,即同一個Session的數(shù)據(jù)會復(fù)制到所有的Web服務(wù)器上。
優(yōu)點:負載均衡器壓力較小。
缺點:(a)、同步Session 需要更多網(wǎng)絡(luò)通信。
? ? ? ? ? ? ?(b)、每個Web服務(wù)器都要保存所有數(shù)據(jù),內(nèi)容過多。
(3)、Session 數(shù)據(jù)集中存儲
與Session Replication類似,但Session不保存在每臺Web服務(wù)器中,而是保存在另外地方,如 Redis 數(shù)據(jù)庫等。
優(yōu)點:相比比Session 復(fù)制,網(wǎng)絡(luò)帶寬、內(nèi)存消耗都少。
缺點:(a)、讀寫Session數(shù)據(jù)必須使用網(wǎng)絡(luò)操作,存在延時和不穩(wěn)定性。
? ? ? ? ? ? ?(b)、若存儲Session的機器出現(xiàn)問題,則Web 應(yīng)用也出問題。
(4)、使用Cookie
把Session 數(shù)據(jù)放在Cookie 中,對敏感信息進行加密。
優(yōu)點:不依賴外部系統(tǒng),無時延,無穩(wěn)定性問題。
缺點:(1)、Cookie有長度限制。
? ? ? ? ? ? ?(2)、安全性:Session本應(yīng)該存在服務(wù)器端,現(xiàn)在卻放在客戶端,雖然加密,但是還是能被客戶端訪問到。
? ? ? ? ? ? ?(3)、有帶寬消耗
? ? ? ? ? ? ?(4)、性能影響:每次HTTP請求與相應(yīng)都必須帶Session數(shù)據(jù)。
在實際中,一般使用Session粘貼、Session 集中存儲。
?
轉(zhuǎn)載于:https://www.cnblogs.com/leeeee/p/7276417.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的分布式集群的Session问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: node.js--exports和mod
- 下一篇: 【R】Rstudio set up