大项目开发笔记 | 青训营笔记

144 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

简介

昨天小伙伴们一起语音联系开了个会,讨论了抖音项目的分工,一共两个方向七个模块,每人负责一个模块,我负责评论模块的开发,查了查资料做个笔记备用,感谢各位大佬的资料,希望多多学习以求进步。

功能说明

支持未登录用户查看视频下的评论列表,登录用户能够发表评论。

需求说明

  1. 发表评论
  2. 删除评论
  3. 未登录查看评论列表
  4. 倒叙查看评论列表
  5. 点赞热度最高的置于最高处

设计工具

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地址那个还没查呢,之后补充。