对短视频基本功能进行分析,确定核心功能为视频上传和视频推流,完成初始版本实现用户用户管理、视频发布与推流、用户互动、基本社交等三大模块需求
1.使用MySQL存储基本信息,使用minio存储视频信息以便高效地查询和管理,使用redis对热点数据进行监控、存储
2.使用nginx为网络代理,gin框架完成前后端交互
3.使用gorm和go-redis为数据操作
4.使用JWT进行身份验证,AES进行数据加密
5.使用ffmpeg进行视频转码和处理
6.限流: 实现令牌桶对用户请求限流,控制系统在单位时间内能够处理的请求量,防止系统过载,并支持突发流量
7.热点数据检测: 将视频访问请求使用reids中的Sorted Set存储,并定期对Sorted Set进行扫描,对访问量大的数据将其使用redis中的Hash进行存储