这是我参与「第三届青训营 -后端场」笔记创作活动的第四篇笔记。本次青训营结营项目是实现极简版抖音,主要功能如下:
| 功能项 | 说明 |
|---|---|
| 视频Feed流、视频投稿、个人信息 | 支持所有用户刷抖音,按投稿时间倒序推出,登录用户可以自己拍视频投稿,查看自己的基本信息和投稿列表,注册用户流程简化。 |
| 点赞列表、用户评论 | 登录用户可以对视频点赞,并在视频下进行评论,在个人主页能够查看点赞视频列表。 |
| 关注列表、粉丝列表 | 登录用户可以关注其他用户,能够在个人信息页查看本人的关注数和粉丝数,点击打开关注列表和粉丝列表。 |
1. 针对上面几个功能的实现,初步想法如下:
1、视频Feed流:在OSS对象存储平台上将所有视频按照用户建立文件夹存放,视频地址信息放在视频表中,查询时根据“视频表”中记录的创建时间倒序输出记录;用户拍视频投稿,在视频表中insert;查看自己的基本信息(基本信息(用户表)、关注数(关注表)、粉丝数(关注表)、获赞数(视频表+点赞表)、投稿视频(视频表+每个视频对应一个用户信息))。注册使用用户名(保证唯一)、密码、昵称注册
2、点赞、评论:评论回复? 视频的点赞数可以根据点赞表直接计算,自己点赞的视频也可以根据点赞表+视频表等查询;自己总的获赞数通过点赞表+视频表查询 每条视频的评论可以根据评论表查询
3、关注列表、粉丝列表: 本人关注的列表可以通过关注表和用户信息表查询 粉丝列表可以通过关注表和用户信息表查询
2. 数据库表设计如下:
1、视频表:{ Id, 用户id, 存放地址, 视频简介, 视频封面, 创建时间, }
2、用户表{ Id, 账号, 密码(存MD5), 昵称, 性别, 头像, 简介, 创建时间, 更新时间, }
3、关注表:{ Id, 用户id, 关注id 创建时间, 更新时间, }
4、点赞表:{ Id, 视频id, 用户id, 创建时间, 更新时间, }
5、评论表:{ Id, 用户id, 视频id, 评论内容, 创建时间, 更新时间, }
3.思考点
1、视频是否可以加入标签,引入推荐算法进行推送(可打开个性化推荐或选择关闭,按照时间推送)
2、是否考虑引入搜索功能,根据视频简介内容搜索
3、本身功能并不太复杂,通过高并发测试、大量数据存储、查询优化增加特色和难度
4、查询点赞列表:对每一个视频需要返回作者信息(包括关注数、粉丝数、是否已关注)、视频基本信息、视频点赞数、视频评论数 需要查:点赞表、视频表、用户信息表、关注表、评论表。表设计是否可以优化?查多个表会不会有性能问题?性能问题怎么解决?
5、评论按接口定义看一条视频每个用户只能有一条评论?只有发布与删除功能,无回复功能
6、安全攻击:防止SQL注入。
7、架构:需要用微服务吗?
8、流量监控、流量削峰是否需要考虑?