Skip to content

v2.7.x Package 结构重组

版本系列:v2.7.0 - v2.7.8 完成日期:2026 年 4 月 28 日 状态:已完成


一、概述

1.1 背景

v3.0.0 计划进行微服务架构转型。v2.7.x 版本完成了 Package 结构重组,将现有平铺式 package 结构重组为按服务模块分层结构,为微服务化做好准备。

1.2 目标

  • 将代码按服务模块分组,每个模块对应未来一个微服务
  • 建立清晰的服务边界定义
  • 保持向后兼容,不破坏现有功能
  • 所有测试保持通过

二、Package 结构变更

2.1 原结构(平铺式)

org.unreal.modelrouter/
├── adapter/          (~30 文件) 适配器
├── audit/            (~5 文件)  审计
├── checker/          (~5 文件)  检查器
├── circuitbreaker/   (~15 文件) 熔断器
├── cli/              (~3 文件)  命令行
├── config/           (~15 文件) 配置服务
├── constants/        (~5 文件)  常量
├── controller/       (~20 文件) 控制器
├── dto/              (~15 文件) DTO
├── entity/           (~5 文件)  实体
├── exception/        (~10 文件) 异常定义
├── exceptionhandler/ (~5 文件)  异常处理
├── factory/          (~5 文件)  工厂
├── fallback/         (~5 文件)  降级策略
├── filter/           (~10 文件) 过滤器
├── jpa/              (~15 文件) JPA 实体/仓库
├── loadbalancer/     (~15 文件) 负载均衡
├── model/            (~10 文件) 模型定义
├── monitoring/       (~25 文件) 监控指标
├── ratelimit/        (~10 文件) 限流器
├── repository/       (~5 文件)  仓库
├── sanitization/     (~5 文件)  脱敏服务
├── security/         (~40 文件) 安全认证
├── service/          (~15 文件) 业务服务
├── store/            (~20 文件) 状态存储
├── tracing/          (~20 文件) 链路追踪
├── util/             (~10 文件) 工具类
├── version/          (~10 文件) 版本管理
├── vo/               (~10 文件) VO

2.2 新结构(模块化)

org.unreal.modelrouter/
├── auth/             [认证服务]
│   ├── security/     JWT/ApiKey/Account/黑名单
│   ├── audit/        审计日志
│   └── controller/   认证相关控制器
├── config/           [配置服务]
│   ├── core/         ConfigurationService
│   ├── version/      版本管理
│   ├── sync/         配置同步
│   └── controller/   配置相关控制器
├── router/           [路由服务]
│   ├── adapter/      适配器实现
│   ├── loadbalancer/ 负载均衡
│   ├── circuitbreaker/ 熔断器
│   ├── ratelimit/    限流器
│   ├── fallback/     降级策略
│   ├── checker/      健康检查
│   ├── model/        路由模型
│   └── controller/   路由相关控制器
├── monitor/          [监控服务]
│   ├── tracing/      链路追踪
│   ├── monitoring/   监控指标
│   ├── error/        异常管理
│   └── controller/   监控相关控制器
├── persistence/      [持久化服务]
│   ├── store/        状态存储
│   ├── jpa/          JPA 实体/仓库
│   └── controller/   持久化控制器
├── common/           [公共基础设施]
│   ├── dto/          DTO
│   ├── vo/           VO
│   ├── model/        基础模型
│   ├── exception/    异常定义
│   ├── exceptionhandler/ 异常处理器
│   ├── util/         工具类
│   ├── filter/       过滤器
│   ├── constants/    常量定义
│   ├── sanitization/ 脱敏
│   ├── cli/          命令行
│   └── factory/      工厂
└── Application.java  主启动类

三、服务边界定义

服务职责核心组件API 入口
authJWT认证、ApiKey管理、账户管理、审计日志JwtService, ApiKeyService, AccountManager/api/auth/, /api/jwt/, /api/api-keys/, /api/accounts/
config配置管理、版本控制、配置持久化ConfigurationService, VersionControl/api/services/, /api/instances/, /api/versions/*
router适配器管理、负载均衡、熔断器、限流器BaseAdapter, LoadBalancer, CircuitBreaker/api/chat/, /api/embeddings/, /api/rerank/*
monitor链路追踪、监控指标、异常管理TracingService, MetricsService/api/tracing/, /api/monitoring/, /api/token-usage/*
persistence状态存储、JPA实体、状态恢复StatePersistence, JPA Entities/internal/persistence/*
common常量、DTO、VO、异常、工具、过滤器Constants, DTOs, Utils无(被其他服务引用)

四、版本执行记录

版本日期内容文件迁移数
v2.7.02026-04-28服务边界定义 + 目录创建0
v2.7.12026-04-28auth 模块迁移106
v2.7.22026-04-28config 模块迁移33
v2.7.32026-04-28router 模块迁移(adapter/loadbalancer)34
v2.7.42026-04-28router 模块迁移(circuitbreaker/ratelimit/fallback/checker)28
v2.7.52026-04-28monitor 模块迁移100
v2.7.62026-04-28persistence 模块迁移50
v2.7.72026-04-28common 模块迁移100
v2.7.82026-04-28controller 分组 + 验收30

总迁移文件数: 487 个 Java 文件


五、迁移工具

5.1 迁移脚本

使用 scripts/migrate_package.py 脚本完成批量迁移:

# 示例:迁移 security 到 auth/security
python3 scripts/migrate_package.py \
  --source org.unreal.modelrouter.security \
  --target org.unreal.modelrouter.auth.security \
  --execute

5.2 脚本功能

  • 批量移动 Java 文件
  • 自动更新 package 声明
  • 自动更新 import 语句
  • 生成迁移报告

六、启动问题修复

迁移后发现并修复以下问题:

6.1 logback-spring.xml 类路径更新

<!-- 旧路径 -->
<appender class="org.unreal.modelrouter.tracing.logger.TracingLogbackAppender"/>

<!-- 新路径 -->
<appender class="org.unreal.modelrouter.monitor.tracing.logger.TracingLogbackAppender"/>

6.2 JPA Repository 扫描路径更新

// 旧路径
@EnableJpaRepositories(basePackages = "org.unreal.modelrouter.audit")

// 新路径
@EnableJpaRepositories(basePackages = "org.unreal.modelrouter.auth.audit")

6.3 Bean 冲突解决

多个 StatePersistenceService 实现冲突,使用 @Primary + @Qualifier 模式解决:

@Primary
@Service
public class CompositeStatePersistenceServiceImpl implements StatePersistenceService { ... }

// 消费者使用
@Qualifier("compositeStatePersistenceServiceImpl")
@Autowired
private StatePersistenceService statePersistenceService;

七、验收结果

7.1 编译验证

mvn clean package -DskipTests -Dcheckstyle.skip=true -Dspotbugs.skip=true
# 结果: BUILD SUCCESS

7.2 测试验证

mvn test
# 结果: 721 tests passed

7.3 启动验证

java -jar target/model-router-1.7.0.jar --server.port=8080
# 结果: Started ModelRouterApplication in 15.2 seconds
# Health: UP

八、后续计划

版本系列时间主题
v2.8.x2026-05配置文件整合
v2.9.x2026-05问题修复与梳理
v3.0.02026-06微服务拆分

九、参考文档

  • 服务边界定义:详见项目内部文档 innerdoc/03-重构记录/RFS-v2.7-服务边界定义.md
  • 微服务化准备计划:详见项目内部文档 innerdoc/01-项目概述/v2.7-v2.9-微服务化准备开发计划.md