1.iphash。 根據ip固定分配到某個tomcat。事實證實基本不能用。手機上網ip頻繁變化,nginx必須做爲最前端服務器,面臨關閉tomcat用戶session失效問題。前端
2,安裝nginx_upstream_jvm_route粘性模塊。 根據JSESSIONID把用戶分配到固定tomcat爲第一種方案的改進版。解決ip變化和nginx做爲非最前端服務器問題。缺點,須要編譯安裝nginx,且對版本有要求。一樣沒法解決tomcat關閉session失效問題。 點擊查看 nginx
3,使用tomcat自身的session集羣複製。 沒實踐過,據說此方案只在2到3個tomcat的時候好用,多tomcat的話因爲須要每一個tomcat都複製其餘全部tomcat的session會形成性能的嚴重降低。至於實際是否是這樣,在新版本的tomcat有沒有解決這個問題就不得而知了。redis
4,session memched mannerge把tomcat的session集中保存到memche緩存中。 此方案比較好,缺點是手動配置比較麻煩,由於使用到的jar包比較多,在配置過程發生比較多的版本衝突等問題。聯繫使用此辦法的時候使用maven下載依賴包再把所有依賴包拉到tomcat的lib下。spring
5,spring session 偉大的spring實現的解決方案,原理和上面同樣把session統一集中管理。可是他是在代碼裏面實現不依賴於tomcat容器。經過攔截器自定義了session的管理。嘗試過spring session redis只須要加入少許的jar包以及簡單的配置。固然前提是你的系統中已經使用了redis和spring一樣會有版本衝突問題,可是幸虧這些問題都是在本地開發階段就已經發現和解決。在新搭的系統框架建議使用此方案。畢竟如今redis已經成爲裝逼必須品了。什麼你的系統沒用spring?緩存
6,不使用session。 例如使用cookie代替session。但這個須要在項目開發階段就採用此方案,並且我以爲使用cookie代替session並非那麼的穩當。tomcat