解決方法
- Session Sticky
讓負(fù)載均衡器能夠根據(jù)每次的請(qǐng)求的會(huì)話標(biāo)識(shí)來(lái)進(jìn)行請(qǐng)求的轉(zhuǎn)發(fā),這樣就能保證每次都能落到同一臺(tái)服務(wù)器上面锡垄。 - Session Replication
即 session 復(fù)制,一般應(yīng)用容器都支持 Session Replication 的方式。這種方式開(kāi)銷大,只適合幾臺(tái)機(jī)器的場(chǎng)景邪蛔。 - Session數(shù)據(jù)集中存儲(chǔ)
是對(duì)方案 2 的優(yōu)化,Session數(shù)據(jù)不保存到本機(jī)而且存放到一個(gè)集中存儲(chǔ)的地方扎狱,如 redis侧到。 - Cookie Based
所有 session 數(shù)據(jù)放在 cookie 中。
每種方式的具體原理及優(yōu)缺點(diǎn)淤击,可以查看附錄1. 可以發(fā)現(xiàn)匠抗, 大多數(shù)情況下,方法 3 最優(yōu)污抬。
session基于redis共享有兩種基本的方案
基于容器自身的擴(kuò)展汞贸,比如tomcat的session-manage,以及
https://github.com/jcoleman/tomcat-redis-session-manager.基于spring-session的方案. spring-session的好處不僅僅是session共享印机,它還可以與容器解耦矢腻,應(yīng)用于多終端session共享,websocket射赛,restful api等場(chǎng)景多柑。
環(huán)境
- jdk 8 意味著老的 jar 包不能用
- tomcat 8.5
- spring 5
- spring boot 2
- maven 依賴管理。建立公司內(nèi)部的私服楣责。
技術(shù)選型要有一定的前瞻性竣灌,帶來(lái)的好處大于學(xué)習(xí)成本诫隅。
參考資料
- 分布式集群Session共享 http://blog.csdn.net/jerome_s/article/details/52658946
- 單點(diǎn)登錄實(shí)現(xiàn)(spring session+redis完成session共享)
https://www.cnblogs.com/hujunzheng/p/6395966.html - 使用nexus3搭建私有倉(cāng)庫(kù) http://www.reibang.com/p/dbeae430f29d