spring boot(学习笔记第十一课)
- Session共享,JPA实现自动RESTful
学习内容:
- Session共享
- JPA实现自动RESTful
1. Session共享
-
Session共享面临问题
-
spring boot
默认将session
保存在web server
的内存里面,会产生什么问题呢。
如上图所示,有nginx
作为服务器前置负载均衡器的时候,第一次访问将session
保存在web server 1
中的内存中,但是第二次访问的时候,假如重新定向到web server 4
的时候,将无法正确取得session
。 -
使用
redis
解决问题
使用redis
之后,使每次web server
的session
数据都保存到唯一的redis
的,这样重定向到那个web server
,最后都会从redis
的内存取得,所以每次取得和保存的session
数据都一致。
-
-
Nginx
负载均衡- 创建
nginx server
最好使用sudo -i
。注意,这里使用VMware
进行创建cd /data mkdir nginx wget https://nginx.org/download/nginx-1.27.0.tar.gz cd nginx-1.27.0 yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ ./configure make make install
- 启动
nginx server
- 如果有
process
占用80端口,通过ss -tulnp | grep :80
命令确认。 - 如果有
process
占用80端口,通过ss -tulnp | grep :80
命令确认。 - 之后定位到
$pid
,使用kill -9 $pid
结束进行。注意,这里$pid
意味需要替换的变量
- 如果有
- 尝试访问
nginx server
http://192.168.12.130/
注意,这里采用http
,不能采用https
,如何配置https
在nginx
中需要确认
- 修改
nginx.conf
配置文件upstream finlay.com{ server 192.168.12.1:8080 weight=1; server 192.168.12.1:8081 weight=1; } #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://finlay.com; proxy_redirect default; }
- 创建
-
对
spring boot
应用加入session
依赖
加入了这个依赖,spring boot
应用程序自动session
数据保存到redis
的数据库中。<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
-
配置
controller
并且去掉https
- 配置
controller
,在controller
中向session
保存信息之后从session
读取信息。@Value("${server.port}") private String port; @PostMapping("/save")</
- 配置