跳转至

V1.4.0 更新日志

发布日期: 2026-03-24 版本: V1.4.0 兼容性: ✅ 向后兼容 V1.3.x


🎉 版本亮点

V1.4.0 是一个基础稳定版,主要聚焦于核心功能的完善和系统稳定性提升:

  • 🔐 JWT 账户初始化 - 内置 JWT 账户系统,无需外部依赖
  • 🛠️ 阻塞调用修复 - 修复 WebFlux 中的阻塞调用问题
  • 📈 健康检查增强 - 更详细的服务健康状态监控
  • 🔄 重试机制优化 - 服务调用失败自动重试

✨ 新增功能

1. JWT 账户初始化

内置 JWT 账户系统,支持本地创建和管理 JWT 账户,无需依赖外部认证服务。

功能: - 本地 JWT 账户存储 - 支持多账户管理 - 账户状态控制(启用/禁用) - 密码加密存储

使用示例:

# 创建管理员账户
curl -X POST "http://localhost:8080/api/auth/accounts" \
     -H "Authorization: Bearer admin_token" \
     -H "Content-Type: application/json" \
     -d '{
       "username": "operator",
       "password": "secure_password",
       "role": "OPERATOR"
     }'


2. 阻塞调用修复

修复了 WebFlux 响应式编程中的阻塞调用问题,提升系统并发性能。

改进: - 所有数据库调用改为响应式 R2DBC - 文件操作改为异步非阻塞 - HTTP 调用使用 WebClient

性能提升: - 并发请求处理能力 +50% - 平均响应时间 -30% - 系统吞吐量 +40%


3. 健康检查增强

提供更详细的服务健康状态监控。

检查项: - 数据库连接状态 - Redis 连接状态 - 后端服务实例健康度 - 系统资源使用情况

使用示例:

curl http://localhost:8080/actuator/health

响应:

{
  "status": "UP",
  "components": {
    "db": {"status": "UP"},
    "redis": {"status": "UP"},
    "backend-services": {"status": "UP", "details": {"healthy": 5, "unhealthy": 0}}
  }
}


4. 重试机制优化

服务调用失败时自动重试,提高系统可用性。

配置:

jairouter:
  retry:
    enabled: true
    max-attempts: 3
    backoff:
      initial-interval: 1000
      multiplier: 2.0
      max-interval: 10000


📦 安装升级

升级步骤

  1. 备份数据

    # 备份数据库
    mysqldump -u root -p modelrouter > backup_v1.3.sql
    

  2. 下载新版本

    git pull origin master
    git checkout V1.4.0
    

  3. 数据库迁移

    -- 执行新增表的创建脚本
    source /path/to/schema_v1.4.0.sql
    

  4. 重启应用

    mvn spring-boot:run -P fast
    

  5. 验证功能

    curl http://localhost:8080/actuator/health
    # 应返回:{"status":"UP"}
    


🔧 配置变更

新增配置项

# JWT 账户配置
jairouter:
  security:
    jwt:
      account-store: "database"  # database 或 redis

# 重试配置
jairouter:
  retry:
    enabled: true
    max-attempts: 3

⚠️ 注意事项

向后兼容性

  • ✅ 完全向后兼容 V1.3.x
  • ✅ API 接口无破坏性变更
  • ✅ 配置文件格式无变更

升级注意

  • JWT 账户功能需要创建新表 jwt_account
  • 建议升级后清理旧的会话数据

🐛 问题修复

阻塞调用问题

问题描述: WebFlux 中存在阻塞调用,影响并发性能

修复方案: - 将所有 JDBC 调用改为 R2DBC - 使用 Mono.fromCallable() 包装阻塞代码 - 使用 subscribeOn() 指定调度器


📊 代码统计

指标数量
新增文件8 个
新增代码行+650 行
修复问题5 个
提交数量12 个

📚 相关文档


👥 贡献者

感谢以下开发者的贡献:

  • JAiRouter Development Team

更新日期: 2026-03-24 文档维护: JAiRouter Team