Files
aiot-platform-cloud/.qoder/repowiki/zh/content/迁移与升级.md

15 KiB
Raw Blame History

迁移与升级

**本文引用的文件** - [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)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向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与测试数据库快速启动脚手架支撑多厂商数据库迁移与验证。

章节来源

架构总览

整体架构由网关层、服务层、消息中间件、数据库与监控组成。升级时需关注服务间依赖顺序、健康检查与自动回滚策略,确保升级过程的原子性与可恢复性。

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

图表来源

详细组件分析

版本升级流程与注意事项

  • 版本号管理
    • 根POM使用revision占位统一在构建时展开确保各模块版本一致。
  • 依赖升级
    • 通过viewsh-dependencies集中升级Spring Boot、Cloud、MyBatis、Redisson等核心依赖避免版本漂移。
  • 升级步骤
    1. 准备:备份配置与镜像、评估变更范围。
    2. 构建Jenkins流水线自动检测变更动态并行构建受影响模块。
    3. 部署:按依赖顺序串行部署,健康检查通过后进入下一服务。
    4. 回滚:若部署或健康检查失败,自动回滚至上一版本镜像。
    5. 清理:清理悬空镜像与构建缓存,保留必要版本以便回滚。

章节来源

数据库迁移方案

  • 迁移工具
    • convertor.py支持将MySQL脚本转换为PostgreSQL、Oracle、SQL Server、达梦、人大金仓、OpenGauss等数据库脚本便于多厂商验证。
  • 测试数据库
    • 提供Docker Compose一键启动MySQL、Oracle、PostgreSQL、SQL Server、达梦、金仓、OpenGauss等测试数据库便于迁移验证。
  • 迁移流程建议
    1. 评估:对比源库与目标库差异,确认对象与约束映射。
    2. 转换使用convertor.py生成目标库脚本结合测试库验证。
    3. 验证:比对表结构、索引、约束、数据量与典型查询结果。
    4. 回滚:保留转换前快照,失败时回退至原库。

章节来源

配置变更与兼容性

  • 配置加载
    • 各服务通过application.yaml加载本地与Nacos远程配置升级时需确保配置键名与默认值兼容。
  • 兼容性策略
    • 保持对外API稳定内部模块间通过灰度负载均衡与路由规则平滑过渡。
    • 对破坏性变更,采用双写/双读或版本化接口,逐步切换。
  • 网关路由
    • Gateway根据路径规则转发到不同后端服务升级时需同步更新路由与重写规则。

章节来源

升级前准备

  • 环境检查
    • 确认Docker、镜像仓库可达、磁盘空间充足。
  • 数据备份
    • 备份当前镜像标签与部署状态,便于回滚。
  • 风险评估
    • 识别依赖关系与潜在破坏性变更,制定回滚窗口与回退策略。

章节来源

升级后验证

  • 功能测试
    • 针对关键业务路径进行端到端验证。
  • 性能测试
    • 关注CPU、内存、IO与数据库连接池使用情况。
  • 回归测试
    • 覆盖历史缺陷与高频接口,确保稳定性。
  • 健康检查
    • 通过/actuator/health端点与容器健康检查确认服务可用。

章节来源

回滚策略与应急处理

  • 自动回滚
    • 部署失败或健康检查失败时Jenkins与部署脚本自动回滚至上一版本镜像。
  • 手动回滚
    • 使用rollback.sh读取备份文件逐个服务回滚。
  • 应急处理
    • 保留最近版本镜像,避免清理误删;必要时降级至稳定版本。

章节来源

技术债务与重构计划

  • 依赖升级优先级
    • 高风险组件(数据库驱动、消息中间件、网关、安全框架)优先升级,低风险组件(工具类)延后。
  • 重构建议
    • 统一异常与日志规范减少跨模块重复代码引入契约测试与API版本化降低破坏性变更影响。
  • 清理计划
    • 定期清理无用依赖、废弃模块与过时配置保持BOM简洁。

章节来源

升级工具与脚本使用指南

  • 部署脚本
    • deploy.sh支持按服务列表滚动部署、健康检查与自动回滚。
  • 回滚脚本
    • rollback.sh读取备份文件逐个服务回滚。
  • 清理脚本
    • cleanup.sh清理停止容器、悬空镜像、旧版本镜像与构建缓存。
  • CI/CD
    • Jenkinsfile智能变更检测、动态并行构建、自动回滚与健康检查。
  • 数据库迁移
    • convertor.py多数据库脚本转换README.md提供测试数据库一键启动说明。

章节来源

依赖分析

  • 依赖耦合
    • 网关依赖系统、基础设施、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。
  • 参考文档
    • 部署与运维文档、数据库迁移工具说明。

章节来源