session redis Spring Session实现Session共享

session redis Spring Session实现Session共享

同域名下相同项目(集群环境)实现共享

在同一个域名下,比如:

同一个项目,部署了多台,这就是典型的集群。我们的入门案例就属于这种应用场景,只不过在实际开发的过程中,我们如果存在了集群,那么肯定会使用nginx进行负载均衡,那么这种情况下我们该如何处理。

1. 案例设计思路

我们将上一个阶段的p2p项目实现集群部署下的共享session redis Spring Session实现Session共享,因为我们只是演示共享,所以我们试用一个简易版本的p2p,在我给大家提供的资料中,该p2p中只包含p2p和session redis,在Linux服务器上,我们准备三台,其中两台部署p2p,并实现共享,另一台部署。

2. 架构图

session redis

3. 实现步骤

① 使用Xftp将p2p上传到和9200的目录下

session redis

session redis

② 使用Xftp将上传到的目录下

session redis

③ 使用资源下的SQL脚本,重新创建数据库的表

因为目前这个p2p的项目表结构和上一个阶段的稍微有些区别,所以我们这里更新一下:

A、 启动mysql数据库

B、 通过MySQL客户端工具创建新的库

session redis

C、 指定数据库名字为p2p2,字符集编码为utf-8

session redis

D、 新建查询,执行p2p-data.sql脚本

session redis

E、 执行成功后,表结构如下

session redis

④ 通过Xftp工具连接Linux,修改下的的连接信息

A、 使用记事本打开,修改redis.,保存

session redis

B、 修改.,保存

session redis

C、 修改-dubbo-.xml注册中心的地址,并保存

session redis

⑤ 通过Xftp工具连接Linux,修改下的p2p的连接信息

这里只需要修改-dubbo-.xml文件中zk注册中心的地址即可。

session redis

⑥ 通过Xftp工具连接Linux,修改下的p2p的连接信息

这里只需要修改-dubbo-.xml文件中zk注册中心的地址即可。

session redis

⑦ 确保Linux系统上的各应用服务器启动

注意:先通过ps –ef | grep XXX命令查看,如果已经启动,就不需要再启动了。

A、 启动服务器

session redis

B、 启动MySQL服务器

session redis

C、 启动Redis服务器

session redis

D、 启动服务器(为了避免出错先关闭,再启动)

session redis

E、 启动服务器(为了避免出错先关闭,再启动)

session redis

F、 启动服务器(为了避免出错先关闭,再启动)

session redis

session redis

G、 直接访问的方式,在浏览器输入地址访问和

session redis

session redis

⑧ 使用Nginx对和进行负载均衡

A、 负载均衡的配置,这里使用的是轮询策略

upstream www.p2p.com{
         server 127.0.0.1:9100;
         server 127.0.0.1:9200;       
} 

B、匹配的配置,注意:这里对静态资源的处理,我们暂时先注释掉

location /p2p{
             proxy_pass http://www.p2p.com;
        }

如果要是实现了静态代理,别忘了启动所有的nginx服务器(负载|代理)

session redis

C、 重启Nginx

session redis

D、 在浏览器中输入地址,直接访问Nginx服务器,实现负载均衡

session redis

⑨ Nginx对集群负载均衡之后,登录不成功,但是直接访问或者都是可以成功登录的(丢失),分析原因:

因为默认我们负载均衡使用的是轮询策略,每次发送请求给nginx服务器,都会切换服务器,这个时候没有使用任何共享策略,所以登录不成功。

⑩ Nginx对集群负载均衡之后,共享方案

A、 修改nginx.conf配置文件,将轮询策略修改为

session redis

但是这种情况,一旦ip发生变化,或者某台服务器出现故障,会重新分配,不稳定;

所以我们看下这种情况后,将注释掉。

session redis

B、 使用

使用 实现共享,我们不需要修改代码,只要修改一些配置文件即可,为了演示方便,我们直接使用Xftp修改已经发布到上的项目;

向和的p2p项目中加jar包,这个jar包我已经准备好了。

session redis

修改和的p2p项目的web.xml配置文件,添加 过滤器,因为我们项目本身已经通过启动了容器,所以监听器不需要加了,直接从01–web中拷贝即可;

session redis

session redis

将01–web项目中下的-.xml和redis.拷贝到和的p2p项目WEB-INF/下

session redis

session redis

修改和的p2p项目WEB-INF/下.xml文件,引入-.xml

session redis

session redis

重启三台服务器,浏览器访问进行登录测试,可以实现共享。

同域名下不同项目实现共享

在同一个域名下,有多个不同的项目(项目的上下文根不一样)比如:

/p2p

/shop

如图:

session redis

1. 做法:设置路径为根/上下文2. 案例设计思路

在01–web项目的基础上,将本地的上下文根修改为p2psession redis,将本地

3. 实现步骤

① 打开Edit 进行配置

② 在选项卡下,设置本地的 为/p2p

session redis

③ 在选项卡下,设置本地的 为/shop​​​​​​​

session redis

④ 在idea中重新启动本地的两台服务器

⑤ 在浏览器中访问(p2p),设置

session redis

session redis

⑥ 在浏览器中访问(shop)session redis,获取

session redis

⑦ 分析共享失败原因

我们通过浏览器提供的开发人员工具可以发现,这两个请求的的路径(path)不一致,虽然我们已经加了 共享机制session redis Spring Session实现Session共享,但是后台服务器认为这是两个不同的会话(),可以通过Redis客户端工具(Redis )查看,先清空,然后访问,发现是维护了两个不同的,所以不能实现共享。

session redis

⑧ 解决方案 设置路径为根/上下文

在-.xml文件中,加如下配置:

session redis

⑨ 在idea中重新启动本地的两台服务器

⑩ 在浏览器中访问(p2p),设置

session redis

⑪ 在浏览器中访问(shop),获取

注意:测试的时候要先清空浏览器缓存。

同根域名不同二级子域名下的项目实现共享

同一个根域名,不同的二级子域名

比如:

如图:

session redis

1. 做法

• 设置路径为根/上下文,项目名一样的话,此步骤可以省略

• 设置的域名为根域名

2. 案例设计思路

在01–web项目的基础上,将本地的上下文根修改为p2p,将本地的上下文根修改为shop;在本机host文件中修改127.0.0.1的映射关系模拟不同的域名访问。

3. 实现步骤

①  延续上面的案例的配置,两台本地服务器9100和9200,上下文根分别是p2p和shop

② 修改本地hosts文件,加入如下配置

③ 在idea中重新启动本地的两台服务器

④ 在浏览器中访问(p2p),设置

注意,这里不再使用访问,而是使用我们映射的域名

session redis

⑤ 在浏览器中访问(shop),获取

注意,这里也不再使用访问,而是使用我们映射的域名

session redis

⑥ 分析共享失败原因

我们通过浏览器提供的开发人员工具可以发现,虽然这两个的路径(path)都设置为了“/”,但是这两个的域名不一致,虽然我们已经加了 共享机制,但是后台服务器同样认为这是两个不同的会话(),可以通过Redis客户端工具(Redis )查看,先清空,然后访问,发现是维护了两个不同的,所以不能实现共享,也就是说后台区分是否同一个和路径和域名有关。

⑦ 解决方案 设置Cook ie的域名为根域名

在-.xml文件中,加如下配置:

注意:域名要和hosts文件中配置的域名后面一样

session redis

session redis

⑧  在idea中重新启动本地的两台服务器

⑨ 在浏览器中访问(p2p),设置

⑩ 在浏览器中访问(shop),获取

注意:清空浏览器缓存​​​​​​​

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » session redis Spring Session实现Session共享

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们