1.Session复制
让两个服务器之间互相同步Session,小型系统使用,在大型分布式系统下不适用
2. 客户端存储
3.hash一致性
同一个hash后的ip落到同一个服务器上
4.统一存储
让Session统一存储在中间件或者数据库中,不存在内存中
Spring整合SpringSession
1.导入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2.添加配置
server:
port: 20000
servlet:
session:
timeout: 30m
redis:
host: 101.43.122.84
password: xinpeng1
port: 6379
session:
store-type: redis
3.启动类添加@EnableRedisHttpSession
注解,整合redis作为session存储
4.session存到了redis中
5.自定义session
两个服务需要共享session的都需要此配置,可以放在common中
package cn.cloud.xmall.auth.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
/**
* @Description: springSession配置类
* @Created: with IntelliJ IDEA.
* @author: 夏沫止水
* @createTime: 2020-06-29 13:36
**/
@Configuration
public class GulimallSessionConfig {
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
//放大作用域
cookieSerializer.setDomainName("xmall.com");
cookieSerializer.setCookieName("XPSESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
//redis中存储JSON
return new GenericJackson2JsonRedisSerializer();
}
}