在分布式環境中如何解決session共享問題

2021-08-20 22:50:54 字數 985 閱讀 3514

一、什麼是session

session在計算機中,尤其是在網路應用中,稱為」會話控制「。session物件儲存特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的web頁面之間跳轉時,儲存在session物件中的變數將不會丟失,而在整個使用者會話中一直存在下去。

二、產生session不一致原因

單台tomcat沒有任何問題,但現在是集群的tomcat因此就存在session不一致問題。如圖

三、解決方案

(1)session複製

tomcat的session複製,可以實現session共享

優點:不需要額外開發,只需搭建tomcat集群即可

缺點:tomcat 是全域性session複製,集群內每個tomcat的session完全同步(也就是任何時候都完全一樣的) 在大規模應用的時候,使用者過多,集群內tomcat數量過多,session的全域性複製會導致集群效能下降, 因此,tomcat的數量不能太多,5個以下為好。

(2)session繫結

當使用者a第一次訪問系統時,tomcat1對其進行服務,那麼,下次訪問時仍然讓tomcat1對其進行服務

(3)使用redis集中管理session

可以將使用者的會話儲存在redis中,每次從redis中查詢使用者資訊,就可以很好的解決會話共享問題。如圖:

(4)使用單點登陸解決

四、實際應用

(1)使用者登入問題

對於大型分布式系統,可以使用單點登入系統進行登入,其中使用者的session儲存在redis快取系統中

(2)使用者簡訊驗證

當需要對使用者簡訊進行校驗前,調取第三方服務獲取驗證碼,需要先將驗證碼儲存在session中,然後與使用者提交的驗證碼進行比對

分布式事務了解嗎?你們是如何解決分布式事務問題的?

只要聊到你做了分布式系統,必問分布式事務,你對分布式事務一無所知的話,確實會很坑,你起碼得知道有哪些方案,一般怎麼來做,每個方案的優缺點是什麼。現在面試,分布式系統成了標配,而分布式系統帶來的分布式事務也成了標配了。因為你做系統肯定要用事務吧,如果是分布式系統,肯定要用分布式事務吧。先不說你搞過沒有...

分布式job如何解決冪等性問題

思考 分布式job如何解決冪等性問題?1 使用分布式鎖 zk redis 保證只有一台伺服器執行job 2 使用配置檔案,配置檔案開關,加乙個配置start true或者start false,如果為true 執行job,如果為false不執行job 集群就沒有作用 3 使用資料庫唯一標識 缺點 效...

分布式環境下的解決方案 分布式鎖

分布式鎖,也就是在多程序情況下的鎖。需要有儲存鎖的空間,並且鎖的空間是可以訪問到的。鎖需要被唯一標識。鎖要有至少兩種狀態。儲存空間 鎖是乙個抽象的概念,鎖的實現,需要依存於乙個可以儲存鎖的空間。在多執行緒中是記憶體,在多程序中是記憶體或者磁碟。更重要的是,這個空間是可以被訪問到的。多執行緒中,不同的...