tomcat session共享經常使用的幾種方式web
例如基於訪問ip的hash策略,即當前用戶的請求都集中定位到一臺服務器中,這樣單臺服務器保存了用戶的session登陸信息, 若是宕機,則等同於單點部署,會話會丟失,會話不復制。redis
如tomcat自帶session共享,主要是指集羣環境下,多臺應用服務器之間同步session,使session保持一致,對外透明。
若是其中一臺服務器發生故障,根據負載均衡的原理,調度器會遍歷尋找可用節點,分發請求,因爲session已同步,故能保證用戶的session信息不會丟失,會話複製。
此方案的不足之處:
必須在同一種中間件之間完成(如:tomcat-tomcat之間).
session複製帶來的性能損失會快速增長.特別是當session中保存了較大的對象,並且對象變化較快時, 性能降低更加顯著,會消耗系統性能。 這種特性使得web應用的水平擴展受到了限制。 Session內容經過廣播同步給成員,會形成網絡流量瓶頸,即使是內網瓶頸。
在大併發下表現並很差。緩存
基於 memcache/redis緩存的 session 共享
即便用cacheDB存取session信息,應用服務器接受新請求將session信息保存在cache DB中,當應用服務器發生故障時,調度器會遍歷尋找可用節點, 分發請求,當應用服務器發現session不在本機內存時,則去cacheDB中查找,若是找到則複製到本機,這樣實現session共享和高可用。tomcat
https://www.jb51.net/article/124641.htm服務器
須要注意的是不管是方案2仍是方案3 都須要對要保存到session的對象進行序列化。網絡