通常情況下,Tomcat、Jetty等Servlet容器,會預設将Session儲存在記憶體中。如果是單個伺服器執行個體的應用,将Session儲存在伺服器記憶體中是一個非常好的方案。但是這種方案有一個缺點,就是不利于擴充。
目前越來越多的應用采用分布式部署,用于實作高可用性和負載均衡等。那麼問題來了,如果将同一個應用部署在多個伺服器上通過負載均衡對外提供通路,如何實作Session共享?
實際上實作Session共享的方案很多,其中一種常用的就是使用Tomcat、Jetty等伺服器提供的Session共享功能,将Session的内容統一存儲在一個資料庫(如MySQL)或緩存(如Redis)中。
下面我們将在springcloud微服務項目中,使用redis實作簡單高效的session共享。官網:www.fhadmin.org
eureka-server:注冊中心
springcloud-session-redis:業務session所在項目
springcloud-session-zuul:路由網關
springcloud-session-redis項目
建立一個spring boot項目,命名springcloud-session-redis
pom
在application.yml中加入redis、eureka、port等配
springcloud-session-zuul項目
建立springboot項目,命名springcloud-session-zuul