博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【springboot】 spring session 分布式会话共享
阅读量:6257 次
发布时间:2019-06-22

本文共 1769 字,大约阅读时间需要 5 分钟。

  hot3.png

设计拓扑图

前言

如上图,是一个非常传统的服务端拓扑结构,一个web请求,经过负载均衡的转发,到不同的服务器处理。那么来自同一用户的请求将有可能被负载分发到不同的实例中去,如何保证不同实例间Session共享成为一个不得不解决的问题。 Spring Session作为Spring社区官方推荐的一个比较简单快速的Java Web分布式session解决方案,帮我们搞定了长期以来比较蛋疼的session分布式的问题。

搭建spring boot整合spring session

1. 加入Redis和spring-session的依赖

org.springframework.boot
spring-boot-starter-data-redis
org.springframework.session
spring-session

2. application配置

spring:  session:    store-type: redis

。。。到这里就配置完毕了,如果你的redis 不是默认配置,还要配置一下redis咯,当然spring-session 也支持更多的存储方式,具体参考文档

3. 配置nginx.conf

http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    #keepalive_timeout  0;    keepalive_timeout  65;	upstream spring-session {		server 127.0.0.1:8081; 		server 127.0.0.1:8082; 		server 127.0.0.1:8083;	}    server {        listen       80;        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            proxy_pass http://spring-session;			proxy_set_header Host $host; 			proxy_set_header X-Real-IP $remote_addr; 			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         }    }}

3. 体验一下所谓的分布式会话共享

java -jar ./springboot-session-0.0.1-SNAPSHOT.jar --spring.profiles.active=8081java -jar ./springboot-session-0.0.1-SNAPSHOT.jar --spring.profiles.active=8082java -jar ./springboot-session-0.0.1-SNAPSHOT.jar --spring.profiles.active=8083

负载均衡下的session

注意看动图路由到不同服务后SessionID 情况

负载均衡下的session

会发现,无论转发到那个节点处理SessionId 不会变化。

4. 最后来看看Session在Redis里面数据结构

image

配置过程一些坑

配置Nginx的时候,注意要注释ip_hash,不然通一个IP的请求,会被转发到通一个服务里面。

upstream spring-session {    # ip_hash	server 127.0.0.1:8081; 	server 127.0.0.1:8082; 	server 127.0.0.1:8083;}

转载于:https://my.oschina.net/giegie/blog/1517456

你可能感兴趣的文章
解决mysql数据库大小写敏感问题
查看>>
PPT制作技巧
查看>>
《.NET最佳实践》与Ext JS/Touch的团队开发
查看>>
jsp页面组成
查看>>
LCS记录
查看>>
C++开源跨平台类库集
查看>>
everything搜索工具小技巧
查看>>
一个 Sql语句优化的问题- STATISTICS 统计信息
查看>>
你不知道的KVO的内部实现
查看>>
转】MyEclipse10安装Log4E插件
查看>>
windows server2012r2 安装NET Framework 3.5
查看>>
vss整合配置连接到Myeclipse中以及中文配置
查看>>
[osg][osgEarth][原]基于OE自定义自由飞行漫游器(初级版)
查看>>
Java遇见HTML——JSP篇之JSP基础语法
查看>>
导出一个数据库中的表中的某一条数据
查看>>
JQuery初体验
查看>>
全球顶级黑客对决AI GeekPwn2017黑客大赛看点全面曝光
查看>>
浅析前端开发中的 MVC/MVP/MVVM 模式
查看>>
年末的简单回想
查看>>
让JFinal的Controller的getModel方法支持不加前缀的变量名,方便extjs等使用
查看>>