簡單描述session共享問題

2021-10-08 13:10:43 字數 1157 閱讀 1160

我這裡提供兩種解決方案

一、使用spring-session框架

二、使用token代替session

兩種方案開展起來都比較容易,個人推薦第二種。

不過今天我要講解的是第一種。

1.引入pom

org.springframework.session<

/groupid>

spring-session-data-redis<

/artifactid>

<

/dependency>

org.apache.commons<

/groupid>

commons-pool2<

/artifactid>

<

/dependency>

redis.clients<

/groupid>

jedis<

/artifactid>

<

/dependency>

2.yml檔案加入redis配置

redis

:hostname

: 188.131.155.46

port

:6379

password

:123456

3.加入配置類

public

class

sessionconfig")

string hostname;

@value

("$"

)int port;

@value

("$"

) string password;

@bean

public jedisconnectionfactory connectionfactory()

}

實現原理:

就是當web伺服器接收到http請求後,當請求進入對應的filter進行過濾,將原本需要由web伺服器建立會話的過程轉交給spring-session進行建立,本來建立的會話儲存在web伺服器記憶體中,通過spring-session建立的會話資訊可以儲存第三方的服務中,如:redis,mysql等。web伺服器之間通過連線第三方服務來共享資料,實現session共享!

session共享問題

http協議是無狀態的 第一次訪問會生成jsessionid儲存在tomcat的concurrentmap裡伺服器,把jsessionid寫到客戶端的cookie裡面。關於cookie和session的聯絡 cookie中會包含哪些資訊 名字 值 過期時間 路徑 域 cookie會帶到http請求偷...

session共享問題

1,spring session使用的場景?httpsession是通過servlet容器進行建立和管理的,在單機環境中。通過http請求建立的session資訊是儲存在web伺服器記憶體中,如tomcat jetty。假如當使用者通過瀏覽器訪問應用伺服器,session資訊中儲存了使用者的登入資訊...

併發session共享問題

讓負載均衡器能夠根據每次的請求的會話標識來進行請求的 這樣就能保證每次都能落到同一臺伺服器上面,這種方式稱為session sticky方式。如下圖 存在問題 1.如果這一台web伺服器宕機或者重啟了,伺服器上的會話資料會丟失,使用者需要重新登陸等。2.會話標識是應用層的資訊,那麼負載均衡器要將同乙...