SpringBoot__使用 Spring Session实现Session共享

SpringBoot__使用 Spring Session实现Session共享

什么是Session共享?
在传单体架构中,只有一台服务端,所以它的session无需共享;但是在分布式/集群的项目中,客户端发送请求,代理服务器转发请求到上游服务器A上,上游服务器A保存了session,
而这时上游服务器B需要用到这个session,而这个session在上游A里保存的,所以这时就会需要Session共享这样的需求。

解决方案:
在这里插入图片描述

在途中,我们添加了一个缓存服务器,把各个上游服务器之间需要共享的信息保存到这个缓存服务器中去,需要的时候就去缓存服务器中取。

这里的客户端可以理解为类似浏览器等可以发送Http请求的终端,而代理服务器可以理解为类似Nginx等代理服务器,上游服务器也可以叫做real服务器,可以理解为我们常用的Tomcat、Jboss等服务器,缓存服务器常有的有Redis。

那我们使用SpringBoot使用 Spring Session实现Session共享小demo

依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
    </dependency>
</dependencies>

在配置文件中配置redis的一些设置

spring.redis.host=192.168.66.128
spring.redis.port=6379
spring.redis.password=123
spring.redis.database=0

Controller

/**
 * @author ZSL
 * @ClassName RedisController
 * @description
 * @date 2019/8/12
 */
@RestController
public class RedisController {

    @Autowired
    RedisService redisService;

    @Value("${server.port}")
    Integer port;

    @GetMapping("/h")
    public void helle(){
        redisService.hello();
    }


    @GetMapping("/h2")
    public void helle2(){
        redisService.hello2();
    }


    @GetMapping("/ss")
    public String setSession(HttpSession session){
        session.setAttribute("zsl","zsltest");
        return String.valueOf(port);
    }

    @GetMapping("/gs")
    public String getSession(HttpSession session){
        session.getAttribute("zsl");
        return String.valueOf(port);
    }

}

这里使用是HttpSession,而且其他的 Session 同步到 Redis 等操作,框架已经自动做了,很方便。

这里我们将项目打包,使用两个不同端口号的Tomcat来运行测试。

你可以通过Nginx的方式在集群中进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值