分佈式session共享的幾種實現方案

單個服務時不會出現session共享的問題,分佈式服務時就需要考慮多個web容器之間的session共享問題,如果沒有考慮session問題,就會導致很多問題,例如用戶請求落到沒有session的容器上就會出現重新登錄的情況。常見的解決方案有以下幾種:

1.session複製,啓用web容器的session複製功能,同步多個web容器內的session,即使其中一個掛了,可從其他容器內獲取,默認都是從當前容器獲取session

2.session綁定,例如通過nginx的ip_hash綁定ip到容器,但是這樣有個問題就是一個容器掛掉的時候容器內的session就沒了,可能導致服務異常,而且不符合分佈式的思想

3.使用cookie記錄session,客戶端發送請求時,服務端把更新後的session放在cookie返回給客戶端,但是這樣有兩個弊端,一定cookie的容量有限,數據量不能太大;另一個是如果客戶端關閉cookie就無法記錄最新session

4.session服務器,將session存儲在單獨的服務器上。例如使用memcached,redis分佈式數據庫,在其基礎上進行包裝使其符合session的儲存和訪問要求。將無狀態的應用服務器和有狀態的session服務器分開部署,客戶端請求session時,應用服務器再請求session服務器。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章