这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
简介
昨天小伙伴们一起语音联系开了个会,讨论了抖音项目的分工,一共两个方向七个模块,每人负责一个模块,我负责评论模块的开发,查了查资料做个笔记备用,感谢各位大佬的资料,希望多多学习以求进步。
功能说明
支持未登录用户查看视频下的评论列表,登录用户能够发表评论。
需求说明
- 发表评论
- 删除评论
- 未登录查看评论列表
- 倒叙查看评论列表
- 点赞热度最高的置于最高处
设计工具
MySql存储数据(数据懒加载时在进行请求)、redis做缓存预热、go开发
数据库表的设计
抖音评论样式属于树形结构,每个视频下都有评论和回复列表,如下树状图:
stateDiagram-v2
[*] --> video1
[*] --> video2
video1 --> comment1
video1 --> comment2
video2 --> comment3
video2 --> comment4
comment1 --> reply1
comment1 --> reply2
comment2 --> reply3
comment2 --> reply4
comment3 --> …………
comment4 --> …………
因为树状结构图比较复杂,所以直接使用分库分表,分为评论表和回复表,每个视频对应一个表,逻辑清晰些。
评论表单的设计
| 字段 | 类型说明 |
|---|---|
| id | 主键 |
| video_id | 视频id |
| user_id | 用户id |
| creat_time | 评论时间 |
| creat_ip | 创建地址 |
| content | 内容 |
| status | 状态 |
回复表单的设计
| 字段 | 类型说明 |
|---|---|
| id | 主键 |
| user_id | 用户id |
| creat_time | 评论时间 |
| creat_ip | 创建地址 |
| content | 内容 |
| reply_id | 回复目标id |
| reply_type | 回复类型 |
| comment_id | 评论id |
| status | 状态 |
先这样吧,后期再讨论更新,关于redis的设计初步想法是将最近的几条数据在启动前从数据库加载到redis,关于缓存雪崩、缓存穿透啥的解决方案之后再说吧,数据结构选型就那9种。 关于ip地址那个还没查呢,之后补充。