應用伺服器集群下的session保持問題

2021-07-10 15:00:04 字數 780 閱讀 8375

在單伺服器環境中,不要考慮session問題,但是單伺服器宕機的情況會導致服務中斷,這是很多對應用服務可用性要求較高的客戶所不希望的。所以很多客戶都會提出 應用服務集群。

用兩台及以上伺服器元件集群,一般客戶會是通過 負載均衡裝置進行,如深信服、f5品牌的裝置。

可以將所有要訪問應用伺服器的請求 都通過 負載均衡裝置進行 **,由負載均衡裝置對 應用伺服器進行 輪詢,確認服務還活著,然後再將請求分配給活著的服務並記錄分配情況。

那麼會出現一種問題,我們都知道session是存在於伺服器端,通過負載均衡裝置在不設定的情況下進行分發請求是隨機指定伺服器。也就是說 乙個客戶端 一開始訪問是 是a伺服器 ,session是由伺服器a生成,如果客戶端下次的請求被分配到b伺服器上,因為session的確認,就需要客戶重新進行登入,這當然很不方便了。

無論是使用物理的分發裝置還是 類似於apache、ngix軟裝置解決這種問題需要進行會話保持處理,主要有兩個方法:

session-sticky 粘性會話,即通過負載均衡裝置分發時,可以根據客戶端的位址指定 它所訪問的伺服器,如使用者甲 訪問服務,負載均衡裝置會隨機分發到活著的服務a,然後建立起 使用者甲與服務的對應關係,在會話有效期內使用者甲的訪問都會只被分配到a,這樣就保證了session的連續可用。

session-replication 複製會話資訊,即設定應用伺服器中介軟體通過**session資訊,實現session的共享,在a、b兩台伺服器都會持有對應的session資訊,這個在tomcat中介軟體中有特殊的配置可以實現。

應用伺服器集群Session管理

應用伺服器的高可用架構設計主要基於服務無狀態這一特性,但事實上,業務總是有狀態的,在交易類的電子商務 需要有購物車記錄使用者的購買記錄,使用者每次購買請求都是向購物車中增加商品來社交類 中,需要記錄使用者當前登陸狀態 最新發布的訊息及好友狀態等,使用者每次重新整理頁面都需要更新這些資訊。web應用中...

應用伺服器集群的session管理

首先,我們知道,http是無狀態的協議,應用伺服器不儲存業務的上下文資訊,而是進根據每次提交的資料進行相應的業務邏輯處理,因此所有的服務期完全對等,乙個請求由哪個伺服器來處理都是一樣的。因此,為了保證 的高可用,我們可以部署多個web伺服器,通過負載均衡的手段來緩解伺服器壓力 同時乙個伺服器掛掉了,...

應用伺服器集群的session管理

1 什麼是session a web應用中將這些多次請求修改使用的上下文物件稱作會話 session b session 物件儲存特定使用者會話所需的資訊。這樣,當使用者在應用程式的 web 頁之間跳轉時,儲存在 session 物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。c 當使用...