VidFlow 是一个采用现代技术栈从零构建的企业级视频流媒体平台,提供 Go、Java、Rust 三种语言的独立实现。项目采用领域驱动设计(DDD)和清洁架构理念,具备高并发、高可用、易扩展的特点,适用于视频网站、在线教育、直播点播等多种场景。
| 特性 |
说明 |
| 🌍 多语言实现 |
Go、Java、Rust 三种语言,满足不同团队技术栈需求 |
| 🏗️ 清洁架构 |
领域驱动设计,业务逻辑与技术实现分离 |
| 🚀 高性能 |
支持万级 QPS,毫秒级响应 |
| 🔐 安全可靠 |
JWT 认证、内容审核、数据加密 |
| 📊 完整可观测性 |
Prometheus 指标 + Jaeger 链路追踪 |
| 🐳 云原生 |
Docker/Kubernetes 友好,支持水平扩展 |
vidflow/
├── 📂 video-platform-go/ # 🐹 Go 语言实现 (端口: 8080)
│ ├── cmd/ # 应用入口
│ ├── internal/ # 内部代码
│ ├── pkg/ # 公共包
│ └── migrations/ # 数据库迁移
│
├── 📂 video-platform-java/ # ☕ Java 语言实现 (端口: 8081)
│ ├── src/ # 源代码
│ ├── pom.xml # Maven 配置
│ └── Dockerfile # 容器构建
│
├── 📂 video-platform-rust/ # 🦀 Rust 语言实现 (端口: 8082)
│ ├── src/ # 源代码
│ ├── Cargo.toml # Cargo 配置
│ └── Dockerfile # 容器构建
│
├── 📂 deploy/ # 🚀 部署配置
│ ├── k8s/ # Kubernetes 配置
│ └── prometheus.yml # Prometheus 配置
│
├── 📄 docker-compose.yml # 🐳 开发环境编排
└── 📄 README.md # 📝 项目说明
- 🔐 用户注册/登录
- 🎫 JWT Token 认证
- 👥 用户资料管理
- 🤝 关注/粉丝系统
- 📧 邮箱验证
|
- 📤 大文件分片上传
- 🎬 多分辨率转码
- 📺 HLS 自适应流媒体
- 🖼️ 缩略图自动生成
- 🗂️ 分类标签管理
|
- 💭 多级评论系统
- ❤️ 点赞与收藏
- 🎯 实时弹幕
- 📜 观看历史
- 📤 分享功能
|
- 🔎 全文搜索
- 🔥 热门推荐
- 🎯 个性化推荐
- 📺 相关视频推荐
- 💡 搜索建议
|
- 📦 多级会员套餐
- 🎁 权益管理系统
- 💳 支付集成
- 📊 消费记录
- 🔄 自动续费
|
- 🤖 自动内容审核
- 📋 审核规则配置
- 👨⚖️ 人工复审流程
- 📝 审核记录
- ⚠️ 违规处理
|
| 特性 |
Go 版本 |
Java 版本 |
Rust 版本 |
| 框架 |
Chi Router |
Spring Boot 3.3 |
Actix-web 4 |
| 运行时 |
Goroutine |
Virtual Threads (JDK 21) |
Tokio |
| ORM |
pgxpool |
Spring Data JPA |
SQLx |
| 性能 |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
| 开发效率 |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
| 生态成熟度 |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
| 内存安全 |
⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
| 类别 |
技术选型 |
| 数据库 |
PostgreSQL 16 / Redis 7 / ScyllaDB |
| 消息队列 |
Kafka / RabbitMQ |
| 对象存储 |
MinIO / AWS S3 / 阿里云 OSS |
| 视频处理 |
FFmpeg / HLS |
| 监控 |
Prometheus / Grafana |
| 追踪 |
Jaeger / OpenTelemetry |
| 容器化 |
Docker / Kubernetes |
┌─────────────────────────────────────────────────────────────────────────┐
│ Load Balancer (Nginx) │
└─────────────────────────────────────┬───────────────────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ VidFlow Go │ │ VidFlow Java │ │ VidFlow Rust │
│ (Port 8080) │ │ (Port 8081) │ │ (Port 8082) │
│ │ │ │ │ │
│ • Chi Router │ │ • Spring Boot │ │ • Actix-web │
│ • pgxpool │ │ • JPA/Hibernate│ │ • SQLx │
│ • go-redis │ │ • Spring Data │ │ • redis-rs │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────────────┼───────────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis │ │ Kafka │
│ (主数据库) │ │ (缓存层) │ │ (消息队列) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MinIO │ │ Jaeger │ │ Prometheus │
│ (对象存储) │ │ (链路追踪) │ │ (监控) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
| 依赖 |
版本 |
说明 |
| Docker |
24+ |
容器运行时 |
| Docker Compose |
2.20+ |
容器编排 |
| Go |
1.23+ |
Go 版本开发 |
| JDK |
21+ |
Java 版本开发 |
| Rust |
1.78+ |
Rust 版本开发 |
# 1️⃣ 克隆项目
git clone
cd vidflow
# 2️⃣ 启动基础设施服务
docker-compose up -d postgres redis kafka minio jaeger prometheus grafana
# 3️⃣ 初始化数据库
psql -U postgres -d vidflow -f video-platform-go/migrations/001_init_schema.up.sql
# 🐹 启动 Go 服务 (端口 8080)
cd video-platform-go
go mod download
go run ./cmd/api-gateway
# ☕ 启动 Java 服务 (端口 8081)
cd video-platform-java
mvn spring-boot:run
# 🦀 启动 Rust 服务 (端口 8082)
cd video-platform-rust
cargo run --release
| 项目 |
描述 |
链接 |
| 🐹 VidFlow Go |
Go 语言实现,轻量高效 |
README |
| ☕ VidFlow Java |
Java 语言实现,企业级生态 |
README |
| 🦀 VidFlow Rust |
Rust 语言实现,极致性能 |
README |
| 方法 |
路径 |
描述 |
POST |
/api/v1/auth/register |
用户注册 |
POST |
/api/v1/auth/login |
用户登录 |
POST |
/api/v1/auth/refresh |
刷新 Token |
| 方法 |
路径 |
描述 |
认证 |
GET |
/api/v1/users/me |
获取当前用户 |
✅ |
PUT |
/api/v1/users/me |
更新用户资料 |
✅ |
POST |
/api/v1/users/{id}/follow |
关注用户 |
✅ |
| 方法 |
路径 |
描述 |
认证 |
POST |
/api/v1/videos |
上传视频 |
✅ |
GET |
/api/v1/videos |
获取视频列表 |
|
GET |
/api/v1/videos/{id} |
获取视频详情 |
|
GET |
/api/v1/videos/{id}/stream |
获取视频流 |
|
| 方法 |
路径 |
描述 |
认证 |
POST |
/api/v1/videos/{id}/like |
点赞视频 |
✅ |
POST |
/api/v1/videos/{id}/favorite |
收藏视频 |
✅ |
POST |
/api/v1/comments |
发表评论 |
✅ |
# 构建所有服务镜像
docker-compose build
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 创建命名空间和配置
kubectl apply -f deploy/k8s/deployment.yaml
# 查看部署状态
kubectl get pods -n vidflow
# 查看服务
kubectl get svc -n vidflow
所有服务暴露 /metrics 端点,提供以下指标:
# HTTP 请求
http_requests_total{method, path, status}
http_request_duration_seconds{method, path}
# 数据库
database_connections{state}
database_query_duration_seconds{query}
# 缓存
cache_hits_total
cache_misses_total
# 业务
video_uploads_total
user_registrations_total
集成 OpenTelemetry,支持分布式链路追踪,快速定位性能瓶颈。
# Go 测试
cd video-platform-go && go test ./... -v
# Java 测试
cd video-platform-java && mvn test
# Rust 测试
cd video-platform-rust && cargo test
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature)
- 提交更改 (
git commit -m 'Add some amazing feature')
- 推送到分支 (
git push origin feature/amazing-feature)
- 创建 Pull Request
本项目采用 MIT License 许可证。