这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
项目的目的是实现一个极简版的抖音 APP 的后端部分,这里我们选择实现基础功能部分和方向功能中的喜欢列表、用户评论、关系列表三个部分。
视频中提到了建议对用户刷视频的功能提供一定的定制效果,比如考虑用户关注的人发表的视频,或者优先推荐点赞数高的视频。
在评分方面,主要是功能实现占大头,会要求服务端可以通过一定量的测试脚本,尤其是对边界值的处理;还要结合实际的业务情况,比如针对关注度高的用户发的视频,可以进行一定的优化应对短时间内大量用户点赞该视频的场景,避免这个数据热点成为性能瓶颈;还要考虑整个系统的可用性,比如分布式容错以及功能降级等。
在性能方面主要考虑数据库索引,以及对服务整体的负载优化。
安全可靠方面,文档中写到的有 SQL 注入和用户越权等,关于 SQL注入 这里,由于现代的数据库框架都会使用预编译处理查询语句,所以倒是不用太担心;拓展的部分还包括黑产上的刷赞、恶意高频访问等情况的处理。
客户端在实际使用上确实存在不少问题,所以在测试时可能偏向于用 Postman 等请求工具来验证。
考虑实际的开发时间只有一周左右,加上组员热情普遍不高,主要只能靠我和另外一个老哥来开发,因此这里初步设想把项目通过 Kitex 做成微服务架构,包括由 Hertz 实现的请求处理服务、使用 go-redis 实现 Redis 的缓存服务、使用 Gorm 实现 Mysql 服务、另做一个对两者进行结合的 ORM 服务四部分组成。对视频和封面图片的存储使用单机本地文件系统,从视频解析封面的功能使用 ffmpeg 的 Go SDK 进行实现。
从结果上看,数据库设计和主要的业务功能实现由我负责,另外一个老哥负责 Kitex 框架的处理和服务划分的工作。