為什麼會出現session共享問題?
客戶端與伺服器互動時會產生唯一的sessionid用於標記使用者,但是在分布式架構中,如果還是採用 session 的方式,使用者發起請求,通過 nginx 做請求**時,並不知道是**到伺服器1還是伺服器2,所以就會出現session共享問題。
今天主要記錄使用 spring-session 框架解決 session 共享問題。
其主要原理就是使用 redis 記錄 session 實現session 共享。
二、**部分
1、引入依賴
org.springframework.sessiongroupid>
spring-session-data-redisartifactid>
dependency>
org.apache.commonsgroupid>
commons-pool2artifactid>
dependency>
redis.clientsgroupid>
jedisartifactid>
dependency>
3、sessionconfigredis:
hostname: 192.168
.10.180
port: 6379
password: 123456
4、nginx配置/**
* 這個類用配置redis伺服器的連線
* maxinactiveintervalinseconds為springsession的過期時間(單位:秒)
}
#user nobody;
worker_processes
1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events
server }}
分布式session共享
什麼是session 伺服器為每個使用者建立乙個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同乙個上下文。當使用者請求來自應用程式的 web 頁時,如果該使用者還沒有會話,則 web 伺服器將自動建立乙個 session 物件。當會話過期或被放棄後,伺服器將終止該會話並銷毀。分布式sessio...
shiro分布式session共享
使用nginx tomcat進行負載均衡時,希望使用輪詢方式進行負載。但是如果使用輪詢方式的話,可能會訪問不同的tomcat,此時如果不進行session共享,則相當於是乙個新的session。就比如現有系統都是需要認證登入的系統,如果沒有session共享,則會導致使用者退出登入。當我們使用了ng...
分布式如何實現session共享
我們實現的方案可以說是第二種方案和第三種方案的合體,可以利用gemfire實現session複製共享,還可以將session維護在redis中實現session共享,同時可以將session維護在客戶端的cookie中,但是前提是資料要加密。這三種方式可以迅速切換,而不影響應用正常執行。我們在實踐中...