修改config.yaml文件,并运行go项目
后端服务器部署地址:http://106.12.130.135:8080/
手机端视频演示地址 :演示视频
golang>= 1.18
mysql>=8.0:数据库
oss:阿里云对象存储
-
docs
- postman-export:postman接口测试文件导出
- sql:数据库初始化sql和运维sql
-
src
- api
- controller:控制器
- router.go:路由器控制
- cache
- user_id:通过用户id缓存用户数据
- user_uname_pwd:通过用户名密码缓存用户数据
- dao:数据访问层,与数据库相关的操作
- global:全局变量
- pkg
- errcode:统一错误码
- setting:配置文件映射
- pojo
- entity:数据层对象,映射数据库表
- vo:视图层对象,映射接口返回对象
- service:项目核心业务逻辑
- util:工具类
- config.yaml:配置文件
- init.go:初始化加载文件
- server.go:启动类
- api
功能项 | 说明 |
---|---|
视频Feed流、视频投稿、个人信息 | 支持所有用户刷抖音,按投稿时间倒序推出,用用户可以自己拍视频投稿,查看自己的基本信息和投稿列表 |
点赞列表、用户评论 | 登录用户可以对视频点赞,并在视频下进行评论,在个人主页能够查看点赞视频列表。 |
关注列表、粉丝列表 | 登录用户可以关注其他用户,能够在个人信息页查看本人的关注数和粉丝数,点击打开关注列表和粉丝列表。 |
- 使用阿里云 OSS 对象存储对视频进行存储,使用在线截图工具截取视频封面,通过网络IO流转存图片,返回视频和和图片的访问链接
- 使用 JWT对用户进行权限认证,在服务器端保管密钥,并控制 token 有效时间
- 使用 Go 协程并行查询数据库信息,使得原本封装视频 feed 流信息等需要多条 sql 的操作的需求,简化为只需要2~3条 sql 操作就能完成
- 服务端向数据库同时发送 2~3 条 sql,在服务端对返回结果进行异步封装,节省了网络传输的时间
- 定义计时器,如果超时直接返回错误码,提高接口反应速度
- 自定义缓存,手动实现 LRU 缓存算法,将用户信息进行在服务端缓存,避免频繁查询数据库
- 保证并发安全,新增节点、删除节点等操作进行加锁
- 保证数据一致性,当关注/取消关注等操作导致用户信息变化时,删除缓存中的用户数据,等下次查询的时候再从数据库中获取最新数据加到缓存中
- 使用数据库事务保证同时对多张表进行操作正确
- 同时操作多张表数据,如果其中一个出错,事务进行回滚操作
- 保证数据有效性,服务端控制不能重复点赞、重复关注、自己关注自己等操作
- 使用CAS操作,保证数据一致性,避免频繁操作导致数据异常
接口 | 开发者 |
---|---|
/douyin/feed 视频流 | 吴尤 |
/douyin/user/register/ 注册 | 葛济维 |
/douyin/user/login/ 登录 | 葛济维 |
/douyin/user/ 用户信息 | 吴尤 |
/douyin/publish/action/ 视频投稿 | 吴尤 |
/douyin/publish/list/ 发布列表 | 吴尤 |
/douyin/favorite/action/ 赞 | 陈宇龙 |
/douyin/favorite/list/ 点赞列表 | 陈宇龙 |
/douyin/comment/action/ 评论 | 田泽瑞 |
/douyin/comment/list/ 视频评论 | 田泽瑞 |
/douyin/relation/action/ 关系列表 | 黄元 |
/douyin/relation/follow/list/ 关注列表 | 黄元 |
/douyin/relation/follower/list 用户粉丝列表 | 黄元 |