这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
本文主要介绍本小组青训营大项目使用的架构和技术以及实际构建等
项目介绍
本次青训营大项目为抖音极简版。要求实现能提供用户、视频以及视频流、点赞评论等功能模块接口的后端服务。
本小组使用golang语言,gin框架和gorm以及redis实现了大项目要求的基本功能
涉及技术
go-gin
gin框架为基于golang的一种轻量级web框架,在本项目中,主要使用gin框架处理url,搭建中间件,使用handler等来处理http请求并返回相应要求的过程
gorm
gorm是基于golang的对象关系映射库,帮助处理数据库事务,本项目中,使用gorm构建model层,提供与mysql数据库进行交互的接口。
redis
redis是一个基于内存的可持久化的key-value数据库,本项目中,使用redis来存储一些可以被同时多次改变的数据请求,利用redis对于并发的先天优势。
实践过程
项目整体框架分为:
router->middleware->handler->service->model
功能模块分为:user; video; comment
数据库表分为:user; video; comment; favorite; ralation
其中:
router层提供对于项目要求接口的请求进行处理
middleware提供用户登录验证,分发token等操作
handler运用gin自带的handler处理经过middleware验证的请求
service提供请求相关的各种具体操作
model提供后台与数据库的读写等交互操作
此外,还设置了:
cache提供后台与redis数据库的读写等交互操作
util使用ffmpeg提供项目要求的视频封面截图操作
难点总结
本项目没有使用如rabbitmq等更加追求性能的结构,主要是小组成员对于golang语言的熟悉和对于此语言web框架gin的初步运用
其中新学到的技术有使用jwt对用户信息进行加密发放token提供给中间件用于验证;使用ffmpeg对视频流进行操作;使用go-redis存储部分要求高并发字段等等
本次项目主要收获为了解了go语言下web框架的构建方法,与以前学到的其他语言web框架进行对比,加深对此类技术框架的理解。