这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
系统设计实战第 3 卷
系统设计实战
系统设计 - 图片 CDN
图片
CDN
从一张拖慢页面的图片出发,构建覆盖上传存储、格式优化、内容审核、CDN 加速、冷热分层和成本治理的图片系统
系统演进路线
从本地图片上传到 CDN 治理平台
第 1 版
本地上传展示
用户上传第一张头像,文件直接放在业务服务器。
上传接口本地目录图片 URL
能展示图片,但容量、备份和多机部署很快出问题。
第 2 版
对象存储与处理
图片数量增长后,需要原图、缩略图和元数据分开管理。
对象存储元数据表异步压缩格式转换
存储和处理解耦,图片开始拥有生命周期。
第 3 版
CDN 与审核
热门图片拖慢页面,用户上传内容也带来合规风险。
CDN缓存键内容审核签名 URL
分发性能和内容安全成为图片系统的主链路能力。
生产版
图片治理平台
长期存储和带宽账单上涨,需要成本和冷热数据治理。
冷热分层生命周期成本报表缓存刷新审计
生产级图片系统要同时优化体验、安全和基础设施成本。
最简实现:Flask + 本地磁盘,无 CDN,无压缩
用户层
用户浏览器直接访问服务器
应用层
Flask 服务器1 核 2G,5Mbps 带宽
存储层
本地磁盘100GB,无冗余
客户端直传 OSS + 缩略图生成 + WebP 转换
用户层
用户浏览器直传 OSS
应用层
上传服务签发 STS 凭证
处理服务缩略图 + WebP
存储层
阿里云 OSS原图 + 缩略图
PostgreSQL元数据
CDN 全球加速 + 内容审核 + 异步处理队列
用户层
用户浏览器就近访问 CDN
CDN 层
阿里云 CDN2800+ 节点,边缘裁剪
应用层
上传服务×3签发凭证 + 回调
审核服务×2鉴黄 + OCR
处理服务×4多尺寸 + WebP/AVIF
数据层
阿里云 OSS标准 + 低频 + 归档
RabbitMQ异步处理队列
PostgreSQL元数据 + 用户
生产级图片系统:12,000 用户,85,000 张图片,月成本 ¥1,720
用户层
用户浏览器<picture> + 懒加载
CDN 层
阿里云 CDN缓存命中率 96%,边缘裁剪
服务层
上传服务×3STS 凭证 + 频率限制
审核服务×2鉴黄 + OCR + 人审
处理服务×4多尺寸 + EXIF
数据层
阿里云 OSS标准 + 低频 + 归档
RabbitMQupload→audit→process
辅助系统
PrometheusCDN 命中率 / 延迟
Grafana监控面板 + 告警
课程简介
图片系统经常被低估。一张未压缩的大图可能拖慢首页,用户上传的违规图片可能带来合规风险,热门图片可能把源站带宽打满,长期积累的冷图片又会不断增加存储成本。
这门课从一个图片加载性能事故出发,系统化设计一套图片上传、存储、处理、审核、分发和成本治理平台。
学习路线
- 图片 CDN 概述:理解图片系统为什么会影响性能、成本和安全。
- 图片基础:掌握格式、尺寸、元数据和压缩参数对系统设计的影响。
- 上传存储:从本地磁盘演进到对象存储和客户端直传。
- 压缩优化:通过无损、有损和格式转换降低带宽与加载时间。
- 内容审核:设计机审、人审、敏感内容识别和审核状态流。
- CDN 加速:使用边缘缓存、图片 CDN 和边缘处理提升访问体验。
- 成本优化:通过冷热分层、生命周期和成本分析控制长期支出。
- 完整系统:总结最终架构、关键决策和上线检查清单。
读完后,你应该能解释图片系统为什么不是简单文件上传,而是一个同时影响用户体验、平台安全和基础设施成本的系统设计问题。
第一章 / CHAPTER 01
