15 KiB
15 KiB
迁移与升级
**本文引用的文件** - [pom.xml](file://pom.xml) - [viewsh-dependencies/pom.xml](file://viewsh-dependencies/pom.xml) - [Jenkinsfile](file://Jenkinsfile) - [scripts/deploy.sh](file://scripts/deploy.sh) - [scripts/rollback.sh](file://scripts/rollback.sh) - [scripts/cleanup.sh](file://scripts/cleanup.sh) - [docker-compose.core.yml](file://docker-compose.core.yml) - [docs/technical-overview/09-部署与运维.md](file://docs/technical-overview/09-部署与运维.md) - [sql/tools/README.md](file://sql/tools/README.md) - [sql/tools/convertor.py](file://sql/tools/convertor.py) - [sql/mysql/ruoyi-vue-pro.sql](file://sql/mysql/ruoyi-vue-pro.sql) - [viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application.yaml](file://viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application.yaml) - [viewsh-module-system/viewsh-module-system-server/src/main/resources/application.yaml](file://viewsh-module-system/viewsh-module-system-server/src/main/resources/application.yaml) - [viewsh-gateway/src/main/resources/application.yaml](file://viewsh-gateway/src/main/resources/application.yaml)目录
简介
本文件面向AIOT平台云项目的迁移与升级工作,提供从版本升级流程、依赖升级、数据库迁移、配置变更,到数据迁移方案、兼容性说明、升级前后验证与回滚策略的完整指导。文档同时覆盖CI/CD流水线、容器化部署、健康检查与自动回滚机制,并给出升级工具与脚本的使用指南,帮助团队在保证业务连续性的前提下高效推进升级。
项目结构
项目采用多模块Maven聚合工程组织,核心模块包括网关、系统、基础设施、IoT、运营等子系统,配合统一的依赖管理BOM与容器化编排,形成可扩展、可回滚的升级体系。
graph TB
A["根POM<br/>聚合模块与版本管理"] --> B["viewsh-dependencies<br/>统一依赖BOM"]
A --> C["viewsh-gateway<br/>网关"]
A --> D["viewsh-module-system<br/>系统服务"]
A --> E["viewsh-module-infra<br/>基础设施服务"]
A --> F["viewsh-module-iot<br/>IoT服务"]
A --> G["viewsh-module-ops<br/>运营服务"]
A --> H["CI/CD流水线<br/>Jenkinsfile"]
A --> I["容器编排<br/>docker-compose.core.yml"]
A --> J["数据库迁移工具<br/>sql/tools/convertor.py"]
图表来源
章节来源
核心组件
- 版本与依赖管理
- 根POM负责模块聚合与版本号占位,依赖通过viewsh-dependencies统一管理,确保各模块版本一致性。
- CI/CD流水线
- Jenkinsfile实现智能变更检测、动态并行构建、自动回滚与健康检查,保障升级质量与安全性。
- 容器化部署
- docker-compose.core.yml定义核心服务编排、健康检查与资源限制,配合部署脚本实现滚动更新与回滚。
- 数据库迁移
- 提供多数据库转换工具convertor.py与测试数据库快速启动脚手架,支撑多厂商数据库迁移与验证。
章节来源
- pom.xml
- viewsh-dependencies/pom.xml
- Jenkinsfile
- scripts/deploy.sh
- docker-compose.core.yml
- sql/tools/README.md
- sql/tools/convertor.py
架构总览
整体架构由网关层、服务层、消息中间件、数据库与监控组成。升级时需关注服务间依赖顺序、健康检查与自动回滚策略,确保升级过程的原子性与可恢复性。
graph TB
subgraph "网关层"
GW["Gateway<br/>路由与鉴权"]
end
subgraph "服务层"
SYS["System Server"]
INF["Infra Server"]
IOT["IoT Server"]
IOTGW["IoT Gateway"]
OPS["Ops Server"]
end
subgraph "基础设施"
MQ["RocketMQ"]
DB["MySQL/PG/Oracle 等"]
NACOS["Nacos"]
REDIS["Redis"]
end
subgraph "监控与运维"
SW["SkyWalking"]
LOG["ELK 日志"]
end
GW --> SYS
GW --> INF
GW --> IOT
GW --> OPS
IOT --> IOTGW
SYS --> DB
INF --> DB
IOT --> DB
OPS --> DB
IOT --> MQ
SYS --> MQ
INF --> MQ
OPS --> MQ
IOT --> REDIS
SYS --> REDIS
INF --> REDIS
OPS --> REDIS
GW --> NACOS
IOT --> SW
SYS --> SW
INF --> SW
OPS --> SW
IOT --> LOG
SYS --> LOG
INF --> LOG
OPS --> LOG
图表来源
- docker-compose.core.yml
- viewsh-gateway/src/main/resources/application.yaml
- docs/technical-overview/09-部署与运维.md
详细组件分析
版本升级流程与注意事项
- 版本号管理
- 根POM使用revision占位,统一在构建时展开,确保各模块版本一致。
- 依赖升级
- 通过viewsh-dependencies集中升级Spring Boot、Cloud、MyBatis、Redisson等核心依赖,避免版本漂移。
- 升级步骤
- 准备:备份配置与镜像、评估变更范围。
- 构建:Jenkins流水线自动检测变更,动态并行构建受影响模块。
- 部署:按依赖顺序串行部署,健康检查通过后进入下一服务。
- 回滚:若部署或健康检查失败,自动回滚至上一版本镜像。
- 清理:清理悬空镜像与构建缓存,保留必要版本以便回滚。
章节来源
数据库迁移方案
- 迁移工具
- convertor.py支持将MySQL脚本转换为PostgreSQL、Oracle、SQL Server、达梦、人大金仓、OpenGauss等数据库脚本,便于多厂商验证。
- 测试数据库
- 提供Docker Compose一键启动MySQL、Oracle、PostgreSQL、SQL Server、达梦、金仓、OpenGauss等测试数据库,便于迁移验证。
- 迁移流程建议
- 评估:对比源库与目标库差异,确认对象与约束映射。
- 转换:使用convertor.py生成目标库脚本,结合测试库验证。
- 验证:比对表结构、索引、约束、数据量与典型查询结果。
- 回滚:保留转换前快照,失败时回退至原库。
章节来源
配置变更与兼容性
- 配置加载
- 各服务通过application.yaml加载本地与Nacos远程配置,升级时需确保配置键名与默认值兼容。
- 兼容性策略
- 保持对外API稳定,内部模块间通过灰度负载均衡与路由规则平滑过渡。
- 对破坏性变更,采用双写/双读或版本化接口,逐步切换。
- 网关路由
- Gateway根据路径规则转发到不同后端服务,升级时需同步更新路由与重写规则。
章节来源
- viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application.yaml
- viewsh-module-system/viewsh-module-system-server/src/main/resources/application.yaml
- viewsh-gateway/src/main/resources/application.yaml
升级前准备
- 环境检查
- 确认Docker、镜像仓库可达、磁盘空间充足。
- 数据备份
- 备份当前镜像标签与部署状态,便于回滚。
- 风险评估
- 识别依赖关系与潜在破坏性变更,制定回滚窗口与回退策略。
章节来源
升级后验证
- 功能测试
- 针对关键业务路径进行端到端验证。
- 性能测试
- 关注CPU、内存、IO与数据库连接池使用情况。
- 回归测试
- 覆盖历史缺陷与高频接口,确保稳定性。
- 健康检查
- 通过/actuator/health端点与容器健康检查确认服务可用。
章节来源
回滚策略与应急处理
- 自动回滚
- 部署失败或健康检查失败时,Jenkins与部署脚本自动回滚至上一版本镜像。
- 手动回滚
- 使用rollback.sh读取备份文件,逐个服务回滚。
- 应急处理
- 保留最近版本镜像,避免清理误删;必要时降级至稳定版本。
章节来源
技术债务与重构计划
- 依赖升级优先级
- 高风险组件(数据库驱动、消息中间件、网关、安全框架)优先升级,低风险组件(工具类)延后。
- 重构建议
- 统一异常与日志规范,减少跨模块重复代码;引入契约测试与API版本化,降低破坏性变更影响。
- 清理计划
- 定期清理无用依赖、废弃模块与过时配置,保持BOM简洁。
章节来源
升级工具与脚本使用指南
- 部署脚本
- deploy.sh:支持按服务列表滚动部署、健康检查与自动回滚。
- 回滚脚本
- rollback.sh:读取备份文件,逐个服务回滚。
- 清理脚本
- cleanup.sh:清理停止容器、悬空镜像、旧版本镜像与构建缓存。
- CI/CD
- Jenkinsfile:智能变更检测、动态并行构建、自动回滚与健康检查。
- 数据库迁移
- convertor.py:多数据库脚本转换;README.md提供测试数据库一键启动说明。
章节来源
- scripts/deploy.sh
- scripts/rollback.sh
- scripts/cleanup.sh
- Jenkinsfile
- sql/tools/README.md
- sql/tools/convertor.py
依赖分析
- 依赖耦合
- 网关依赖系统、基础设施、IoT、运营等服务;IoT服务依赖消息中间件与数据库;系统与基础设施依赖Redis与Nacos。
- 升级策略
- 优先升级基础组件(BOM、Redis、Nacos),再升级业务服务;严格遵循依赖顺序,避免循环依赖。
- 外部依赖
- RocketMQ、SkyWalking、XXL-Job等外部组件需与服务版本匹配,升级时同步评估。
graph LR
BOM["viewsh-dependencies"] --> GW["Gateway"]
BOM --> SYS["System Server"]
BOM --> INF["Infra Server"]
BOM --> IOT["IoT Server"]
BOM --> OPS["Ops Server"]
MQ["RocketMQ"] --> IOT
MQ --> SYS
MQ --> INF
MQ --> OPS
REDIS["Redis"] --> SYS
REDIS --> INF
REDIS --> IOT
REDIS --> OPS
NACOS["Nacos"] --> SYS
NACOS --> INF
NACOS --> IOT
NACOS --> OPS
图表来源
章节来源
性能考虑
- 构建性能
- 使用Maven缓存卷与BuildKit缓存,减少依赖下载时间;动态并行度根据CPU/内存自动调整。
- 运行性能
- 为各服务设置内存上限与CPU配额,避免资源争用;启用容器支持参数优化GC。
- 监控与告警
- SkyWalking全链路追踪,ELK日志采集,结合系统级与业务级告警阈值,及时发现性能瓶颈。
章节来源
故障排查指南
- 健康检查失败
- 查看容器健康检查配置与/actuator/health端点返回;确认数据库、消息中间件与配置中心连通性。
- 部署失败
- 检查Jenkins构建日志与回滚状态文件;使用rollback.sh回滚至上一版本。
- 性能异常
- 结合SkyWalking链路与日志分析,定位慢查询、MQ堆积或Redis热点。
- 数据库迁移问题
- 使用convertor.py转换脚本与测试库验证;核对索引、约束与字符集差异。
章节来源
结论
通过统一的依赖管理、完善的CI/CD流水线、容器化编排与自动回滚机制,AIOT平台云项目可在保证业务连续性的前提下高效完成版本升级。配合数据库迁移工具与严格的验证流程,可显著降低升级风险,确保系统稳定性与可维护性。
附录
- 关键配置要点
- 网关路由与重写规则、服务健康检查端点、资源限制与JVM参数。
- 常用命令
- 部署:./scripts/deploy.sh;回滚:./scripts/rollback.sh;清理:./scripts/cleanup.sh。
- 参考文档
- 部署与运维文档、数据库迁移工具说明。
章节来源