本系列文章记录“智能提醒助理”产品建设历程,记录实践经验、巩固知识点、锻炼总结能力。
本篇介绍技术栈升级后的切换方案以及性能提升。
一、需求出发点
智能提醒小程序 当前使用的是jdk8,springboot2.3,升级到jdk21和springboot3.3 学习新知识的同时,感受带来的性能提升。
二、切换方案
1、灰度切换
为避免测试不充分,采用新老版本并行,先给一个观察期是最为稳妥的。
方案很简单,通过Nginx 配置集群模式,通过权重指定切量比例,代码如下:
# weight参数是主要配置负载均衡策略使用的, 称为负载均衡的 “权重”策略
upstream apps{
ip_hash;
server 192.168.1.100:8080 weight=1; #新服务
server 192.168.1.101:8080 weight=9; #老服务
}
每日观察 运行日志和报错情况,及时修复,逐日增加新服务的权重。
并行2周 运行无异常后,下掉 老服务。
三、性能提升
1、内存占用、启动速度
同样使用默认的垃圾回收启动后:
老服务内存占用: 428.2m,启动耗时:15.723 seconds
新服务内存占用: 301.9m,启动耗时:10.747 seconds
先参考以上3篇完成后,基本就能跑起来了。
跑起来 遇到的第一个问题就shiro 与springboot3.3.4 不兼容的问题。
调整了多次无果,最后决定把shiro框架卸载掉,重写了shiro部分,过程比预计的难度要低。
四、总结
并行过程中 发现了 分页问题,并及时处理解决,并行是很有意义的。
内存占用的降低,启动速度的提升,达到了降本增效的目的。