Skip to content

gjwhhhh/woshidiyidui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 

Repository files navigation

队伍名:我是第一队

启动服务

修改config.yaml文件,并运行go项目

线上地址

后端服务器部署地址:http://106.12.130.135:8080/

演示地址

手机端视频演示地址 :演示视频

相关环境

golang>= 1.18

mysql>=8.0:数据库

oss:阿里云对象存储

系统架构

Architecture

目录结构

  • 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:启动类

实现功能

功能项 说明
视频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 用户粉丝列表 黄元

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages