分布式 session

news2024/11/24 6:00:03

分布式 session

种 session 的时候需要注意范围,也就是 cookie.domain

比如两个域名:a.heo.com,b.heo.com。如果要共享 cookie,可以种一个更高层的公共域名,比如 heo.com。

当服务器 A (localhost:8080)登录用户,然后请求发到服务器 B(localhost:8081),那么结果请求 B 时,B 还会作出相应吗?这就需要考虑到分布式 session。

当用户在 A 登录,所以 session(用户登录信息)存在了 A 上,然后因为 B 没有用户信息,所以不认识用户,也做不出正确的响应。

在这里插入图片描述

解决方案:共享存储 ,而不是把数据放到单台服务器的内存中。

Session 共享实现Redis

如何共享存储?

  1. Redis(基于内存的 K / V 数据库)此处选择 Redis,因为用户信息读取 / 是否登录的判断极其频繁 ,Redis 基于内存,读写性能很高,简单的数据单机 (qps 5w - 10w)。
  2. MySQL
  3. 文件服务器 ceph

redis 管理工具可以使用 quickredis。

使用方法

  1. 引入 redis,能够操作 redis:
<!-- redis -->
<!-- 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.6.4</version>
</dependency>
  1. 引入 spring-session 和 redis 的整合,自动将 session 存储到 redis 中:
<!-- session-data-redis -->
<!-- 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.6.3</version>
</dependency>
  1. 修改 spring-session 存储配置 spring.session.store-type。默认是 none,表示存储在单台服务器 。store-type: redis,表示从 redis 读写 session。
spring:
  application:
    name: match-mate
  session:
    timeout: 86400
    store-type: redis
  redis:
    port: 6379
    host: localhost
    database: 0
  1. 测试结果

为了测试结果,我们可以用不同的端口启动我们的后端项目。一,idea在8080端口启动。二,打包后再8081端口启动。

image.png

8080端口:

image.png

8081端口:

image.png

成功携带8080端口登录获得的用户信息(session),来请求响应8081端口的接口。

查看 redis 0号库 成功存储 session。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400713.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据平台的硬件规划、网络调优、架构设计、节点规划

1.大数据平台硬件选型 要对Hadoop大数据平台进行硬件选型,首先需要了解Hadoop的运行架构以及每个角色的功能。在一个典型的Hadoop架构中,通常有5个角色,分别是NameNode、Standby NameNode、ResourceManager、NodeManager、DataNode以及外围机。 其中 NameNode 负责协调集群…

OneNote使用总结

试一下OneNote表格复制到CSDN的编辑器 用表格整理内容挺方便的&#xff0c;不过复制过来格式还是有些变化 目录 常用快捷键 高级应用 常用快捷键 文字编辑与排版 字号增加减小 Ctrl Shift 大于小于号 整行上下移动 左右缩进 Alt Shift方向 插入或转为公式 Alt 等于…

软件需求规格说明书-word

软件需求规格说明书编写规范 1.项目背景 2.项目目标 3.系统架构 4.总体流程 5.名称解释 6.功能模块 软件开发全文档获取&#xff1a;软件项目开发全套文档下载_软件项目文档-CSDN博客

Python笔记10-数据可视化练习折线图

文章目录 JSON数据Python数据和Json数据的相互转化pyecharts模块构建折线图全局配置绘制疫情数据折线图 JSON数据 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据 。本质上是一个带有特定格式的字符串 主要功能&#xff1a;可以在各个编程语言中流通…

R语言的ggplot2绘制分组折线图?

R绘制分组折线图.R 首先看数据情况&#xff1a;group有3组。Time有3组&#xff0c;数据意思是在3组3个时间点测量了某指标&#xff0c;现在要绘制组1、组2、组3某指标y按时间的变化趋势 数据情况&#xff1a; 看看最终的效果图如下&#xff1a; 下面是本次使用的代码 .libPat…

合并两个有序数组(三指针法)

这道题使用三指针法&#xff0c;实际上是创建三个变量模拟下标的走势&#xff1a; 一般常规想法是先合并再排序&#xff0c;三指针则是边合并边排序&#xff1b; l1是nums1的有效数据的最后一位的下标&#xff0c;即m - 1&#xff1b; l2是num2的有效数据的最后一位的下标&a…

conda修改默认环境安装位置

conda修改默认环境安装位置 文章目录 conda修改默认环境安装位置查看conda配置信息创建.condarc&#xff08;conda runtime controlling)配置文件没有.condarc怎么办 即使创建正确放置了.condarc创建环境时还是默认指定C盘目录写权限目录修改权限 查看conda配置信息 conda con…

前端实现贪吃蛇功能

大家都玩过贪吃蛇小游戏&#xff0c;控制一条蛇去吃食物&#xff0c;然后蛇在吃到食物后会变大。本篇博客将会实现贪吃蛇小游戏的功能。 1.实现效果 2.整体布局 /*** 游戏区域样式*/ const gameBoardStyle {gridTemplateColumns: repeat(${width}, 1fr),gridTemplateRows: re…

Hive-SQL语法大全

Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法&#xff0c;在语法描述中出现&#xff1a; []&#xff0c;表示可选&#xff0c;如上[LOCATI…

【51单片机】矩阵按键

0、前言 参考&#xff1a;普中 51 单片机开发攻略 1、硬件 2、软件 main.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define GPIO_KEY P1 #d…

【操作系统和计网从入门到深入】(五)软硬链接和动静态库

前言 这个专栏其实是博主在复习操作系统和计算机网络时候的笔记&#xff0c;所以如果是博主比较熟悉的知识点&#xff0c;博主可能就直接跳过了&#xff0c;但是所有重要的知识点&#xff0c;在这个专栏里面都会提到&#xff01;而且我也一定会保证这个专栏知识点的完整性&…

使用RSVP进行带宽预留

使用RSVP进行带宽预留 服务质量&#xff08;QoS&#xff09;工具包括 标记&#xff0c; 管制和 整形 机制&#xff0c;主要是区分服务&#xff08;DiffServ&#xff09;工具。DiffServ机制可提供带宽保证&#xff08;在各种刚性级别上&#xff09;&#xff0c;但是它们都不提供…

Three.js 学习笔记之模型(学习中1.20更新) | 组 - 模型 - 几何体 - 材质

文章目录 模型 几何体 材质层级模型组- THREE.Group递归遍历模型树结构object3D.traverse() 模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形网格模型独有的属性与方法 几何体BufferGeometry缓冲类型几何体BufferGeometry - 基类创…

【Android】app中阻塞的looper为什么可以响应touch事件

这里&#xff0c;我们考虑一个问题&#xff0c;Android中的应用是一个looper线程&#xff0c;没有任务时就阻塞着&#xff0c;其他线程通过handler调用等方式向主线程looper发送任务&#xff0c; 如果点击应用上的按钮&#xff0c;应用是怎么及时响应的呢&#xff0c; 是专门启…

JS-WebAPIs- Window对象(五)

• BOM(浏览器对象模型) BOM(Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象&#xff0c;也可以说是JavaScript中的顶级对象像document、alert()、console.log()这些都是window的属性&#xff0c;基本BOM的属性和方法都是window的。所有通过var定义在全局…

提升 Go 编程:Go 1.22 中有哪些新特性?

深入了解 Go 1.22 版本及其语言增强功能 随着 Go 编程语言的不断发展&#xff0c;即将发布的版本 Go 1.22 承诺带来各种新功能、改进和变化。预计于 2024 年 2 月发布的 Go 1.22 引入了对语言、工具、运行时、编译器和核心库的增强。让我们深入了解一些在这个即将发布的版本中开…

python基础语法(下)—— python中的元组、集合、字典、类与异常的处理

文章目录 8.python中的元组8.1元组的初始化8.2元组的解包8.3元组的比较运算8.4else 9.python中的集合9.1集合的初始化9.2集合的常用操作9.3使用for循环遍历集合 10.python中的字典10.1字典的初始化10.2字典的常见操作10.3使用for循环遍历字典 11.python中的类11.1类的定义11.2类…

二进制部署高可用k8s集群V1.20.11版本

文章目录 一、操作系统初始化配置&#xff08;所有节点均执行&#xff09;1、关闭防火墙2、关闭selinux3、关闭swap4、根据规划修改主机名5、在master节点上添加host6、将桥接的IPv4流量传递到iptables的链7、时间同步 二、部署Etcd集群1、准备cfssl证书生成工具2、生成Etcd证书…

B(l)utter:一款针对Flutter移动端应用程序的逆向工程分析工具

关于B(l)utter B(l)utter是一款针对Flutter移动端应用程序的逆向工程分析工具&#xff0c;当前版本的B(l)utter仅支持Android libapp.so&#xff08;ARM64&#xff09;&#xff0c;可以帮助广大研究人员对基于Flutter开发的移动端应用程序进行逆向工程分析。 环境搭建 该应用…

C++参悟:正则表达式库regex

正则表达式库regex 一、概述二、快速上手Demo1. 查找字符串2. 匹配字符串3. 替换字符串 三、类关系梳理1. 主类1. basic_regex 2. 算法1. regex_match2. regex_search3. regex_replace 3. 迭代器4. 异常5. 特征6. 常量1. syntax_option_type2. match_flag_type3. error_type 一…