网站首页 > 技术文章 正文
前言
最新接手了一个即将上线的系统,就我一个人,后端+前端+运维+测试,做这个项目的都离职了,临时叫我接下来,实在是让人头大,而且这个项目很复杂,页面全靠数据库各种表的配置来生成,就跟我交接了一天,bug满天飞,完全不知道怎么搞,唉,难搞,回到正题,今天分享一个简单的分布式session方案,session主要用来存一些用户信息。
技术栈
springboot,springCloud,redis
流程
1:用户登录,将用户信息存到redis,设置过期时间。采用hash结构,键用客户号+渠道组成;
2:将用户客户号+渠道+UUID加密生成loginToken,返回给前端;
3:发生交易时,前端上送loginToken;
4:网关解密loginToken,获取到客户号和渠道,从redis取出用户信息,放到公共报文头里,并更新过期时间;
5:各个中心直接从报文头里获取到用户信息。
优缺点
优点:
1:交易只操作一次redis,减少网络开销;
2:分布式环境不用担心各个服务器之间session不同步;
3:直接从报文头取值,不占用内存。
缺点
1:用户在同一个http请求里面,更新了session值,后续从报文头取的不是最新的值;
2:如果用户信息很大,每次发中心交易,报文头占用过大;
3:loginToken被非法获取,可能造成信息泄露;
4:中心单独测试时,如果没有添加报文头的session信息,交易可能测试失败。
分析
当时本来是想每次取值都从redis里面拿,但是这样很浪费通讯资源。这种方式也有好处,前端不必上送一堆乱七八糟的用户信息,也不用关心交易发到哪台服务器上,导致用户信息查询不到。以前有个项目,他们是存在服务器上面的,用户交易时,需要这个用户的所有交易都发到这台服务器上,还需要做负载处理,很麻烦,时不时交易还飘到其他服务器上了,导致交易失败。
示例
结语
很简单的一个处理,这方案可能不好,但是按照现有的脚手架,目前这种方案还是能满足我的需求的。欢迎提供更好的意见。
- 上一篇: 前端开发中实现有效缓存策略的关键要点
- 下一篇: 对API网关注册和接入的接口安全管理总结
猜你喜欢
- 2025-04-09 如何设计一套单点登录系统(如何做单点登录)
- 2025-04-09 精读大型网站架构的技术细节:后端架构规整化Cookie和Session
- 2025-04-09 nginx 前端到底用来做啥(前端放在nginx)
- 2025-04-09 一文助你弄懂cookie、session、token
- 2025-04-09 简单快速搭建一个大模型agent前端
- 2025-04-09 对API网关注册和接入的接口安全管理总结
- 2025-04-09 初识.Net Core Mvc(session 登录+查询)
- 2025-04-09 前端开发中实现有效缓存策略的关键要点
- 2025-04-09 Nginx负载均衡中对session处理分析一
- 2025-04-09 SpringBoot springsession redis(springboot整合redisson)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)