1. 程式人生 > >應用服務器集群的session管理

應用服務器集群的session管理

服務器 應用程序 session 上下文

1、什麽是session

a、web應用中將這些多次請求修改使用的上下文對象稱作會話(session)

b、Session 對象存儲特定用戶會話所需的信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

c、當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄後,服務器將終止該會話


2、session的應用場景

在高可用的架構中,業務總是有狀態的,比如電商交易類平臺中,需要有購物車記錄用戶的購買信息;在社交類的網站中,需要記錄用戶的當前登陸狀態、最新發布的消息及好友狀態等,用戶每次刷新頁面都需要更新這些信息


3、session管理的幾種手段

a)session復制

應用服務器開啟web容器的session復制功能,在集群中幾臺服務器之間同步session對象,使得每臺服務器上都保存所有用戶的session信息

較大規模的情況下(session復制就會顯得不足了)

技術分享

b)session綁定

ession綁定可以利用負載均衡的源地址Hash算法實現,負載均衡服務器總是將來源於同一個IP的請求分發到同一臺服務器上,顯然session綁定不符合我們對系統高可用的要求,因為一旦服務器宕機,那麽該機器上的session就不復存在了

優點:實現簡單、配置方便、沒有額外網絡開銷

缺點:網絡中有機器Down掉時、用戶Session會丟失、容易造成單點故障

技術分享

c)利用cookie記錄session

說明:網站沒有客戶端,可以利用瀏覽器支持的cookie記錄session(事實上,許多網站或多或少地使用cookie記錄session)

不足:

  • 受cookie大小限制,能記錄的信息有限

  • 每次響應請求都要傳輸Cookie,影響性能

  • 如果用戶關閉cookie,訪問就會不正常

技術分享


d)session服務器

  • 利用獨立部署的服務器(集群)統一管理session

  • 應用服務器的狀態分離,分為無狀態的應用服務器和有狀態的session服務器

  • 對於有狀態的session服務器:分布式緩存+數據庫等

  • 業務場景要求高的情況下,利用session服務集成單點登錄(SSO)、用戶服務等功能,或者開發專門的session服務管理平臺

技術分享

本文出自 “冰凍vs西瓜” 博客,請務必保留此出處http://molewan.blog.51cto.com/287340/1930803

應用服務器集群的session管理