網站建設制作設計營銷公司四川/寧波seo網絡推廣優(yōu)質團隊
在http訪問請求中,web服務器會自動為同一個瀏覽器的訪問用戶自動創(chuàng)建唯一的session,提供數據存儲功能。最常見的,會把用戶的登錄信息、用戶信息存儲在session中,以保持登錄狀態(tài)。
只要用戶不重啟瀏覽器,每次http短連接請求,理論上服務端都能定位到session,保持會話。
當只有一臺web服務器提供服務時,每次http短連接請求,都能夠正確路由到存儲session的對應web服務器。
多臺web服務器來保證高可用時,每次http短連接請求就不一定能路由到正確的session了。假設用戶包含登錄信息的session記錄在第一臺web服務器上,而反向代理將之后的請求路由到另一臺web服務器上了,這樣就找不到已登錄的session相關信息,而導致用戶需要重新登錄。
可以用以下幾種方法處理:
1、session同步法
多個web服務器之間相互同步session,這樣每個web服務器之間都包含全部的session。
問題:session的同步需要數據傳輸,占內網帶寬,有時延
2、客戶端存儲法
服務端存儲所有用戶的session,內存占用較大,可以將session存儲到瀏覽器cookie中,每個端只要存儲一個用戶的數據了。
問題:數據存儲在端上,并在網絡傳輸,存在泄漏、篡改、竊取等安全隱患
3、反向代理hash一致性
反向代理層使用用戶ip來做hash,以保證同一個ip的請求落在同一個web服務器上。
4、后端統(tǒng)一存儲
采用redis、memcache、mysql統(tǒng)一存儲session.