抖音大项目 (一)| 青训营笔记

187 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记

讨论架构

  • 由于团队没有Go语言经验,微服务经验也欠缺,所以最终商讨使用单体架构作为项目总架构。 后续为项目升级时考虑升级为基于gRPC的微服务架构。
  • 在单体架构中采用MVC分层思想,将每个层的功能剥离开,降低模块与模块之间的耦合度。

技术选型

  • 项目考虑到数据库压力问题以及文件存储问题,所以使用了非关系型数据库redis作为点赞模块以及关注模块的技术栈。
  • 同时使用阿里云的对象存储OOS来存储上传视频。但是由于视频封面并没有手动上传,使用使用了 ffmpeg 来抽取出视频的封面存储到本地。
  • 使用Gorm来做持久层的存储
  • 使用Gin作为web框架
  • 使用了jwt-token来作为用户登录的校验。
  • 使用了Zap作为日志管理框架
  • 使用viper来做项目的配置管理

项目环境

  • Go 1.18
  • MySQL 5.7
  • Redis 6.x
  • Gorm 2.x 都为目前比较主流的环境

项目分工

根据多个模块多个功能,小组内每个人分别完成不同的请求接口,然后再合并到一起 使用git进行分工开发,在主分支上搭建项目的初始环境,每个人分别创建不同的分支,在每个人不同的分支下写自己负责的功能,然后自己在本地环境上进行测试,待所有人开发工作完成之后,将所有分支合并到主分支上完成项目的合并,同时测试合并完成的主项目是否有合并bug。合并完成之后使用云环境进行项目搭建。 在云服务器上利用docker创建出mysql和redis的云环境,使得所有成员都可以用一套环境进行项目整体测试。