网站简介 更改,怎么制作小程序教程,做网站做什么好,小程序seo文章目录 一. 分布式 session 登录1.1 什么是分布式#xff1f;1.2 Session 共享1.3 为什么服务器 A 登录后#xff0c;请求发到服务器 B#xff0c;不认识该用户#xff1f;1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一.… 文章目录 一. 分布式 session 登录1.1 什么是分布式1.2 Session 共享1.3 为什么服务器 A 登录后请求发到服务器 B不认识该用户1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一. 分布式 session 登录
1.1 什么是分布式
分布式Distributed是指将计算、存储和处理任务分散到多台计算机或服务器上进行完成的一种计算模式。传统的集中式系统中所有的计算和数据处理都依赖于中央服务器而分布式系统则将任务分解为多个子任务并将其分配给不同的计算机节点来并行处理。
分布式计算有以下几个主要的作用
提高性能和可伸缩性通过将任务分布到多个计算机上执行分布式系统能够充分利用计算资源提高系统的处理能力和性能并且可以根据需要动态扩展系统规模。提高可靠性和容错性分布式系统通过数据冗余和任务复制等方式可以在个别计算机节点发生故障时继续正常运行提高了系统的可靠性和容错性。实现共享资源分布式系统能够将多个计算机节点的资源进行整合和共享包括计算能力、存储空间、网络带宽等从而提供更多的服务和功能。
分布式系统有广泛的应用领域其中一些常见的分布式应用包括
**分布式数据库系统**将数据存储在多个服务器上实现数据的分布式存储、管理和查询提高了数据库的性能和可伸缩性。**分布式文件系统**将文件分散存储在多个服务器上通过网络进行访问和共享提供高性能和可靠的文件存储服务。**分布式计算系统**将计算任务分配给多台计算机节点并行执行例如云计算平台、大规模并行计算等。**分布式缓存系统**将数据缓存在多个服务器上加快数据的读取速度降低网络负载提高应用程序的性能。**分布式消息队列系统**通过消息队列实现不同计算节点之间的通信和协调提高系统的吞吐量和响应性能。**分布式搜索引擎**将索引和搜索任务分布到多个服务器上提供快速的搜索和检索功能。
分布式登录就比如是有两台服务器在这两台服务器部署了一样的服务然后前端请求是通过负载均衡进行请求服务这时你是不知道请求会落到那个服务器上 所以你就不能在 Seesion 来做存信息不能只保存到本地上。如果你请求了服务器A然后登陆信息放在了服务器A下一次你的请求如果到了服务器B那此时服务器B就没有你上一次的登录信息了所以要使用中间件也就是redisRedission Java客户端做这个分布式登录这样不管你请求那个服务器都会有你的登录信息。
1.2 Session 共享
种 session 的时候注意范围cookie.domain 比如两个域名 aaa.jin.com bbb.jin.com 如果要共享 cookie可以种一个更高层的公共域名比如 jin.com
1.3 为什么服务器 A 登录后请求发到服务器 B不认识该用户
用户在 A 登录所以 session用户登录信息存在了 A 上 结果请求 B 时B 没有用户信息所以不认识。 1.4 共享存储
解决方案共享存储 而不是把数据放到单台服务器的内存中 如何共享存储 Redis基于内存的 K / V 数据库此处选择 Redis因为用户信息读取 / 是否登录的判断极其频繁 Redis 基于内存读写性能很高简单的数据单机 qps 5w - 10w MySQL 文件服务器 ceph
二. Session 共享实现Redis
安装redis和管理工具quickredis
官网下载Redis - The Real-time Data Platform
redis 管理工具 quick redishttps://quick123.net/
在springboot里引入redis能够操作redis
!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion2.6.4/version
/dependency引入 spring-session 和 redis 的整合使得自动将 session 存储到 redis 中 !-- session-data-redis --!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis --dependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactIdversion2.6.3/version/dependency修改 spring-session 存储配置 spring.session.store-type。默认是 none表示存储在单台服务器store-type: redis表示从 redis 读写 session。 三. 测试session共享
为了模拟多服务器我们需要打包项目在另一个端口启动这里是8081 先打包后在target目录下打开终端运行下面的代码 java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --server.port8081运行成功启动8080和8081端口的knife4j接口进行操作先在8080端口登录并获取当前登录用户信息 http://localhost:8080/api/doc.html在8081端口查看当前登录用户信息也能查询到 http://localhost:8081/api/doc.html使用QuickRedis查看session是否存入redis中 四. cookie设置
4.1 前端 4.2 后端
后端设置cookie允许在哪个域名下可携带。