天天看點

應用伺服器叢集的Session管理(下)3 利用Cookie 記錄Session4 Session伺服器

3 利用Cookie 記錄Session

早期系統使用C/S架構,一種管理Session的方式是将Session記錄在用戶端,每次請求伺服器的時候,将Session放在請求中發送給伺服器,伺服器處理完請求後再将修改過的Session響應給用戶端

如今的B/S架構,網站沒有用戶端,但是可以利用劉覽器支援的Cookie記錄Session

應用伺服器叢集的Session管理(下)3 利用Cookie 記錄Session4 Session伺服器

3.1 缺點

  • 受Cookie大小限制,能記錄的資訊有限
  • 每次請求響應都需要傳輸Cookie,影響性能
  • 如果使用者關閉Cookie,通路就會不正常

但是

3.2 優點

由于Cookie的

  • 簡單易用
  • 可用性高
  • 支援應用伺服器的線性伸縮
  • 而大部分應用需要記錄的Session 資訊又比較小

是以事實上,許多網站都或多或少地使用Cookie記錄Session。

4 Session伺服器

那麼有沒有可用性高、伸縮性好、性能也不錯,對資訊大小又沒有限制的伺服器叢集Session管理方案呢?

答案就是Session伺服器!利用獨立部署的Session伺服器(叢集)統一管理Session,應用伺服器每次讀寫Session時,都通路Session伺服器

應用伺服器叢集的Session管理(下)3 利用Cookie 記錄Session4 Session伺服器

這種方案事實上是将應伺服器的狀态分離,分為

  • 無狀态的應用伺服器
  • 有狀态的Session伺服器

然後針對這兩種伺服器的不同特性分别設計其架構

對于有狀态的Session伺服器,一種比較簡單的方法是利用

分布式緩存

即使用cacheDB存取session資訊,應用伺服器接受新請求将session資訊儲存在redis中,當應用伺服器發生故障時,web伺服器會周遊尋找可用節點,分發請求,當應用伺服器發現session不在本機記憶體時,則去redis中查找,如果找到則複制到本機,這樣實作session共享和高可用。

應用伺服器叢集的Session管理(下)3 利用Cookie 記錄Session4 Session伺服器

資料庫等

在這些産品的基礎上進行包裝,使其符合Session 的存儲和通路要求。如果業務場景對Session 管理有比較高的要求,比如利用Session 服務內建單點登入(SSO)、使用者服務等功能,則需要開發專門的Session服務管理平台。