/filestore-server

go语言开发的仿百度网盘的分布式云存储系统

Primary LanguageGo

filestore-server

go语言开发的仿百度网盘的分布式云存储系统

开发环境说明:

  • go语言版本:go1.19 windows/amd64
  • 编译环境:Linux
  • 开发工具:goland

项目初始化

web框架选型

    go get -u github.com/gin-gonic/gin@v1.8.1

配置参数分离

    go get github.com/spf13/viper@v1.13.0

参考文档:https://github.com/spf13/viper

项目接口开发

单体服务

1. 用户管理

  • 用户注册
  • 用户登录
  • 获取用户信息

2. 文件服务

  • 文件上传
  • 文件下载
  • 文件查询(文件元信息单个|批量查询)
  • 文件更新(文件元信息更新)
  • 文件删除
  • 文件下载url生成
  • 文件秒传
  • 文件分块上传
    • 初始化分块上传, 根据文件hash名+文件size生成分块上传的初始化信息
    • 上传文件分块, 按文件块上传分块文件,根据文件上传初始信息和分块序号进行分块上传
    • 通知上传合并, 根据文件上传初始信息判断是否上传完毕,上传完毕进行合并
    • 取消分块上传
    • 查询上传状态
    • 文件上传存储优化,支持上传到服务器存储、自建ceph存储、oss存储
    • 文件转移使用RabbitMQ实现异步转移到ceph,或者oss,减少用户上传等待

分布式微服务

将单体服务才分为:用户管理、文件上传、文件下载、文件转移、数据库管理、api网关六个微服务
实现服务的分散治理,提供服务可用性与横向扩容性