分布式session共享

一、前言

为什么会出现session共享问题?

客户端与服务器交互时会产生唯一的sessionid用于标记用户,但是在分布式架构中,如果还是采用 session 的方式,用户发起请求,通过 nginx 做请求转发时,并不知道是转发到服务器1还是服务器2,所以就会出现session共享问题。

关于分布式 session 共享有两种解决方式,使用 spring-session 框架或者是使用 token 替代 session。

今天主要记录使用 spring-session 框架解决 session 共享问题。

其主要原理就是使用 redis 记录 session 实现session 共享。

二、代码部分

1、引入依赖
<!--spring session 与redis应用基本环境配置,需要开启redis后才可以使用,不然启动Spring boot会报错 -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
2、application配置文件
redis:
  hostname: 192.168.10.180
  port: 6379
  password: 123456
3、SessionConfig
/**
 * 这个类用配置redis服务器的连接
 * maxInactiveIntervalInSeconds为SpringSession的过期时间(单位:秒)
 */

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class SessionConfig {

    /* 冒号后的值为没有配置文件时,制动装载的默认值 */
    @Value("${redis.hostname:localhost}")
    String hostName;
    @Value("${redis.port:6379}")
    int port;
    @Value("${redis.password:123456}")
    String passWord;

    @Bean
    public JedisConnectionFactory connectionFactory() {
        JedisConnectionFactory connection = new JedisConnectionFactory();
        connection.setPort(port);
        connection.setHostName(hostName);
        connection.setPassword(passWord);
        return connection;
    }
}
4、nginx配置
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;


    keepalive_timeout  65;

    upstream  backServer{
        server 192.168.10.180:8080;
        server 192.168.10.180:8081;
    }
    server {
        listen       80;
        server_name  shop.sscai.club;
        location / {
           proxy_pass http://backServer;
            index  index.html index.htm;
        }      
    }
}

我创建了一个java相关的公众号,用来记录自己的学习之路,感兴趣的小伙伴可以关注一下微信公众号哈:niceyoo

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

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

相关文章

InnoDB锁问题

InnoDB锁问题 InnoDB与MyISAM的最大不同有两点&#xff1a;一是支持事务&#xff08;TRANSACTION&#xff09;&#xff1b;二是采用了行级锁。行级锁与表级锁本来就有许多不同之处&#xff0c;另外&#xff0c;事务的引入也带来了一些新问题。下面我们先介绍一点背景知识&#…

phpsduty环境下,使用composer安装报错

1.首先要下载composer进行安装 点击下载 &#xff0c;最新的composer要求的php版本都比较高&#xff0c;安装之后&#xff0c;将composer的安装路径加入环境变量&#xff0c;我的参考路径&#xff1a;D:\composer&#xff1b; 2.我的环境使用的php版本是php7.0.12-nts&#xf…

SPU、SKU、ARPU

在涂涂商城开发之前&#xff0c;发现一篇关于电商中 SPU、SKU、ARPU 的介绍&#xff0c;转至博客&#xff0c;原文地址&#xff1a;http://www.ikent.me/blog/3017 什么是SPU、SKU、ARPU 首先&#xff0c;搞清楚商品与单品的区别。例如&#xff0c;iphone 是一个单品&#xff0…

NOIP2011提高组day2

NOIP 2011 提高组 Day 2 T1 &#xff1a; 题意&#xff1a; 这道题题意很显然&#xff0c;方法就是利用数学中的二项式定理 &#xff1a; ( x y ) ^ n C ( i , n ) * x ^ i * y ^ ( n - i )&#xff0c;i ∈ [ 0 , n ]&#xff0c;所以求x ^ n * y ^ m的系数&#xff0c;就是…

react+redux+node报错Tapable.plugin is deprecated. Use new API on `.h ooks` instead

npm run hot运行 报错(node:5372) DeprecationWarning: Tapable.plugin is deprecated. Use new API on .h ooks instead 原因是内网的IP变了&#xff0c;所以启动报错&#xff0c;修改webpack.dev.js里的host&#xff0c;解决。

什么是单点登录

前言&#xff1a; 是时候了解一下SSO相关的知识了&#xff0c;本篇主要是概念篇&#xff0c;发现网上两篇不错的文章&#xff0c;简单整合了一下&#xff0c;原文链接&#xff1a;https://www.cnblogs.com/Java3y/p/10877465.htmlhttps://www.cnblogs.com/EzrealLiu/p/5559255.…

支付宝H5支付,ISV权限不足

报错如下&#xff1a; 登录支付宝商户平台&#xff0c;发现签约产品已失效&#xff1a; 重新申请&#xff0c;修改网址之后就成功了&#xff1a;

我们为何需要单点登录系统

SSO&#xff0c;Single Sign On&#xff0c;也就是单点登录&#xff0c;保证一个账户在多个系统上实现单一用户的登录 现在随着网站的壮大&#xff0c;很多服务会进行拆分&#xff0c;会做SOA服务&#xff0c;会使用dubbo做微服务&#xff0c;或者简单的小型分布式&#xff0c…

微信JSAPI支付,报错当前页面的URL未注册

调用微信统一支付的接口&#xff0c;支付时报错&#xff1a; 解决方案&#xff1a; 打开微信商户平台&#xff0c;将当前页面的URL配置到JSAPI域名。

借助xxl-sso实现SSO

前言 市场上一下主流的SSO技术搭配方案&#xff1a; SpringSecurity OAuth2 SpringSecurity CAS 功能较弱&#xff0c;对前后端分离的项目支持不是很好Shiro CAS JWT 可以自定义需求&#xff0c;灵活扩展鉴权方式 本篇主要是单点登录&#xff0c;不涉及鉴权&#xff0c;后面…

C语言数组初始化的问题

转载于:https://www.cnblogs.com/chulin/p/8880184.html

blocked by CORS policy,是否跨域?

经排查不是跨域的问题&#xff0c;代码报错&#xff0c;改好就解决了 2021.10.20 项目上线又报错&#xff0c;测试环境一直没问题&#xff0c;上线了就报这个错&#xff0c;如果是前端代码的问题&#xff0c;那么使用测试接口的时候肯定也会报这个错&#xff0c;所以排除前端代…

那些一眼就被看出包装过的简历

本文作者&#xff1a;Coody原文链接&#xff1a;https://my.oschina.net/hooker/blog/3014656 前言 在互联网极速膨胀的社会背景下&#xff0c;各行各业涌入互联网的IT民工日益增大。 早在2016年&#xff0c;我司发布了Java、Ios工程师的招聘信息&#xff0c;就Java工程师单个岗…

sql 查询优化小计

好久没更博了&#xff0c;偷偷的抽时间写一下。 早上开始working的时候&#xff0c;发现一个页面加载很慢&#xff0c;经排查是昨天写的一条联合查询的sql导致的。于是着手优化&#xff01; 首先想到的是在join的时候&#xff0c;减少表体积之后再进行关联&#xff0c;于是有了…

微信支付宝扫一扫进入小程序的相关配置

需求: 微信小程序和支付宝小程序,用微信和支付宝扫同一个普通二维码,支付宝扫码进入支付宝小程序指定页面,微信扫码进入微信小程序的指定页面。解决办法: 微信公众平台和支付宝开放平台都有自己的二维码配置规则。配置相同的规则,然后用配置的二维码地址加上参数,用草料…

重温Elasticsearch

什么是 Elasticsearch &#xff1f; Elasticsearch (ES) 是一个基于 Lucene 构建的开源、分布式、RESTful 接口全文搜索引擎。还是一个分布式文档数据库&#xff0c;其中每个字段均是被索引的数据且可被搜索&#xff0c;它能够扩展至数以百计的服务器存储以及处理PB级的数据。它…

unity之中级工程师

主要是实际操作。 Destroy(游戏对象)&#xff1a;会真正销毁游戏对象。 动态链接库 热更新&#xff1a;用户不需要更新整个项目&#xff0c;只需要更新需要更新的部分&#xff0c;使用AssetBundle。PC,Android可以使用逻辑热更新&#xff0c;将脚本利用反射打包成一个动态链接库…

芝麻信用综合评估未通过,请选择商户支持的其他方式使用服务

如题&#xff1a;公司小程序发布上线的时候报这个错&#xff0c;因为在测试接口的时候都是可用的&#xff0c;发布上线之后不行了&#xff0c;官方的案例及解决方案地址是&#xff1a;点击链接 给出的大致原因如下&#xff1a; 因为在测试接口时能正常使用&#xff0c;所以排除…