go语言开发的仿百度网盘的分布式云存储系统
开发环境说明:
- go语言版本:go1.19 windows/amd64
- 编译环境:Linux
- 开发工具:goland
go get -u github.com/gin-gonic/gin@v1.8.1
go get github.com/spf13/viper@v1.13.0
- 用户注册
- 用户登录
- 获取用户信息
- 文件上传
- 文件下载
- 文件查询(文件元信息单个|批量查询)
- 文件更新(文件元信息更新)
- 文件删除
- 文件下载url生成
- 文件秒传
- 文件分块上传
- 初始化分块上传, 根据文件hash名+文件size生成分块上传的初始化信息
- 上传文件分块, 按文件块上传分块文件,根据文件上传初始信息和分块序号进行分块上传
- 通知上传合并, 根据文件上传初始信息判断是否上传完毕,上传完毕进行合并
- 取消分块上传
- 查询上传状态
- 文件上传存储优化,支持上传到服务器存储、自建ceph存储、oss存储
- 文件转移使用RabbitMQ实现异步转移到ceph,或者oss,减少用户上传等待
将单体服务才分为:用户管理、文件上传、文件下载、文件转移、数据库管理、api网关六个微服务
实现服务的分散治理,提供服务可用性与横向扩容性