架构小白到砖家-18-【session共享问题】-springsession+redis实现共享session

咱们已经完成了单应用框架的整合工作,可以满足开发工作需求了,应用在上线部署之前,咱们还要解决一个系统高可用问题,需要将应用部署成集群。但是集群会引发一个新的问题,那就是用户登录使用系统,会在每个集群节点都有一个session,会导致我们无法跟踪用户会话信息。所以就需要把session进行集中管理,来解决集群session共享的问题。
在这里插入图片描述
spring已经提供了比较好的解决方案springsession模块,将session信息统一管理,需要第三方的存储服务,这里咱们选用的redis缓存服务。
所以咱们应用要实现session共享功能,需要spring整合session和redis两个模块。
在这里插入图片描述

那么咱们就开始整合工作吧。
第一步,pom文件中引用redis和session的jar

	<!-- ==共享session=== -->
		<!-- spring-boot-starter-data-redis -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
			<version>1.5.4.RELEASE</version>
		</dependency>
		<!--spring-session-data-redis -->
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-data-redis</artifactId>
			<version>1.3.5.RELEASE</version>
		</dependency>

重点注意下redis和session的版本
1.5.4.RELEASE和1.3.5.RELEASE
不然会出现找不到各种class的问题

第二步,application.properties配置redis和session的信息

# spring session使用存储类型
#spring.session.store-type=redis
# spring session刷新模式:默认on-save
#spring.session.redis.flush-mode=on-save
#spring.session.redis.namespace= 
# session超时时间,单位秒
#server.session.timeout=30

#redis
#spring.redis.host=localhost
#spring.redis.port=6379
#spring.redis.password=123456
#spring.redis.database=0
#spring.redis.pool.max-active=8 
#spring.redis.pool.max-idle=8 
#spring.redis.pool.max-wait=-1 
#spring.redis.pool.min-idle=0 
#spring.redis.timeout=0

这里给了一份详细的信息,
实际使用最小配置只需要下面给的几项

#session配置
spring.session.store-type=redis
server.session.timeout=1800
spring.session.redis.flush-mode=on-save
spring.session.redis.namespace=${app.service.name}
#redis的配置
spring.redis.host=${app.redis.host}
spring.redis.port=${app.redis.port}

这样springboot就完成了整合redis和session的功能,不需要任何其他java配置。
下面来测试一下吧。
启动咱们的两个应用,先启动一个,修改端口号后,再启动一个;
为了简单,这里就不配置nginx了,直接一个浏览器访问两个应用就行。

1000端口先登录;
在这里插入图片描述

1001端口也可以直接访问了;
在这里插入图片描述

可以看看redis中的session信息。
在这里插入图片描述

这里的两个session并不是两个应用产生的两个,而是security的安全机制,用户登录成功后,会新生成一个session,为了防止恶意会话跟踪。

回顾总结
集群部署需要解决session共享问题,spring提供了session和redis的方案,springboot整合非常方便,只需要application.properties配置信息就可以了。

单应用框架,咱们解决了很多问题:

  • 用户请求问题
  • 页面渲染问题
  • 应用配置信息问题
  • 应用日志问题
  • 数据存储问题
  • 权限管理问题
  • 密码安全问题
  • 数据源监控问题
  • 共享session问题

到这里,咱们架构单应用框架基本上就完成了,后续根据实际项目需求,将更多的精力专注到业务逻辑开发方面,提高开发效率。

当然还可以继续在此基础上,丰富框架的基础功能,咱们未来在慢慢完善。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值