我在分布式session上的一些實踐

2021-08-02 09:08:59 字數 632 閱讀 1844

這篇文章大致講解了用nginx+tomcat+spring+redis實現分布式session。

由於nginx的多程序模式以及事件驅動, 它作為乙個web伺服器的效能是相當好的。 至於怎麼用它來做反向**,只需要很簡單的配置nginx.conf檔案的以下部分並且重啟nginx即可:

server ip1:port;

server ip2:port;

}server

} 這裡的ip1, ip2以及port就是你的兩台tomcat的位址。

tomcat缺省會把session儲存在記憶體中,一方面限制了最大session數量,另一方面又阻礙了做分布式拓展。 乙個解決方案就是用redis或者別的資料庫來持久化session。

在springmvc中的實現就很簡單了,只要在spring配置檔案中配置以下的bean即可:

這個配置是什麼意思呢?

首先前3個bean配置了對redis的連線和訪問,我們可以在**中直接用redistemplate去操作redis。

最後乙個bean的作用是配置web 容器(在這裡是tomcat)對session的管理方法。

分布式session共享

為什麼會出現session共享問題?客戶端與伺服器互動時會產生唯一的sessionid用於標記使用者,但是在分布式架構中,如果還是採用 session 的方式,使用者發起請求,通過 nginx 做請求 時,並不知道是 到伺服器1還是伺服器2,所以就會出現session共享問題。今天主要記錄使用 sp...

session分布式處理

在支援session複製的web伺服器上,通過修改web伺服器的配置,可以實現將session同步到其他web伺服器上,達到每個web伺服器上都儲存一致的session。1.優點 上不需要做支援和修改。2.缺點 需要依賴支援的web伺服器,一旦更換成不支援的web伺服器就不能使用了,在資料量很大的情...

分布式session共享

什麼是session 伺服器為每個使用者建立乙個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同乙個上下文。當使用者請求來自應用程式的 web 頁時,如果該使用者還沒有會話,則 web 伺服器將自動建立乙個 session 物件。當會話過期或被放棄後,伺服器將終止該會話並銷毀。分布式sessio...