Files
ai-paas-comparison/docs/02-系统架构设计.md
T
qyyfw 8209f15d0a docs: v2.0 全面修订 — 开源优先 + 扁平化用户模型
核心变更:
- 产品定位: '像用水电一样使用AI能力,注册即用,按量付费'
- 用户模型: 去掉租户概念,扁平化为 订阅用户/非订阅用户
- 认证: Casdoor SSO + 阿里云实名认证(替代 Keycloak)
- LLM 网关: NEW API 开源(替代自研 Go 网关)
- AI 服务: FastAPI(替代 Go 自研,AI 生态更兼容)
- 新增: 欠费不影响已发布能力(核心商业规则)
- 新增: 开发者提现模块
- 开发周期: 20周 → 15周(开源组件复用)

文档列表:
- 01-PRD-产品需求文档.md (v2.0)
- 02-系统架构设计.md (v2.0)
- 03-数据库设计.md (v2.0)
- 04-API接口规范.md (v2.0)
- 05-AGENTS-MiMoCode配置.md (v2.0)
2026-06-27 11:35:53 +00:00

476 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI PaaS 商业平台 — 系统架构设计
> 版本: 2.0 | 日期: 2026-06-27
> 状态: 已修订(基于用户反馈:开源优先 + AI 生态兼容)
---
## 1. 设计原则
### 1.1 核心原则(v2.0 强化)
```
1. 开源优先: 能用开源就不自研,社区活跃 > 自己造轮子
2. AI 生态兼容: 所有选型必须兼容当前 AI 生态标准(OpenAI 格式、MCP 协议等)
3. 标准化: 遵循行业标准协议,确保未来可扩展
4. 扁平化: 不搞多租户复杂度,一个用户体系走天下
5. 渐进式: 先跑通核心链路,再逐步丰富功能
```
### 1.2 技术选型决策矩阵
| 组件 | 选项 A | 选项 B | 决策 | 理由 |
|------|--------|--------|------|------|
| **LLM 网关** | 自研 Go | NEW API 开源 | **NEW API** | 14k Stars,开箱即用,省 6 周开发 |
| **SSO 认证** | Keycloak | Casdoor | **Casdoor** | 国内生态更好,微信/钉钉对接完善 |
| **实名认证** | 自建 OCR | 阿里云 API | **阿里云** | 国内最权威,接口稳定 |
| **AI 服务框架** | Go 自研 | FastAPI | **FastAPI** | AI 生态标准,79k Stars,异步高性能 |
| **本地 LLM** | 自建 | Ollama | **Ollama** | 130k Stars,本地部署事实标准 |
| **API 网关** | 自研 | APISIX | **APISIX** | 高性能,插件丰富,国内团队 |
| **数据库** | MySQL | PostgreSQL | **PostgreSQL** | JSONB + RLS,功能更强 |
| **缓存** | Memcached | Redis | **Redis** | Lua 脚本支持,原子计费必备 |
| **消息队列** | RabbitMQ | Kafka | **Kafka** | 用量数据天然适合日志型存储 |
---
## 2. 整体架构
```
┌──────────────────────────────────────────────────────────────────────┐
│ 用户入口层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web App │ │ CLI Tool │ │ REST API │ │ IM Bot │ │ MCP Hub │ │
│ │ (React) │ │ │ │ │ │(微信/QQ) │ │ │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └────────────┴────────────┴────────────┴────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────▼─────────────────────────────────────┐
│ API 网关层 (APISIX) │
│ 认证鉴权 → 限流 → 路由 → 日志 → 监控 │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────▼─────────────────────────────────────┐
│ 核心服务层 │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Casdoor (SSO 认证中心) │ │
│ │ 注册/登录 → JWT 签发 → 用户管理 → 第三方登录(微信/钉钉) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ FastAPI AI 中间件层 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 计费引擎 │ │ 能力注册 │ │ Skills │ │ 用量追踪 │ │ │
│ │ │ (Redis │ │ 中心 │ │ 市场 │ │ (Kafka) │ │ │
│ │ │ Lua) │ │ │ │ │ │ │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ NEW API (LLM 网关) │ │
│ │ 多模型管理 → 负载均衡 → 故障转移 → 流式透传 → 用量统计 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────────▼─────────────────────────────────────┐
│ AI 能力层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ DeepSeek │ │ 千问 │ │ 豆包 │ │ 智谱 │ │ Ollama │ │
│ │ (API) │ │ (API) │ │ (API) │ │ (API) │ │ (本地) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────────────────┘
```
---
## 3. 核心服务拆分
### 3.1 服务列表(v2.0 简化)
| 服务 | 技术 | 端口 | 职责 | 开源/自研 |
|------|------|------|------|----------|
| **Casdoor** | Go | 8000 | SSO 认证中心 | 开源 |
| **NEW API** | Go | 3000 | LLM 网关 | 开源 |
| **ai-paas-gateway** | FastAPI | 8080 | 核心业务网关 | **自研** |
| **ai-paas-billing** | FastAPI | 8081 | 计费引擎 | **自研** |
| **ai-paas-registry** | FastAPI | 8082 | 能力注册中心 | **自研** |
| **ai-paas-skills** | FastAPI | 8083 | Skills 市场 | **自研** |
| **ai-paas-metering** | FastAPI | 8084 | 用量追踪 | **自研** |
| **ai-paas-admin** | FastAPI | 8085 | 管理后台 API | **自研** |
| **APISIX** | Lua/C | 9080 | API 网关 | 开源 |
| **Ollama** | Go | 11434 | 本地 LLM 推理 | 开源 |
| **LangFlow** | Python | 7860 | Agent 编排 | 开源 |
> **v2.0 变化**: 原 9 个自研 Go 服务 → 简化为 6 个 FastAPI 服务 + 3 个开源组件。
---
## 4. 自研服务详细设计
### 4.1 ai-paas-gateway(核心业务网关)— FastAPI
这是整个平台的**核心调度中心**,所有业务请求经过这里。
```python
# 技术选型: FastAPI (Python 3.11+)
# 为什么 FastAPI:
# 1. AI 生态标准框架,LangChain/LlamaIndex 原生支持
# 2. 异步高性能,自带 OpenAPI 文档
# 3. 类型安全 (Pydantic),开发效率高
# 4. 社区极其活跃 (79k Stars)
# 5. 部署简单 (uvicorn + Docker)
# 核心路由:
POST /v1/chat/completions → 转发到 NEW API,前置计费/鉴权
GET /v1/models → 转发到 NEW API
GET /api/v1/user/profile → 用户信息
POST /api/v1/auth/* → 转发到 Casdoor
GET /api/v1/billing/* → 计费查询
GET /api/v1/capabilities/* → 能力注册
GET /api/v1/skills/* → Skills 市场
```
**请求处理链路(LLM 调用):**
```
用户请求 → APISIX → ai-paas-gateway
1. JWT/API Key 验证 (调用 Casdoor)
2. 用户状态检查 (订阅/欠费)
3. Credit 余额检查 (Redis)
4. 扣减 Credit (Redis Lua 原子操作)
5. 转发到 NEW API
6. 返回响应 (流式 SSE 透传)
7. 异步上报用量 (Kafka)
```
### 4.2 ai-paas-billing(计费引擎)— FastAPI
```python
# Redis Lua 原子脚本 (先扣后服)
"""
-- deduct_credit.lua
local balance = tonumber(redis.call('GET', KEYS[1]) or '0')
local amount = tonumber(ARGV[1])
local idempotency_key = ARGV[2]
-- 幂等检查
if redis.call('EXISTS', 'billing:idempotency:' .. idempotency_key) == 1 then
return redis.call('GET', 'billing:idempotency:' .. idempotency_key)
end
if balance < amount then
return 'INSUFFICIENT_BALANCE'
end
local new_balance = balance - amount
redis.call('SET', KEYS[1], new_balance)
redis.call('SETEX', 'billing:idempotency:' .. idempotency_key, 86400, 'OK')
return 'OK:' .. new_balance
"""
```
### 4.3 ai-paas-registry(能力注册中心)— FastAPI
```python
# 能力 CRUD + 版本管理
# 支持: agent/mcp/skill/llm/custom 五种类型
# 状态机: draft → pending_review → active → deprecated
# 能力发现: 按类型/标签/评分/使用量查询
# 能力验证: 注册时自动健康检查
# 能力版本: SemVer 版本管理
```
### 4.4 ai-paas-skills(Skills 市场)— FastAPI
```python
# 全文搜索: PostgreSQL GIN 索引
# 技能交易: 扣费 → 分成 → 授权
# 评分系统: 1-5 星 + 文字评价
# 开发者后台: 发布/管理/收益统计
```
### 4.5 ai-paas-metering(用量追踪)— FastAPI
```python
# Kafka Consumer: 消费 usage.events
# PostgreSQL 持久化: token_usage 表 (按月分区)
# 预聚合: 每小时刷新 usage_summaries
# 用量查询: 按日/周/月/模型/能力统计
# 账单生成: 月度账单自动计算
```
### 4.6 ai-paas-admin(管理后台)— FastAPI
```python
# 用户管理: 列表/详情/状态变更
# 能力审核: 审批/拒绝
# 财务管理: 流水/提现/对账
# 系统监控: 健康检查/配置管理
```
---
## 5. 数据流向
### 5.1 LLM 调用主流程
```
用户 → Web/CLI/API
→ APISIX (限流/路由)
→ ai-paas-gateway (鉴权/计费/转发)
→ NEW API (模型路由)
→ DeepSeek/千问/豆包... (实际推理)
→ 响应流式返回用户
→ 异步: 用量事件 → Kafka → ai-paas-metering → PostgreSQL
```
### 5.2 能力发布流程
```
开发者 → Web Dashboard
→ ai-paas-registry (创建能力)
→ 管理员审核
→ ai-paas-skills (上架市场)
→ 用户浏览/购买
→ ai-paas-billing (扣费/分成)
```
### 5.3 认证流程
```
用户 → Web App
→ Casdoor (注册/登录)
→ 阿里云实名认证 API (身份验证)
→ ai-paas-gateway (更新用户状态)
→ JWT Token 签发
```
---
## 6. 开源组件集成方案
### 6.1 Casdoor (SSO 认证中心)
```
部署方式: Docker Compose
对接方式: OAuth2 / OIDC
功能:
- 用户注册/登录 (手机号/邮箱/微信)
- JWT Token 签发与验证
- 第三方登录 (微信/钉钉/飞书)
- 用户管理界面
- RBAC 权限管理
集成点:
- ai-paas-gateway 调用 Casdoor API 验证 Token
- NEW API 配置 Casdoor 作为认证后端
```
### 6.2 NEW API (LLM 网关)
```
部署方式: Docker Compose
对接方式: OpenAI 兼容 API
功能:
- 多模型统一管理 (DeepSeek/千问/豆包/智谱/元宝/百度)
- 负载均衡与故障转移
- 流式 SSE 透传
- 用量统计与配额管理
- 渠道管理 (API Key 池)
集成点:
- ai-paas-gateway 作为唯一上游调用 NEW API
- NEW API 配置各 LLM 平台的 API Key
- NEW API 的用量数据同步到 ai-paas-metering
```
### 6.3 Ollama (本地 LLM)
```
部署方式: Docker + GPU 直通
支持模型: Qwen2.5, Llama3, Mistral, Phi3 等
功能:
- 本地模型推理 (离线可用)
- 模型拉取/管理
- OpenAI 兼容 API
集成点:
- NEW API 添加 Ollama 作为渠道
- 提供「本地模型」标签,免费/低价使用
```
### 6.4 LangFlow (Agent 编排)
```
部署方式: Docker Compose
功能:
- 可视化 Agent 工作流编排
- 预置 Agent 模板
- 自定义工具链
集成点:
- ai-paas-registry 注册 LangFlow 工作流为 Agent 能力
- 调用链: 用户 → gateway → LangFlow → LLM
```
### 6.5 APISIX (API 网关)
```
部署方式: Docker Compose
功能:
- 请求路由与负载均衡
- 限流限速 (多维度)
- 认证鉴权 (JWT/API Key)
- 日志采集与监控
- 插件扩展
集成点:
- 所有外部请求入口
- 路由规则: /v1/chat/* → gateway, /api/* → gateway
- 鉴权插件对接 Casdoor
```
---
## 7. 数据库架构
### 7.1 数据存储选型
| 存储 | 用途 | 选型理由 |
|------|------|---------|
| PostgreSQL 16 | 主数据库 | JSONB + RLS + 全文搜索 |
| Redis 7 | 缓存/计费/会话 | Lua 原子操作 |
| Kafka 3.x | 用量事件流 | 高吞吐日志型存储 |
### 7.2 核心数据表(扁平化设计,无租户概念)
| 表名 | 用途 | 关键字段 |
|------|------|---------|
| users | 用户 | id, phone, email, name, role, verified, subscribed |
| api_keys | API 密钥 | id, user_id, key_hash, scopes |
| subscriptions | 订阅 | id, user_id, plan, credits_included, credits_used |
| credit_transactions | Credit 流水 | id, user_id, type, amount, balance_after |
| token_usage | Token 用量 | id, user_id, model, tokens, cost |
| capabilities | AI 能力 | id, user_id, name, type, status |
| skills | 技能市场 | id, developer_id, name, pricing, rating |
| skill_purchases | 技能购买 | id, user_id, skill_id, amount |
> **注意**: v2.0 去掉了 `tenants` 表和所有 `tenant_id` 字段,所有表直接挂在 `user_id` 下。
---
## 8. 部署架构
### 8.1 开发环境 (docker-compose.yml)
```yaml
services:
# 基础设施
postgres:
image: postgres:16
redis:
image: redis:7-alpine
kafka:
image: confluentinc/cp-kafka:7.6.0
# 开源组件
casdoor:
image: casbin/casdoor:latest
new-api:
image: justsong/one-api:latest
ollama:
image: ollama/ollama:latest
apisix:
image: apache/apisix:3.15.0
# 自研服务 (FastAPI)
ai-paas-gateway:
build: ./services/gateway
ai-paas-billing:
build: ./services/billing
ai-paas-registry:
build: ./services/registry
ai-paas-skills:
build: ./services/skills
ai-paas-metering:
build: ./services/metering
ai-paas-admin:
build: ./services/admin
# 前端
web:
build: ./packages/web
```
### 8.2 生产环境
```
Kubernetes + Helm Charts
├── 基础设施: PostgreSQL HA / Redis Sentinel / Kafka Cluster
├── 开源组件: Casdoor / NEW API / Ollama (GPU Node) / APISIX
├── 自研服务: FastAPI × N replicas (HPA 自动伸缩)
├── 监控: Prometheus + Grafana
└── 日志: Loki + Promtail
```
---
## 9. 安全架构
### 9.1 认证链路
```
外部请求 → APISIX
→ JWT 验证 (Casdoor 签发)
→ API Key 验证 (查 PostgreSQL)
→ 用户状态检查
```
### 9.2 数据安全
- 实名信息: AES-256 加密存储
- API Key: SHA-256 哈希存储
- 密码: bcrypt 加密
- 通信: HTTPS 全站加密
### 9.3 接口安全
- 限流: IP + 用户 + 接口多维度
- 防重放: 请求签名 + 时间戳
- 输入校验: Pydantic 强类型校验
---
## 10. 开发路线图(v2.0 调整)
### Phase 1(第 1-3 周): 基座搭建
- 部署 Casdoor + NEW API + APISIX + PostgreSQL + Redis
- 开发 ai-paas-gateway 核心路由
- 实现 JWT 认证 + API Key 管理
- 实现基础 LLM 调用链路 (gateway → NEW API → LLM)
- **里程碑**: 用户注册 → 登录 → 调用 LLM 对话
### Phase 2(第 4-6 周): 计费引擎
- 开发 ai-paas-billing
- Redis Lua 原子扣费
- 订阅管理 (套餐/充值/欠费)
- 用量追踪 (Kafka → metering)
- **里程碑**: 用户充值 → 调用扣费 → 账单可查
### Phase 3(第 7-9 周): 能力市场
- 开发 ai-paas-registry (能力 CRUD)
- 开发 ai-paas-skills (技能交易)
- 阿里云实名认证对接
- 能力审核流程
- **里程碑**: 开发者发布能力 → 用户购买使用
### Phase 4(第 10-12 周): 生态扩展
- Ollama 本地模型集成
- IM Bot 多平台对接
- MCP 工具链集成
- LangFlow Agent 编排
- **里程碑**: 全生态打通
### Phase 5(第 13-15 周): 上线准备
- 全链路测试
- 性能压测
- 监控告警
- 文档完善
- **里程碑**: 正式上线
> **v2.0 变化**: 原 20 周 → 缩短为 15 周,得益于开源组件的复用。
---
*文档结束*