douyin是基于go-zero
框架的一个极简版抖音的后端接口,为极简版抖音客户端提供后端服务。
- 视频:视频推送、视频投稿、发布列表
- 用户:用户注册、用户登录、用户信息
- 点赞:点赞操作、点赞列表
- 评论:评论操作、评论列表
- 关注:关注操作、关注列表、粉丝列表、好友列表
- 聊天:聊天操作、聊天记录
对于app/user/cmd/api/
,称之为userApi
,同理app/user/cmd/rpc/
称为userRpc
,目录下的etc
文件夹是配置文件夹
请先安装docker
和docker-compose
- git clone
- 配置位于
fileRpc
下配置文件的oss信息 - 配置
userApi,userRpc,videoApi
下的jwt密钥 - 配置
common/globlkey/constantKey.go
中的StaticFileServiceIP
字段 - 先使用
docker-compose build .
先将六个服务构建后, 再使用docker-compose up -d
启动服务
参考官方文档:极简版抖音 (apifox.cn)
视频和用户是两大实体,点赞,评论,关注,聊天这些操作建立新的表。
其中将用户,关注,聊天表存放于douyin_user
库中,将视频,点赞,评论表存放于douyin_video
库中。
设计以下数据库(sql文件位于/deploy/sql
)
这里所有的外键都是逻辑外键,通过事务保证数据的正确性。
本项目采用基于go-zero
的RPC框架,包含了go-zero
以及相关go-zero
作者开发的一些中间件,所用到的技术栈基本是go-zero
项目组的自研组件。
- Go-zero
- Mysql
- Redis
- Oss
- ffmpeg
服务名 | 用途 | 框架 | 协议 |
---|---|---|---|
user-api | 处理用户相关http请求 | go-zero |
http |
user-rpc | 处理用户相关的rpc请求 | go-zero redis mysql |
protobuf |
video-api | 处理视频相关http请求 | go-zero |
http |
video-rpc | 处理视频相关的rpc请求 | go-zero redis mysql |
protobuf |
file-api | 静态文件资源访问 | net/http |
http |
file-rpc | 上传文件 | go-zero oss ffmpeg |
protobuf |
不同的请求通过nginx反向代理到不同的api服务中,api通过直连的方式连接rpc,rpc同理。
├─app // 应用
│ ├─file // 文件服务
│ ├─user // 用户服务
│ │ ├─cmd // 用户服务代码
│ │ │ ├─api // api 服务
│ │ │ │ ├─desc // api文件
│ │ │ │ ├─etc // 配置文件
│ │ │ │ └─internal // 内部逻辑
│ │ │ └─rpc // rpc 服务
│ │ │ ├─etc
│ │ │ ├─internal
│ │ │ ├─pb // 定义rpc服务的protobuf文件
│ │ │ └─userrpc
│ │ └─model // orm层
│ └─video
├─common // 通用代码
├─data // 存放docker映射目录数据和日志文件
├─deploy // 部署文件
├── docker-compose.yaml // 启动服务的docker-compose文件
├── down.sh // 一键删除服务和代码(慎用)
├── go.mod
└─ README.md