分布式 session

分布式 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:

    org.springframework.boot spring-boot-starter-data-redis 2.6.4
  2. 引入 spring-session 和 redis 的整合,自动将 session 存储到 redis 中:

    org.springframework.session spring-session-data-redis 2.6.3
  3. 修改 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

  4. 测试结果

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

8080端口:

8081端口:

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

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

相关推荐
国科安芯1 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
阿无,2 小时前
RabbitMQ面试题
分布式·rabbitmq
盛世宏博智慧档案5 小时前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六6 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
天涯明月199311 小时前
ray深度研究报告
大数据·人工智能·分布式·ray
Rain的Java大神之路21 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜1 天前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农1 天前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰1 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
麻瓜记录Jackson2 天前
深入剖析 ZooKeeper 分布式 互斥锁:Curator 之 InterProcessMutex 源码全解(附图解)
java·spring boot·分布式·后端·zookeeper·java-zookeeper