
介绍
随着目前网络安全方面越来越重视,老项目框架也需要与时俱进,提升一下版本。
当前项目采用的是Spring Cloud Alibaba 的技术栈,使用Nacos作为注册中心和配置中心。
Spring Boot 2.7.X 系列是JDK1.8系列维护的最后一个版本。
下面这些版本是分水岭,强行升级可能存在兼容问题,所以单独拎出来。
- Spring Boot 2.3.X
- Spring Boot 2.4.X 到 Spring Boot 2.6.X
- Spring Boot 2.7.X
考虑到项目的兼容性以及安全问题,故只将项目提升到 Spring Boot 2.3.X 版本,如果还需要升级,后续再进行规划。
性能差异
| 升级阶段 | 服务端版本 | 客户端版本 | 通信方式 | 性能与稳定性表现 |
| 阶段一:全1.X架构 | 1.X | 1.X | HTTP短连接 + UDP推送 | 性能瓶颈:在较高压力下(如14,000个服务实例),CPU可达100%,实例列表大幅抖动,服务不稳定。 |
| 阶段二:仅升级服务端 | 2.X | 1.X | HTTP短连接(兼容) | 性能部分提升:服务端架构优化带来一定改善,但在高压力下(如14,000实例)CPU仍近100%,可能出现少量实例抖动。 |
| 阶段三:完全升级 | 2.X | 2.X | gRPC长连接 | 性能最佳:同等压力下(如14,000实例),CPU使用率可降至20% 左右,系统稳定。连接容量提升7倍以上,配置读取QPS提升75%。 |
历代版本
| 版本号 | 核心区别与已知重要更新 |
| 1.4.8 | 属于 1.x 系列,采用 HTTP 短轮询 通信模型。作为该系列的末期版本,稳定但性能和实时性有瓶颈。 |
| 2.1.x | 属于 2.x 系列,核心是引入了 GRPC 长连接 通信模型,实现了服务端推送,性能大幅提升。此系列版本在功能、可用性和可运维性上相比开源版本有所增强。 |
| 2.2.x | 在 2.x 架构基础上持续优化。例如,2.2.3 版本默认关闭了开源控制台,并支持查看风险客户端版本。 |
| 2.3.x | 继续在 2.x 架构上迭代。例如,2.3.2 版本支持了命名空间配额的动态修改,并修复了多个关于连接数和服务实例移除的潜在问题。 |
| 2.4.x | 官方文档提及,从 2.1.x ~ 2.4.x 升级到 2.5.x 时,数据库表结构有变化。这表明 2.4.x 仍基于 2.x 的核心架构。 |
| 2.5.x | 在 2.x 架构基础上,对配置灰度功能进行了重构和优化,这会导致表结构变化,并在首次启动时可能对存量数据进行升级。 |
版本选择
| 当前项目 | 当前版本 | 升级版本 |
| Spring Boot | 2.1.3 | 2.3.12 |
| Spring Cloud | Greenwich.RELEASE | Hoxton.SR12 |
| Spring Cloud Alibaba | 2.1.0 | 2.2.11 |
| Naocs | 1.4.8 | 2.4.3 |
| JDK | 1.8 | 1.8 |
当前版本因为用户基数大,也是长期维护的版本,对于老项目来说比较友好。
nacos 部署
官方下载地址
https://nacos.io/download/release-history/?spm=5238cd80.6a33be36.0.0.c2121e5dXfKJdn
cd /data/nacos-server-2.4.3/nacos
vi ./conf/application.properties
# 启动端口
server.port=18848
# 开启认证
nacos.core.auth.enabled=true
# 配置加密信息
nacos.core.auth.server.identity.key=YmFveGluaWFvMTIz
nacos.core.auth.server.identity.value=YmFveGluaWFvMTIzNDU2
nacos.core.auth.plugin.nacos.token.secret.key=YmFveGluaWFvMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
# 启动服务:单机模式
./bin/startup.cmd -m standalone
用户权限配置
新增用户:nacos_dev、nacos_stage、nacos_prod
新增命名空间:DEV、STAGE、PROD
新增角色:ROLE_DEV、ROLE_STAGE、ROLE_PROD
环境:开发、预发布、发布
插件依赖对比
版本依赖调整前
<spring-boot.vsersion>2.1.3.RELEASE</spring-boot.vsersion>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Greenwich</spring-cloud.version>
版本依赖调整后
<spring-boot.vsersion>2.3.12.RELEASE</spring-boot.vsersion>
<spring-cloud-alibaba.version>2.2.11</spring-cloud-alibaba.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
配置文件
server:
port: 8013
# Spring
spring:
application:
# 应用名称
name: cloud-consumer-test
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 192.168.33.88:18848
# 用户名
username: test
# 密码
password: w-:3cfdffz^r
# 命名空间
namespace: 305a4b47-077c-49ab-b1b0-56e3c6bad826
config:
# 配置中心地址
server-addr: ${spring.cloud.nacos.discovery.server-addr}
# 用户名
username: ${spring.cloud.nacos.discovery.username}
# 密码
password: ${spring.cloud.nacos.discovery.password}
# 配置文件格式
file-extension: yml
main:
allow-bean-definition-overriding: true
