后端day10-大项目部署 | 青训营笔记

143 阅读3分钟

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

这篇笔记是大项目部署的记录,会随着项目的推进保持更新。

抖音项目服务端 -- 六带一队

一. 重要资料

二. 开发环境配置

  1. 代码运行环境(版本号为本机环境):

    • Golang 1.19.5

    • Mysql 8.0

    • Redis 5.0.14

    以上环境的安装教程百度即可。

  2. 根据自己的环境修改DouyinOrigin/config/config.yaml中的内容,一般只需要修改用户名和密码。

  3. 使用安卓模拟器或安卓手机进行测试,可以参考这篇文章

  4. 个人习惯:使用Goland进行开发,蓝叠模拟器进行测试,Typora写文档。

三. Github协同开发tips

  1. 加入organization,找到仓库,确认是否拥有dev分支的修改权限(理论上来说没有main分支的修改权限)。

  2. 配置 Github 的 SSH key,可以参考这篇文章

  3. 打开 git bash,使用SSH链接克隆项目到本地。

    若使用 Goland,也可以从新建项目处选择Get from VCS,复制项目SSH到URL处,确认本地工作目录,创建项目。

    image-20230203170910729
  4. 进入dev分支进行add commit push操作,不要直接在main上修改

    git checkout -b dev origin/dev  // 在本地创建dev分支
    
    git add . //将所有的更改都拉到commit上
    
    git commit -m "备注信息" //提交
    
    git push origin dev //将更改推送到远程分支dev
    
    git pull //从远程分支中得到最新的提交并合并到本地
    
    • 推送到远程分支之前,请保证程序是可运行的状态,并在commit中尽量详细地写明更新的内容。

    • 如果push失败,可能是因为其他队员的最新提交和你试图推送的提交有冲突,可以先用git pull把最新的提交从远程分支dev中抓下来,然后在本地合并,解决冲突。

      更多细节可参考:廖雪峰的git教程-多人协作

    • 如果不喜欢输命令行,可以使用Goland中的Git菜单进行操作,尤其建议使用Goland进行提交前的检查。

      image-20230203170910729
  5. 根据开发进度,队长会不定时将dev分支中的内容合并到main分支。

四. 项目架构

  1. 使用到的技术

    • 框架:gin、gorm

    • 数据库:Mysql

    • 其他:Redis, jwt

  2. 采用 repository → service → controller 的分层结构:

    image-20230204203013698
    • controller层

      • 解析得到参数,传递给service层。

      • 如果需要返回数据信息,则调用service层的逻辑得到数据;如果不需要返回数据信息,只需要执行特定动作修改数据库,那么调用service层的逻辑执行这个动作。

      • 将得到的数据(如果有)与状态码和状态描述打包,返回响应。

    • service层

      • 如果上层需要返回数据信息,则进行参数检查、数据准备、数据打包;如果上层不需要返回数据信息,则进行参数检查、动作的执行。

      • 进行数据准备或动作执行时,需要调用repository层的逻辑。

    • repository层

      • 面向数据库进行增删改查。
  3. 文件目录说明

    Douyin 
    ├── /config/ 配置文件
    ├── /common/ 通用结构体
    ├── /controller/ 视图层
    ├── /service/ 逻辑层
    ├── /repository/ 数据层
    ├── /middleware/ 中间件
    │   ├── jwt/ 鉴权
    │   └── redis/ 缓存
    ├── /router/ 路由配置
    ├── /data/ 上传的视频文件存储在本地
    ├── /go.mod/
    ├── main.go
    └── README.md