SESSION
是服務器爲客戶端建立的一個會話,存儲用戶的相關信息,用以標識用戶身份等。在單服務器環境下是不須要考慮會話的一致性的問題的,可是在集羣環境下就會出現一些問題,假如一個用戶在登陸請求時負載均衡到了A
服務器,A
服務器爲其分配了SESSION
,下次請求數據時被分配到了B
服務器,此時因爲B
服務器不存在此用戶的SESSION
,此用戶會被重定向到登陸頁面,這種狀況是不合理的業務邏輯,因此須要維護SESSION
的一致性。html
多個服務器之間互相同步SESSION
,即A
服務器生成一個SESSION
信息後同步傳輸到B
、C
、D
等服務器,一樣B
、C
、D
服務器生成SESSION
信息後也須要同步到A
,這樣每一個服務器之間都包含所有的SESSION
sql
SESSION
複製的功能來實現集羣SESSION
須要網絡傳輸進行同步,其會佔用帶寬,而且存在必定的延遲SESSION
信息有所變化,必須同步更新全部服務器SESSION
內容經過將負載均衡服務器進行修改,經過對返回給用戶的SESSION ID
或者用戶請求的IP
地址進行標記,也就是使用第四層傳輸層中讀取網絡層的IP
或者是在第七層中讀取HTTP
協議中某些屬性來作HASH
,保證對於此用戶的請求所有落到同一臺服務器上數據庫
將數據直接存儲到客戶端好比Cookie
或請求頭中,每次請求客戶端自動攜帶數據信息後端
將SESSION
存儲在一臺單獨的服務器中的數據庫中,例如Mysql
、Oracle
、SqlServer
、Redis
、Mongodb
等等,各SERVER
服務器須要用戶信息時攜帶SESSION ID
對於集中存儲服務器進行請求,進而獲取用戶信息安全
SERVER
服務器重啓不會形成SESSION
丟失https://www.jianshu.com/p/5caed857dc3e https://www.cnblogs.com/study-everyday/p/7853145.html