✅技术选型与架构
层级 | 技术选型 |
---|---|
服务器网关 | Nginx |
后端开发 | PHP + ThinkPHP8 |
API认证 | OAuth2 + JWT |
缓存/Session管理 | Redis |
消息队列 | Kafka |
数据库 | PostgreSQL |
监控告警 | Prometheus + Grafana + Loki |
前端开发 | Vue 3 + PrimeVue |
对象存储 | OSS/S3/MinIO(可动态配置为不同策略) |
图片审核 | 可配置审核API(如阿里、腾讯、百度) |
图片压缩 | ffmeg/imacgik |
📦 高可用与扩展
-
对象存储和审核API可动态配置(策略中心统一管理)
-
压缩策略可自定义和选择
-
模块独立、易扩展
-
用户分组,权限分配
-
图片动态压缩+水印+防盗链+审核
🛠️ 业务模块分解(逻辑清单版)
1. 认证模块(Auth Service)
-
OAuth2 Password模式 / 客户端凭证模式
-
Access Token & Refresh Token
-
令牌续期 / 失效管理
-
支持 API Key 绑定用户
2. 用户管理(User Service)
-
账户注册/登录
-
用户组(普通、VIP、企业版等)
-
存储配额管理(如免费5GB,高级版100GB)
3. 相册和图片管理(Album/Image Service)
-
多级目录(文件夹结构)
-
图片元数据(尺寸、格式、大小、hash)
-
动态生成缩略图
4. 图片处理模块(Processing Service)
-
图片压缩(JPG/PNG → WebP/AVIF)
-
自定义压缩策略(质量比例、尺寸)
-
水印生成(可配置位置、透明度)
5. 存储服务(Storage Service)
-
本地存储
-
OSS / MinIO / S3支持
-
存储策略切换(冷热存储)
6.压缩策略(Compression Strategy)
功能 | 说明 |
---|---|
预设压缩策略 | 后台设置多个压缩策略(比如:高质量、中等质量、超高压缩、小尺寸) |
自定义压缩策略 | 部分用户可以自定义压缩参数(需要权限控制,比如 VIP 用户) |
上传时选择策略 | 用户上传图片时,可以指定用哪一个压缩策略 |
不同格式支持 | 针对 JPG / PNG / WebP / AVIF 等分别定义压缩参数 |
系统默认策略 | 如果用户不选,使用系统默认压缩策略 |
策略内容 | 包括图片质量(quality)、尺寸缩放(resize)、格式转换(convert to WebP/AVIF)等 |
策略适配存储 | 部分策略可以定义是否只保留压缩版或同时保留原图 |
7. 审核服务(Moderation Service)
-
上传时异步审核(调用阿里云、腾讯云内容审核API)
-
人工复审接口
8. 防盗链模块(Security Service)
-
URL签名
-
IP / Referer 防护
-
限流策略(防止CC攻击)
9. 图片广场(Gallery Service)
-
热门图片、最新上传
-
标签分类浏览
-
推荐系统(简单权重算法)
📜 后端微服务模块
微服务 | 描述 |
---|---|
Auth Service | 认证服务 |
User Service | 用户和权限管理 |
Album Service | 相册管理 |
Image Service | 图片上传、压缩、存储 |
Zip Service | 压缩策略 |
Storage Service | 存储策略 |
Processing Service | 图片压缩/转换/水印添加 |
Moderation Service | 内容审核处理 |
Gallery Service | 图片展览和推荐系统 |
Security Service | 防盗链验证和签名 |
✍ 业务流程
- 上传图片时:
- 用户可以选择【使用哪种压缩策略】。
- 不选的话,默认走【默认策略】。
- 压缩处理模块:
- 根据压缩策略设置动态处理图片。
- 输出 WebP、AVIF 格式,并按照尺寸要求生成缩略图。
- 存储模块:
- 根据策略决定是存在本地,还是仅保存在某个oss。
- 后台管理:
- 管理员可以添加、修改、删除存储策略。
- 可以为不同用户组指定 存储空间 图片保护 水印 图片审核
📜 API 接口文档初版
🎯 用户认证 API
方法 | 路径 | 描述 |
---|---|---|
POST | /api/auth/login | 用户登录,返回AccessToken和RefreshToken |
POST | /api/auth/refresh | 刷新Token |
POST | /api/auth/logout | 登出并清除Token |
🎯 图片上传 API
方法 | 路径 | 描述 |
---|---|---|
POST | /api/image/upload | 上传图片 |
上传参数 | ||
参数 | 类型 | 必须 |
- | - | - |
file | file | 是 |
album_id | int | 否 |
compression_strategy_id | int | 否 |
watermark | bool | 否 |
storage_strategy_id | int | 否 |
🎯 相册管理 API
方法 | 路径 | 描述 |
---|---|---|
GET | /api/album/list | 获取我的相册列表 |
POST | /api/album/create | 创建相册(支持多级目录) |
POST | /api/album/delete | 删除相册 |
🎯 压缩策略管理 API(管理员用)
方法 | 路径 | 描述 |
---|---|---|
GET | /api/compression_strategy/list | 列出所有压缩策略 |
POST | /api/compression_strategy/create | 创建压缩策略 |
POST | /api/compression_strategy/update | 更新压缩策略 |
POST | /api/compression_strategy/delete | 删除压缩策略 |
🎯 审核API管理(管理员用)
方法 | 路径 | 描述 |
---|---|---|
GET | /api/moderation_api/list | 查看审核API列表 |
POST | /api/moderation_api/set | 设置使用的审核API |
🎯 存储策略管理(管理员用)
方法 | 路径 | 描述 |
---|---|---|
GET | /api/storage_strategy/list | 查看存储策略列表 |
POST | /api/storage_strategy/set | 设置当前使用的存储策略 |
🎯 图片广场 API
方法 | 路径 | 描述 |
---|---|---|
GET | /api/gallery/list | 浏览热门、新上传、分类图片 |
评论区