【SpringBoot14】SpringBoot中使用Session共享实现分布式部署

2023-05-16

我们知道,在单体项目中,我们将用户信息存在 session 中,那么在该 session 过期之前,我们都可以从 session 中获取到用户信息,通过登录拦截,进行操作
但是分布式部署的时候,我们请求的服务器可能不是同一台服务器,那么我们就必须要面对 session 共享的问题,下面介绍的是在 SpringBoot 实现 session 共享的方式

一、创建项目
创建 SpringBoot 项目,选择 Maven 依赖

 

 最终 pom.xml 文件如下:

<!-- redis的依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- web的依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- session共享的依赖 -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>

二、配置 Redis

我们需要借助 redis 实现session 共享,所以我们需要在配置文件中配置 redis 的信息

server:
  port: 8080

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
    password:

我们配置了该项目的端口,以及 redis 的连接信息

三、写接口

 

package com.zyxx.session.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

@RestController
public class DemoController {

    /**
     * 获取项目端口
     */
    @Value("${server.port}")
    private String port;

    /**
     * 将信息存放在session中
     */
    @GetMapping("set")
    public String set(HttpSession session) {
        session.setAttribute("user", "hello world~~~");
        return port;
    }

    /**
     * 从session中获取信息
     */
    @GetMapping("get")
    public String get(HttpSession session) {
        return session.getAttribute("user") + " : " + port;
    }
}

我们写了一个 set,一个 get 方法,将信息存放在 session 中,从 session 中取出信息

四、打包测试

 启动项目,分别启动在两个端口:

java -jar .\session-0.0.1-SNAPSHOT.jar --server.port=8080
java -jar .\session-0.0.1-SNAPSHOT.jar --server.port=8081

分别启动在 8080,8081端口

访问:http://localhost:8080/set

在这里插入图片描述

 

我们从 8080 端口,将信息保存在 session 中

我们访问:http://localhost:8081/get

在这里插入图片描述

 

我们在 8081 端口的项目中从 session 中取出了内容:hello world~~~

由此证明,我们的 session 共享已经成功

五、分布式部署
下面我们借助 nginx 代理转发访问这两个项目

1、配置转发
nginx 配置文件如下:

 主要配置内容:

upstream helloworld{
	server 127.0.0.1:8080 weight=1;
	server 127.0.0.1:8081 weight=2;
}

这里配置转发到 8080,8081 端口,并配置了权重

location / {
	proxy_pass http://helloworld;
    #root   html;
    #index  index.html index.htm;
}

 

拦截本地的所有请求,默认端口为 80

2、启动 nginx

nginx -s reload

3、访问测试

我们先删除 redis 里面刚刚测试保存的信息

 然后我们访问:

http://localhost/set

set

 这里我们可以看出,由 8080 端口的服务器完成了 set 请求,多次访问,nginx 将会根据什么配置的权重参数分配服务器来完成操作

下面我们访问:

http://localhost/get

get

 

可以看出,由 8081 端口的服务器完成了 get 请求,并成功取到了存在 session 中的数据,实现了 session 共享

六、总结
1、以前我们在 SSM 架构的项目中实现 session 共享,需要配置三个地方 ,一个是 web.xml 配置代理过滤器,然后在 Spring 容器中配置 Redis,最后再配置 Spring Session,相比 SpringBoot,稍有复杂
2、我们在 SpringBoot 中实现 session 共享还是非常简单的,只需要引入依赖,简单配置即可实现
3、实现 session 共享,帮助我们将项目分布式部署,提升服务性能有很大的意义
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SpringBoot14】SpringBoot中使用Session共享实现分布式部署 的相关文章

  • 学习实践1]docker中安装gitLab,gitLab报错502,初始密码设置

    1 安装启动Docker 1 1 安装docker 1 2 3 4 5 6 7 8 9 10 1 yum包更新 yum update 2 安装需要的软件包 xff0c yum util 提供yum config manager功能 xff0
  • DSO(5)——零空间的计算与推导

    写在前面 这部分的代码着实很难 xff0c 一方面论文中几乎没有提这个事情 xff0c 另一方面这部分的参考资料也确实是比较少 xff0c 网上能搜索到的基本都是讨论FEJ对零空间的保持问题 xff0c 所以笔者在看这一部分的时候 xff0
  • Cartographer ROS安装记录

    Reference https google cartographer ros readthedocs io en latest compilation html building installationhttps github com
  • PyCharm无法引用matplotlib的问题解决方案

    序 笔者今天用PyCharm安装了一些数据分析的时候比较有用的模块 xff0c 系统是ubuntu xff0c 说实话 xff0c ubuntu xff08 linux xff09 在这方面还真是很方便 xff0c 几条语句就把这几个模块下
  • ubuntu下安装CLion并激活,亲测好用

    写在前面 最近因为重新装了虚拟机 xff0c 各种软件都重装了一遍 xff0c 恨下心都使用了最新的版本 xff0c 但是有一个很严重的弊端就是资料少啊 xff1a 本帖就是在ubuntu14 04下的Clion 2017 3 2的安装 x
  • ROS与GAZEBO实时硬件仿真(3)——将gazebo和ros连接起来

    写在前面 通过上两节的博客 xff0c 相信朋友们已经对gazebo的一些标签有了较为深入的认识 xff0c 但是特别是上一节 xff0c 程序写完了之后发现并没有什么特别的变化 着实 xff0c 到目前为止 xff0c 我们只是很执拗的在
  • VSCode使用Remote VSCode插件进行远端文件同步

    写在前面 最近在云端申请了服务器进行DL训练 xff0c 使用ssh的方式进行远端的登陆 xff0c 但是两端的代码同步是一个比较大的问题 xff0c 当然 xff0c 最笨的方法可以双端走git的方式进行 xff0c 但是其实这样也好麻烦
  • lin通信过程的理解

    uart接收和发送消息时 xff0c 都会产生中断 xff0c 即产生中断信号 xff0c 运行一次中断服务函数 中断函数中根据寄存器的标志位 xff0c 首先判断是否收到头部报文 xff0c 再 根据PID判断是lin传送还是lin接受
  • ESKF(error-state Kalman Filter)总结

    写在前面 前段时间看了一下ESKF的相关知识 xff0c VIO中 xff08 VINS xff09 用的还是挺多的 xff0c 特此总结 先验知识 四元数 四元数的基本表示形式 xff0c 这个还是蛮重要的 xff0c 主要有以下几种表示
  • AI-IMU Dead-Reckoning论文总结

    AI IMU Dead Reckoning Martin 论文出处 论文 xff1a https arxiv org abs 1904 06064 代码 xff1a https github com mbrossar ai imu dr 整
  • Unity VR游戏开发干货教程:优化VR体验

    简介 对于VR应用来说 xff0c 如果想要让用户获得好的用户体验 xff0c 特别是免除恶心眩晕的困扰 xff0c 在VR开发中进行优化是必不可少的 xff0c 惟其如此才能达到我们期望的游戏运行帧速 和其它平台上的开发不同 xff0c
  • kali-linux docker桌面版部署

    Dockerfile 构建镜像参考 kali desktop kali docker 桌面版Dockerfile 部署方式 docker run privileged name kali desktop p 5901 5901 p 6080
  • C语言isalpha函数介绍、示例和实现

    文章目录 1 包含头文件2 函数声明3 功能说明4 示例5 自定义的isalpha函数的实现方法6 获取视频教程7 版权声明 isalpha函数用于判断字符是否为字母 xff08 a z和A Z xff09 在本文中 xff0c 我们先来介
  • C语言isalnum函数介绍、示例和实现

    文章目录 1 包含头文件2 函数声明3 功能说明4 示例5 自定义的isalnum函数的实现方法6 获取视频教程7 版权声明 C语言isalnum函数用于判断字符是否为字母 xff08 a z和A Z xff09 或数字 xff08 0 9
  • 企业对C/C++程序员的技能要求

    一个人应该具备对事物的思考能力 xff0c 否则容易被忽悠 对大部分未入门或刚入门的菜鸟来说 xff0c 很难搞明白C语言能做什么和C程序员在做什么这两个问题 如果你打算种菜 xff0c 必须先了解行情 xff08 包括销量和价钱 xff0
  • HBase详解(对hbase集群搭建、读写流程、hbase的javaApi等细致入微的讲解与保姆级的图解)

    学HBase的意义是什么 我本想用MySQL来与HBase作比较 xff0c 但发现他们两者毫无可比性 xff0c 因为两者运用领域不同 xff0c 各自有各自的优点 xff0c 就好比爬山穿登山鞋 xff0c 潜水穿脚蹼一般 一门技术的兴
  • 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2” 原因

    使用VS2012版本引用外部的lib进行编译时候提示 xff1a 1 gt libprotobuf lib common obj error LNK2038 检测到 ITERATOR DEBUG LEVEL 的不匹配项 值 0 不匹配值 2
  • 写给大侄女

    老姑从你上高中开始 xff0c 就想写点东西给大侄女看 xff0c 不过老姑理科出身 xff0c 文笔比较差 不知道该不该提你在学校看手机的事情 xff0c 老姑没有责备你的意思 xff0c 只是和你探讨一下 xff0c 毕竟谁没有年轻的时
  • centos安装lspci工具

    背景 由于centos6 3迷你安装版上没有带lspci工具 在定制内核时 无法用此工具查询硬件相关信息 具体步骤如下 1 下载 pci包 xff1a http www kernel org pub software utils pciut
  • 软件性能测试方法论

    软件性能测试过程详解与案例分析 xff08 段念 编著 xff09 学习笔记三 1 SEI负载测试计划过程 SEI load Testing Planning Process是一个关注于负载测试计划的方法 xff0c 其目标是产生 清晰 易

随机推荐

  • 2011年总结&2012年展望

    再有几天就2012了 xff0c 工作三年多了 xff0c 之前也没写过总结 xff0c 感觉总结这东西写写也挺好的 xff0c 可以思考下过去和未来 xff0c 留个底 xff0c 可以作为日后的对比 xff1b 总结我的2011年 xf
  • Linux查看端口使用状态、关闭端口方法

    前提 xff1a 首先你必须知道 xff0c 端口不是独立存在的 xff0c 它是依附于进程的 某个进程开启 xff0c 那么它对应的端口就开启了 xff0c 进程关闭 xff0c 则该端口也就关闭了 下次若某个进程再次开启 xff0c 则
  • 查找列表中某个值的位置(python)

    p 61 list index value list为列表的名字 value为查找的值 p为value在list的位置 以下内容引自 xff1a http www linuxidc com Linux 2012 01 51638 htm P
  • python 等待一定时间后继续执行其后的程序

    简单示例 xff1a import time print 39 11 39 time sleep 10 print 39 22 39 先打印11 xff0c 等待10秒后 xff0c 打印22
  • Linux下用于查看系统当前登录用户信息的4种方法

    作为系统管理员 xff0c 你可能经常会 xff08 在某个时候 xff09 需要查看系统中有哪些用户正在活动 有些时候 xff0c 你甚至需要知道他 xff08 她 xff09 们正在做什么 本文为我们总结了4种查看系统用户信息 xff0
  • TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义

    TCP SYN ACK FIN RST PSH URG简析 三次握手Three way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1 B gt SYN gt A 假如服务器A和客户机B通讯 当A要和B通信时 xff0c
  • [转载]一次 JMeter 脚本请求错误 HTTP Status 415 的解决笔记

    录制好脚本以后 xff0c 使用 JMeter 打开 xff0c 直接运行测试 xff0c 发现有个 Ajax 提交表单的时候出错了 服务器返回信息如下 xff1a HTTP Status 415 type Status report me
  • python list转换字符串报错TypeError: sequence item 0: expected str instance, int found

    今天敲小例子 xff0c 报了错TypeError sequence item 0 expected str instance int found 小例子 xff1a list1 61 1 39 two 39 39 three 39 4 p
  • Linux下使用 xrandr 命令设置屏幕分辨率

    最近在Linux下修改屏幕分辨率的时候 xff0c 发现了一个非常有用的命令 xff1a xrandr 使用这个命令 xff0c 可以方便的设置您显示器的的分辨率 尤其是当你使用了一些需要或者会自动改动您屏幕分辨率的程序以后 您可以使用如下
  • windows7触屏编程

    每当用户触摸触敏式 Windows 7 设备时 xff0c Windows 7 多点触控平台都会向您的应用程序发送手势消息 WM GESTURE 这是现成的免费行为 xff0c 如果您希望停止接收此类消息 xff0c 则需要选择退出 手势被
  • 工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend

    工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend 1 软件概述 DotTrend是一款全新设计开发的软件 xff08 原创 xff09 xff0c 理论上可用于监控所有遵守Modbus标准协议的设备 xff0c 便于开发
  • 串口设备模拟器DevSimulate

    万能串口设备模拟器 DevSimulate xff08 支持Modbus及自定义协议 xff09 DevSimulate是一款可以在电脑上模拟一个或多个从设备的串口工具软件 xff0c 并且可以通过设计数学公式对任意点位进行逻辑关系的自定义
  • 工业级串口Modbus曲线记录监控工具——DotTrend

    工业级串口Modbus数据曲线记录监控工具 DotTrend 1 软件版本更新 自Modbus点位数据监控曲线DotTrend推出以来 xff0c 极大方便了工程技术人员的日常研发与测试工作 xff0c 广泛受到了社会同行的一致好评 xff
  • DotTrend使用说明手册

    DotTrend使用说明手册 1 DotTrend建立通信与绘制曲线2 工程打开与保存3 历史曲线保存与打开4 曲线导出excel文件 传统的串口工具大多只能查看16进制的通信数据 xff0c 想看十进制恐怕要自己算了 xff1b 即使有的
  • Modbus串口设备模拟器-DevSimulate(Slave+自定义逻辑)

    串口Modbus设备模拟器 DevSimulate DevSimulate是一款可以在电脑上模拟一个或多个从设备的串口工具软件 xff0c 并且可以通过设计数学公式对任意点位进行逻辑关系的自定义 即实现Slave 43 用户自定义逻辑功能
  • 串口Modbus从设备模拟器-DevSimulate

    1 项目场景 xff1a 例如 xff1a 项目场景 xff1a 兹有西门子PLC控制器一台 xff0c 需要控制四方变频器VFD xff0c 来带动三相交流电机作加速 xff08 频率递增 xff09 xff0c 保持 xff08 频率保
  • 解直线方程小软件

    解直线方程软件 软件说明 自己写的一个求解直线方程的小软件 xff0c 例如知道两点的xy坐标 xff0c 可以求得该直线的k值 xff0c b值 给点任意一点的x坐标 xff0c 可以求得该点的y坐标 反过来也可以求已知直线上的任意一点
  • ROS学习笔记(一):在ROS中使用USB网络摄像头传输图像

    在现实中 xff0c 我们一般是使用摄像头来获取图像 xff0c 这次要实现在ROS中使用摄像头传输图像 xff0c 我使用的是usb网络摄像头 xff08 不需要驱动 xff0c 我使用的是不需要驱动的usb摄像头 xff09 xff0c
  • 【SpringBoot13】SpringBoot中整合Redis实现热点数据缓存

    我们以IDEA 43 SpringBoot作为 Java中整合Redis的使用 的测试环境 首先 xff0c 我们需要导入Redis的maven依赖 lt Redis的maven依赖包 gt lt dependency gt lt grou
  • 【SpringBoot14】SpringBoot中使用Session共享实现分布式部署

    我们知道 xff0c 在单体项目中 xff0c 我们将用户信息存在 session 中 xff0c 那么在该 session 过期之前 xff0c 我们都可以从 session 中获取到用户信息 xff0c 通过登录拦截 xff0c 进行操