Demo_mmall v2.0 (四) Tomcat集群演进及使用Redis进行session重构实现单点登录

本文介绍了mmall项目从单台Tomcat到集群的演进过程,以及如何利用Redis实现session共享以达成单点登录。在V2.0版本中,通过设置cookie的domain属性,确保集群服务器间session信息的共享。同时讨论了服务器定时任务并发问题,提出了使用拦截器重置用户登录有效期的解决方案。项目代码和详细解析可供参考。
摘要由CSDN通过智能技术生成
小谈mmall架构演进

上回书和上上回书说到redis的用法还有在代码里怎么操作Redis数据库,学完了得用啊。怎么用啊?这得从项目架构说起了。
mmall是一个简单的用SSM搭建起来的基本只能本地玩耍的电商DEMO,最简单的架构版本V1.0是这样婶的:在这里插入图片描述
user123访问网址发送请求,nginx把请求发送到Tomcat,Tomcat再去访问数据库或者ftpserver;session保存在Tomcat里;
如果是访问人少,一台服务器当然可以顶得住,请求服务器的多了,我们可以给这个服务器升级,提高它的纵向扩展能力:升级机器的内存,CPU,硬盘机械改固态但带来的还有成本指数级升高。
升级一台服务器成本高,那用几个普通的服务器做成集群不就可以了吗?于是,就有了下面的机构:在这里插入图片描述
这个架构版本,称为V1.1版本吧。
这个版本看上去没毛病,实际是不能使用的。想象下这个业务场景:userA登录请求,nginx发送给TomcatA;用户再进行下单请求,Nginx发送给TomcatB;B里没有session,A里有session,这里就会校验到用户未登录,实际上用户登录了,session保存在A里,请求的却是B。
既然这个版本不能满足业务需求,就继续升级吧,于是就有了下面的版本V2.0:
在这里插入图片描述
user无论请求到哪台服务器,我们都会把session信息放到redis session server上。tomcat服务器都会从Redis session server上读取session信息。
这样一来,Session登录信息存储及读取的问题就解决了。但是还有一个问题:服务器定时任务并发的问题。这个问题怎么产生的?怎么解决?请看下回分解。

  • todo 服务器定时任务并发问题的解决
    左下角的Token是个小彩蛋,下面会说到。
    Tomcat集群能提高服务的性能,并发能力,以及高可用性;
    实际中一台服务器只部署一个Tomcat,因为机器硬件有瓶颈(内存,硬盘IO等);
    一台Tomcat的HTTP线程池是有限的多个Tomcat,多个线程池,并发能力提高;
    活多了一个人做不完怎么办?摇人就是了。
    请求多了服务器要挂掉了怎么办?做成集群就是了。
空谈误国,代码兴邦。
代码解析

util,util还是Util。util是什么?是你写完永远不会去看源码拿来就用的东西。
cookie的path,domain属性没有深入研究,其实要是不做这个DEMO,cookie都碰不到。

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值