浪花 - 单机登录升级为分布式 Session 登录

这篇具有很好参考价值的文章主要介绍了浪花 - 单机登录升级为分布式 Session 登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、单机登录思路

二、修改为分布式登录的原理和思路

1. 单机登录的局限性

2. 解决方案:共享存储

三、使用 Redis 实现分布式登录

1. 本地安装 Redis 后启动 Redis

2. 引入 Redis 依赖

3. 在 application.yml 中配置 Redis 账户和密码

4. Redis 本地可视化管理工具:Another Redis Desktop

5. 使用 Redis 存储 Session

四、测试分布式登录:共享 Session


一、单机登录思路

1. 用户发送登录请求

2. 服务端验证登录用户信息,校验通过设置 Cookie 响应给前端

3. 后续用户每次发送请求都会携带 Cookie

4. 服务端收到请求时校验 Cookie 中的 Session / JSESSIONID,在服务端(Tomcat)中查找 Cookie 信息

  • 找到说明该用户已经登录过,通过校验,响应请求
  • 未找到说明该用户未登录,请求失败

案例分析:为什么用户在服务器 A 登录后,向服务器 B 发送请求,B 不认识该用户?

  • 用户在 A 登录,session 用户登录态存在 A 上面,B 上面没有用户的登录信息
  • 第二次请求落到 B 上,B 找不到该用户的登录记录,所以请求失败

二、修改为分布式登录的原理和思路

1. 单机登录的局限性

  • Session 信息保存在服务器上,多台 Tomcat 不共享 Session 的存储空间,当集群模式下请求切换到不同的 Tomcat 服务器上,出现数据丢失的问题

2. 解决方案:共享存储

  • 将共享数据(登录态)存储到所有服务器都能查询的地方,而不是存到单台服务器上
  • ✔Redis(基于内存的 K - V 数据库)

    • 需要高频判断用户登录态

    • 需要高频读取用户信息

    • Redis 读写性能高

3. 本地模拟集群

  • 在多个端口运行后端服务:IDEA 在本地启动多个 SpringBoot 后端服务模拟集群-CSDN博客
  • 同一个用户发送请求到不同的服务端时,验证是否能通过校验

4. 修改种 Session 的机制

  • 发现问题:在 8080、8081 启动服务后,使用 Knife4j 接口文档进行测试,服务器会为同一个域名下的不同端口生成不同的 Session
  • 解决:修改 Cookie 的范围,让同一个域名下的多个端口都共享同一个 Cookie,如 domain: localhost 让域名为 localhost 的请求都共享同一个 Cookie
server: 
  reactive:
    session:
      cookie:
        domain: localhost

三、使用 Redis 实现分布式登录

1. 本地安装 Redis 后启动 Redis

Redis 5.0.14 下载:

链接:https://pan.baidu.com/s/1XcsAIrdeesQAyQU2lE3cOg

提取码:vkoi

  • 进入 Redis 安装目录,输入启动命令
D:\tools\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
[33684] 17 Jan 11:22:25.795 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

D:\tools\Redis-x64-3.2.100>redis-cli.exe
127.0.0.1:6379> shutdown
not connected> exit

D:\tools\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
  • 启动 Redis,显示启动端口号 6379 

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis

2. 引入 Redis 依赖

  • 引入 Spring Boot Starter Data Redis 会自动整合 SpringBoot 和 Redis

❗注意:引入的版本要和 SpringBoot 的版本一致

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.7.17</version>
</dependency>

3. 在 application.yml 中配置 Redis 账户和密码

spring: 
  redis:
    host: 127.0.0.1
    port: 6379
    password: root@csu
    database: 0

4. Redis 本地可视化管理工具:Another Redis Desktop

  • 连接报错:Stream On Error: NOAUTH Authentication required.
  • 解决方法:填连接密码,不填用户名

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis

  • 连接成功

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis

5. 使用 Redis 存储 Session

  • 引入 Spring Session Data Redis:自动将 Session 存入 Redis 数据库中

❗注意:引入的版本要和 SpringBoot 的版本一致

<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.7.0</version>
</dependency>
  • 在 application.yml 中添加 Session 的 Redis 配置
  • store-type:默认是 none,表示存储在服务器,修改为 redis
  session:
    timeout: 86400
    store-type: redis

四、测试分布式登录:共享 Session

1. 使用 Redis 客户端查看 Session 存储情况

  • 在 8080 和 8081 端口启动项目
  • 使用 Knife4j 接口文档发送请求

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis

2. 在 8080 登录后获取用户信息

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis

3. 在 8081 尝试不登录直接获取用户信息

  • 成功获取!✔
  • 说明 Session 已经从存在单台服务器上改为存在 Redis 数据库中,实现了分布式 Session 登录

浪花 - 单机登录升级为分布式 Session 登录,浪花 - 后端,分布式,java,redis文章来源地址https://www.toymoban.com/news/detail-812528.html

到了这里,关于浪花 - 单机登录升级为分布式 Session 登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式 session

    分布式 session 种 session 的时候需要注意范围,也就是 cookie.domain 。 比如两个域名: a.heo.com,b.heo.com 。如果要共享 cookie,可以种一个更高层的公共域名,比如 heo.com。 当服务器 A (localhost:8080)登录用户,然后请求发到服务器 B(localhost:8081),那么结果请求 B 时,B 还会作出

    2024年01月22日
    浏览(31)
  • 单机,集群和分布式概念

    1.受限于硬件资源,单机所能承受的用户并发量太少; 2.一个系统有多个模块,任意模块的修改都会导致整个项目代码重新编译、部署; 3.系统中,有些模块是CPU密集型,有些模块是I/O密集型,造成各个模块对于硬件资源的需求是不一样的。 负载均衡        集群的优点

    2024年02月14日
    浏览(36)
  • HBase(单机)伪分布式安装

    准备工作:Hadoop已经安装、hbase-1.2.6-bin安装包。 1、上传hbase-1.2.6-bin.tar.gz压缩包到/home/hadoop目录下,并使用tar xvf 解压。 2、终端下输入:vim .bashrc,即用vim编辑器打开bashrc文件。 3、在bashrc文件的末尾设置如下Hbase的环境变量,要注意hbase解压后的文件名是hbase-1.2.6还是hbase-1

    2024年02月04日
    浏览(49)
  • 分布式下的session共享问题

    首页我们确定在分布式的情况下session是不能共享的。         1.不同的服务,session不能共享,也就是微服务的情况下         2.同一服务在分布式情况,session同样不能共享,也会是分布式情况 分布式下session共享问题解决方案(域名相同)         1.session复制         2.客户

    2024年02月11日
    浏览(32)
  • 【软件开发】从单机到分布式

    问题:由于流量越来越大出现服务器性能问题。 对架构增加了一台服务器,应用和数据库分别部署到不同的服务器上,对于开发和测试没有任何影响,只需要应用服务器新增一个远程调用数据库服务器的连接,有效地缓解了应用服务器负载的压力。 问题:随着请求流量的进

    2024年02月02日
    浏览(100)
  • 单机架构到分布式架构的演变

    目录 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 总结          初期,我们需要利用我们精干的技术团队,快速将业务系统投入市场进行

    2024年02月04日
    浏览(35)
  • 真·保姆级——在VMware的Ubuntukylin上进行Hadoop单机/伪分布式安装时安装VMware Tools后虚拟机与物理机之间无法传输文件和复制粘贴的问题(附Ubuntu更改默认登录用户)

    目录 一、前言 二、版本信息 三、hadoop用户创建 1.创建hadoop用户 2.在创建hadoop用户后对系统进行重启 四、解决办法 4.1 更改默认登陆用户 4.2 安装VMware Tools 4.3 验证VMware Tools是否安装成功 4.4 KO!!! 4.4.1 卸载安装的Vmware Tools 4.4.2 安装VMware Tools所需的组件 五、可能遇见的问题

    2024年02月08日
    浏览(67)
  • 对象存储,从单机到分布式的演进

    关于数据存储的相关知识,请大家关注“数据存储张”,各大平台同名。 通过《什么是云存储?从对象存储说起》我们对对象存储的历史、概念和基本使用有了一个大概的认识。而且我们以Minio为例,通过单机部署的模式实际操作了一下对象存储的GUI,感受了一下对象存储的

    2024年02月07日
    浏览(41)
  • 搭建单机版FastDFS分布式文件存储系统

    1、下载FastDFS安装包和依赖包 https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.43 https://codeload.github.com/happyfish100/fastdfs/tar.gz/V6.06 https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/V1.22 注:可以使用window浏览器(下载后需要上传到服务器上),也可以使用linux的curl命令 2、

    2024年02月09日
    浏览(40)
  • Spark单机伪分布式环境搭建、完全分布式环境搭建、Spark-on-yarn模式搭建

    搭建Spark需要先配置好scala环境。三种Spark环境搭建互不关联,都是从零开始搭建。 如果将文章中的配置文件修改内容复制粘贴的话,所有配置文件添加的内容后面的注释记得删除,可能会报错。保险一点删除最好。 上传安装包解压并重命名 rz上传 如果没有安装rz可以使用命

    2024年02月06日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包