You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.1 KiB
9.1 KiB
架构概述
文档版本:v1.0
最后更新:2025-01-27
目录
系统特点
Jointo是一个 AI 驱动的视频创作平台,具有以下核心特点:
1. AI 驱动
- 大量使用 AI 生成功能(图片、视频、音效、字幕、配音)
- 支持多种 AI 模型和服务提供商
- 异步处理 AI 任务,支持进度查询
2. 文件密集
- 需要处理大量图片、视频、音频文件
- 支持多种文件格式(图片、视频、音频、文档)
- 使用对象存储管理文件资源
3. 异步任务
- AI 生成和视频导出都是耗时操作
- 使用任务队列(Celery)处理异步任务
- 支持任务重试、优先级、进度追踪
4. 协作支持
- 支持多人协同编辑项目
- 基于角色的权限管理(owner、editor、viewer)
- 实时通知和状态同步
5. 实时性要求
- 部分功能需要实时反馈(WebSocket)
- 缓存热点数据提升响应速度
- 优化数据库查询性能
架构设计原则
1. 微服务化
- 核心服务解耦,便于扩展
- 每个服务职责单一,易于维护
- 支持独立部署和升级
2. 异步优先
- 耗时操作异步处理,避免阻塞
- 使用消息队列解耦服务
- 支持任务重试和错误处理
3. 可扩展性
- 支持水平扩展(增加服务器节点)
- 数据库读写分离
- 使用缓存减轻数据库压力
4. 高可用性
- 关键服务冗余部署
- 数据库主从复制
- 自动故障转移
5. 安全性
- 完善的认证授权机制(JWT)
- 基于角色的访问控制(RBAC)
- 数据加密和安全传输(HTTPS)
整体架构图
┌─────────────────────────────────────────────────────────────┐
│ 前端 (React) │
└───────────────────────────┬─────────────────────────────────┘
│ HTTPS
┌───────────────────────────▼─────────────────────────────────┐
│ API Gateway / Nginx │
│ (负载均衡、SSL终止、路由) │
└───────────────┬───────────────────────────┬─────────────────┘
│ │
┌───────────▼──────────┐ ┌───────────▼──────────┐
│ API 服务 (FastAPI) │ │ WebSocket 服务 │
│ - RESTful API │ │ - 实时协作 │
│ - 认证授权 │ │ - 实时通知 │
└───────────┬──────────┘ └──────────────────────┘
│
┌───────────▼───────────────────────────────────────────┐
│ 业务逻辑层 (Services) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │项目管理 │ │分镜管理 │ │资源管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │视频管理 │ │AI服务 │ │导出服务 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└───────────┬───────────────────────────────────────────┘
│
┌───────────▼───────────────────────────────────────────┐
│ 数据访问层 (Repositories) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │PostgreSQL │ │ Redis │ │ SQLModel │ │
│ │(主数据库) │ │ (缓存) │ │ (ORM) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────────────┘
│
┌───────────▼───────────────────────────────────────────┐
│ 异步任务层 (Celery) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Celery │ │ RabbitMQ │ │ Worker │ │
│ │ (任务队列)│ │ (消息队列)│ │ (任务执行)│ │
│ └──────────┘ └──────────┘ └──────────┘ │
└───────────┬───────────────────────────────────────────┘
│
┌───────────▼───────────────────────────────────────────┐
│ 外部服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │对象存储 │ │ AI API │ │ 视频处理 │ │
│ │(MinIO/ │ │(AIHubMix)│ │(FFmpeg) │ │
│ │ S3) │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────────────┘
核心模块
1. API 服务层
- 职责:接收 HTTP 请求,路由分发,参数验证
- 技术:FastAPI
- 特点:高性能、自动生成文档、类型安全
2. 业务逻辑层
- 职责:实现业务规则,协调数据访问和外部服务
- 模块:
- 项目管理服务
- 分镜管理服务
- 剧本管理服务
- 资源管理服务
- AI 生成服务
- 视频导出服务
3. 数据访问层
- 职责:数据库操作、缓存管理、查询优化
- 技术:SQLAlchemy ORM、Redis
- 特点:统一数据访问接口,支持事务
4. 异步任务层
- 职责:处理耗时任务(AI 生成、视频导出)
- 技术:Celery + RabbitMQ
- 特点:支持重试、优先级、定时任务
5. 外部服务层
- 对象存储:MinIO / AWS S3(文件管理)
- AI 服务:OpenAI、Stable Diffusion(内容生成)
- 视频处理:FFmpeg(视频合成、转码)
数据流示例
用户创建项目流程
1. 前端发送 POST /api/v1/projects 请求
↓
2. API 层验证请求参数(Pydantic)
↓
3. 业务逻辑层(ProjectService)
- 检查用户权限
- 创建项目记录
↓
4. 数据访问层(ProjectRepository)
- 写入 PostgreSQL
- 更新 Redis 缓存
↓
5. 返回项目信息给前端
AI 生成图片流程
1. 前端发送 POST /api/v1/ai/generate-image 请求
↓
2. API 层验证参数
↓
3. 业务逻辑层(AIService)
- 创建 AI 任务记录
- 提交异步任务到 Celery
↓
4. 返回任务 ID 给前端
↓
5. Celery Worker 执行任务
- 调用 AI API(Stable Diffusion)
- 上传生成的图片到对象存储
- 更新任务状态
↓
6. 前端轮询任务状态,获取结果
相关文档
文档版本:v1.0
最后更新:2025-01-27