跳转至

架构说明

文档版本: 1.0.0
最后更新: 2025-08-19
Git 提交: c1aa5b0f
作者: Lincoln

概述

JAiRouter 是一个基于 Spring Boot 3.5.x 和 Spring WebFlux 构建的响应式 AI 模型服务路由网关。采用模块化设计,支持多种负载均衡策略、限流算法、熔断机制和动态配置管理。

整体架构

graph TB
    subgraph "客户端层"
        A[Web客户端]
        B[移动应用]
        C[第三方服务]
    end

    subgraph "网关层"
        D[统一API网关]
        E[负载均衡器]
        F[限流器]
        G[熔断器]
    end

    subgraph "适配器层"
        H[GPUStack适配器]
        I[Ollama适配器]
        J[VLLM适配器]
        K[OpenAI适配器]
    end

    subgraph "后端服务"
        L[GPUStack实例]
        M[Ollama实例]
        N[VLLM实例]
        O[OpenAI服务]
    end

    A --> D
    B --> D
    C --> D
    D --> E
    E --> F
    F --> G
    G --> H
    G --> I
    G --> J
    G --> K
    H --> L
    I --> M
    J --> N
    K --> O

核心模块架构

1. 控制器层 (Controller Layer)

graph LR
    A[UniversalController] --> B[Chat API]
    A --> C[Embedding API]
    A --> D[Rerank API]
    A --> E[TTS API]
    A --> F[STT API]
    A --> G[Image API]

    H[ModelManagerController] --> I[实例管理]
    H --> J[配置更新]

    K[AutoMergeController] --> L[配置合并]
    K --> M[文件管理]

职责: - 统一 API 入口,提供 OpenAI 兼容接口 - 动态配置管理接口 - 配置文件自动合并功能

2. 服务层 (Service Layer)

graph TB
    subgraph "核心服务"
        A[ModelServiceRegistry]
        B[LoadBalancerFactory]
        C[RateLimiterFactory]
        D[CircuitBreakerFactory]
    end

    subgraph "管理服务"
        E[ConfigurationService]
        F[HealthCheckService]
        G[AutoMergeService]
    end

    A --> B
    A --> C
    A --> D
    E --> A
    F --> A

职责: - 服务注册与发现 - 组件工厂管理 - 配置动态更新 - 健康检查监控

3. 适配器层 (Adapter Layer)

graph TB
    A[BaseAdapter] --> B[GPUStackAdapter]
    A --> C[OllamaAdapter]
    A --> D[VLLMAdapter]
    A --> E[XinferenceAdapter]
    A --> F[LocalAIAdapter]
    A --> G[OpenAIAdapter]

    subgraph "适配器功能"
        H[请求转换]
        I[响应映射]
        J[错误处理]
        K[流式处理]
    end

    B --> H
    B --> I
    B --> J
    B --> K

职责: - 统一不同后端服务的调用方式 - 请求/响应格式转换 - 协议适配和错误处理

4. 负载均衡层 (Load Balancer Layer)

graph TB
    A[LoadBalancer接口] --> B[RandomLoadBalancer]
    A --> C[RoundRobinLoadBalancer]
    A --> D[LeastConnectionsLoadBalancer]
    A --> E[IPHashLoadBalancer]

    subgraph "负载均衡策略"
        F[随机选择]
        G[轮询调度]
        H[最少连接]
        I[IP哈希]
    end

    B --> F
    C --> G
    D --> H
    E --> I

职责: - 实现多种负载均衡算法 - 支持权重配置 - 动态实例管理

5. 限流层 (Rate Limiting Layer)

graph TB
    A[RateLimiter接口] --> B[TokenBucketRateLimiter]
    A --> C[LeakyBucketRateLimiter]
    A --> D[SlidingWindowRateLimiter]
    A --> E[WarmUpRateLimiter]

    subgraph "限流算法"
        F[令牌桶]
        G[漏桶]
        H[滑动窗口]
        I[预热限流]
    end

    B --> F
    C --> G
    D --> H
    E --> I

职责: - 实现多种限流算法 - 支持客户端IP独立限流 - 动态限流参数调整

6. 熔断层 (Circuit Breaker Layer)

stateDiagram-v2
    [*] --> CLOSED
    CLOSED --> OPEN : 失败率超过阈值
    OPEN --> HALF_OPEN : 等待时间到达
    HALF_OPEN --> CLOSED : 成功次数达到阈值
    HALF_OPEN --> OPEN : 失败次数达到阈值

职责: - 实现熔断器状态管理 - 失败率统计和阈值检测 - 自动恢复机制

7. 存储层 (Storage Layer)

graph TB
    A[ConfigStore接口] --> B[MemoryConfigStore]
    A --> C[FileConfigStore]

    subgraph "存储功能"
        D[配置持久化]
        E[配置加载]
        F[配置合并]
        G[版本管理]
    end

    B --> D
    B --> E
    C --> D
    C --> E
    C --> F
    C --> G

职责: - 配置数据持久化 - 支持内存和文件存储 - 配置版本管理和合并

技术栈

核心框架

  • Java 17+: 现代Java特性支持
  • Spring Boot 3.5.x: 应用框架和自动配置
  • Spring WebFlux: 响应式Web框架
  • Reactor Core: 响应式编程支持

构建工具

  • Maven 3.8+: 项目构建和依赖管理
  • Maven Wrapper: 确保构建环境一致性

监控和文档

  • SpringDoc OpenAPI: API文档自动生成
  • Micrometer: 指标收集和监控
  • Spring Boot Actuator: 健康检查和管理端点

代码质量

  • Checkstyle: 代码风格检查
  • SpotBugs: 静态代码分析
  • JaCoCo: 代码覆盖率分析

设计原则

1. 响应式编程

  • 使用 Reactor 实现非阻塞I/O
  • 支持高并发请求处理
  • 背压处理和流量控制

2. 模块化设计

  • 清晰的模块边界和职责分离
  • 可插拔的组件架构
  • 易于扩展和维护

3. 配置驱动

  • 支持静态配置和动态配置
  • 配置热更新无需重启
  • 配置版本管理和回滚

4. 容错设计

  • 多层次的容错机制
  • 优雅降级和故障恢复
  • 完善的错误处理和日志记录

5. 可观测性

  • 全面的指标监控
  • 结构化日志输出
  • 健康检查和状态报告

扩展点

1. 适配器扩展

实现 BaseAdapter 接口,支持新的后端服务:

@Component
public class CustomAdapter extends BaseAdapter {
    @Override
    public Mono<String> processRequest(String serviceType, String requestBody, ServiceInstance instance) {
        // 实现自定义适配逻辑
    }
}

2. 负载均衡策略扩展

实现 LoadBalancer 接口,添加新的负载均衡算法:

@Component
public class CustomLoadBalancer implements LoadBalancer {
    @Override
    public ServiceInstance selectInstance(List<ServiceInstance> instances, String clientInfo) {
        // 实现自定义负载均衡逻辑
    }
}

3. 限流算法扩展

实现 RateLimiter 接口,添加新的限流算法:

@Component
public class CustomRateLimiter implements RateLimiter {
    @Override
    public boolean tryAcquire(String key, int permits) {
        // 实现自定义限流逻辑
    }
}

性能考虑

1. 内存管理

  • 定时清理不活跃的限流器
  • 合理的缓存策略和过期机制
  • 避免内存泄漏

2. 并发处理

  • 使用响应式编程模型
  • 合理的线程池配置
  • 避免阻塞操作

3. 网络优化

  • 连接池复用
  • 请求超时控制
  • 背压处理

4. 监控和调优

  • 关键指标监控
  • 性能瓶颈识别
  • 动态参数调整

安全考虑

1. 输入验证

  • 请求参数校验
  • 防止注入攻击
  • 数据格式验证

2. 访问控制

  • API密钥认证
  • 请求频率限制
  • IP白名单机制

3. 数据保护

  • 敏感信息脱敏
  • 传输加密
  • 日志安全

这个架构设计确保了 JAiRouter 的可扩展性、可维护性和高性能,为AI模型服务路由提供了稳定可靠的基础平台。