分布式Session

目录

为什么要使用分布式Session

分布式Session的几种解决方案以及优缺点

测试Spring Session

SessionTest配置文件

Test8087

运行结果 

Test8088

运行结果 

测试利用Redis存储

Test9001

运行结果 

Test9002

运行结果 

总结



为什么要使用分布式Session

        在系统采用分布式后,各服务之间需要通信,例如登录服务将用户登录的信息保存到Tomcat01的Session中,而查看我的购物车服务是在Tomcat02上,需要获取Tomcat01的Session中的用户信息,此时就出现Session不一致问题,所以此时就需要使用分布式Session。

分布式Session的几种解决方案以及优缺点

Session复制

     优点

        无需修改代码,只需修改Tomcat配置

     缺点

        Session同步传输占用内网
        多台Tomcat同步性能指数下降
        Session占用内存,无法有效水平扩展

前端存储

     优点

        不占用服务端内存

     缺点

        存在安全风险
        数据大小受Cookie限制
        占用外网宽带

Session粘滞

     优点

        无需修改代码
        服务端可以水平扩展

     缺点

        增加新机器,会重新Hash,导致重新登录
        应用重启,需重新登录

后端集中存储

     优点

        安全
        容易水平扩展

     缺点

        增加复杂度
        需修改代码

测试Spring Session

        首先创建一个Maven空项目SessionTest作为父项目然后创建两个服务,分别是Test8087Test8088

SessionTest配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.shao</groupId>
    <artifactId>SessionTest</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Test8087</module>
        <module>Test8088</module>
    </modules>


    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--SpringBoot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.6.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

Test8087

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SessionTest</artifactId>
        <groupId>com.shao</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Test8087</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency&g
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值