littlebot
Published on 2025-04-09 / 3 Visits
0

【源码】基于Golang的分布式云存储服务

项目简介

本项目是基于Golang实现的分布式云存储服务,具备文件上传、下载、存储、转移等功能。支持本地存储、Ceph分布式存储以及阿里云OSS对象存储服务,同时支持文件分块上传和断点续传。集成了API网关、微服务化、异步任务处理等功能,实现了高可用性、可扩展性和可维护性。

项目的主要特性和功能

  1. 文件操作:提供文件上传和下载功能,支持分块上传与断点续传。
  2. 分布式存储:支持本地存储、Ceph分布式存储以及阿里云OSS对象存储服务。
  3. 文件转移:能异步处理文件从本地转移到Ceph或OSS的任务。
  4. API网关:提供HTTP API接口,可用于文件上传、下载和转移等操作。
  5. 微服务化:采用微服务架构,实现服务注册、发现、通信等功能。
  6. 异步任务处理:使用RabbitMQ实现异步任务处理,提升系统性能。

安装使用步骤

假设用户已经下载了本项目的源码文件。

1. 安装手动库

shell go get gopkg.in/amz.v1/aws go get gopkg.in/amz.v1/s3 若有提示golang.org/x相关的包无法下载,可参考国内下载golang.org/x/net

2. 启动服务

加入rabbitMQ实现文件异步转移之前

启动上传应用程序: ```bash

cd $GOPATH/filestore-server go run main.go ```

加入rabbitMQ实现文件异步转移阶段

  • 启动上传应用程序: ```bash

    cd $GOPATH/filestore-server go run service/upload/main.go ```

  • 启动转移应用程序: ```bash

    cd $GOPATH/filestore-server go run service/transfer/main.go ```

微服务架构下(非容器化部署)

  • 一键启动微服务: ```bash

    cd $GOPATH/filestore-server ./service/start-all.sh ```

  • 一键关闭微服务: ```bash

    cd $GOPATH/filestore-server ./service/stop-all.sh ```

微服务架构下(容器化部署)

  • 脚本方式启动容器: ```bash

    cd $GOPATH/filestore-server ./deploy/start-all.sh ```

  • 脚本方式关闭容器: ```bash

    cd $GOPATH/filestore-server ./deploy/stop-all.sh ```

  • docker-compose方式启动容器: ```bash

    cd ./deploy/service_dc sudo docker-compose up -d ```

  • k8s方式启动微服务: ```bash

    cd ./deploy/service_k8s kubectl apply -f svc_account.yaml kubectl apply -f svc_apigw.yaml kubectl apply -f svc_dbproxy.yaml kubectl apply -f svc_download.yaml kubectl apply -f svc_transfer.yaml kubectl apply -f svc_upload.yaml cd ./deploy/traefik_k8s kubectl apply -f service-ingress.yaml ```

3. 测试功能

使用提供的测试代码或工具测试文件上传、下载、转移等功能。

4. 部署生产

根据实际需求,将服务部署到生产环境,并进行必要的监控和日志管理。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】