日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java集群session共享_分布式/集群下session共享方案汇总

發布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java集群session共享_分布式/集群下session共享方案汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、F5 BIG-IP 硬件實現session粘性復制

F5 硬件,可以作為HTTP負載均衡器使用,可以將用戶IP與Session通過F5進行的綁定,使其Session保持一致性。是直接通過智能交換機實現負載,與系統無關。了解不多,簡單說就這么多。

2、Nginx 的ip_hash特性對訪問IP和服務器進行綁定

當某個ip下的客戶端請求指定(固定,因為根據IP地址計算出一個hash值,根據hash值來判斷分配給那臺服務器,從而每次該ip請求都分配到指定的服務器)的服務器,這樣就可以保證有狀態請求的狀態的完整性,不至于出現狀態丟失的情況。缺點: ip_hash方案必須保證Nginx是最前端的服務器(接受真實的ip),如果nginx不是最前端的服務器,還存在中間件(中間服務器什么的),那么nginx獲取的ip地址就不是真實的ip地址,那么這個ip_hash就沒有任何意義。

3、將session保存到nosql數據庫中(推薦)

這個方案有很多種方式:1、 使用框架的會話管理工具spring-session ;2、 使用shiro這種自帶session(非httpsession)的權限框架 。

可以存到redis 或者 memcache 中。

先說第一種,它替換了Servlet那一套會話管理,既不依賴容器,又不需要改動代碼,并且是用了spring-data-redis那一套連接池,可以說是最完美的解決方案。

第二種前提你的項目中用到了shiro, 需要重寫shiro的SessionDao將session存入redis來實現session共享,可以自己重寫或者找現成的(shiro-redis)。

4、使用Cookie共享session

Java Web的共用的用戶鑒權機制是采用Session-Cookie技術,實現原理是:用戶登錄時,請求到達服務器,服務器調用通過getSession()方法判斷session是否存在,如果不存在,則新建session,并通過其算法為session生成一個隨機數作為sessionId,開發者可在session中儲存一些用戶信息;第二次請求時,如獲取用戶信息,getSession()方法判斷session存在,則取出session,而不是新建,從而從session中獲取到用戶的相關信息。

客戶端請求時,可以將cookie信息儲存于request的head中發送給服務器;

服務器響應時,可以將cookie信息置于response中回傳給客戶端。

此方案可以說是獨辟蹊徑了,將分布式思想用到了極致。如上文分析所說,session-cookie機制中,session與cookie相互關聯,以cookie做中轉站,用來找到對應的session,其中session存放在服務器。那么如果將session中的內容存放在cookie中呢,那么則省略了服務器保存session的過程,后臺只需要根據cookie中約定的標識進行鑒權校驗即可。

此法, 受http協議頭長度限制,cookie中存儲的信息不宜過多 ,同時cookie在瀏覽器可以被看到,不太安全,需要進行加密處理。

至于常用的web容器,tomcat和weblogic都有自己的session共享方案,后面再研究。

總結

以上是生活随笔為你收集整理的java集群session共享_分布式/集群下session共享方案汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。