项目简介
本项目是基于Golang实现的分布式云存储服务。采用微服务架构,包含上传服务、下载服务、数据库代理服务、消息队列服务和API网关等组件。各组件通过RPC通信,提供HTTP接口供前端或其他应用调用,支持通过HTTP、RPC以及消息队列进行文件的上传、下载、转移和管理等操作。
项目的主要特性和功能
- 文件上传与下载:支持大文件的分片上传和秒传功能,可通过HTTP接口或RPC调用实现。
- 文件转移:利用消息队列将文件从本地存储转移到Ceph或阿里云OSS等分布式存储。
- 数据库代理服务:提供与数据库交互的接口,用于用户管理和文件元数据管理。
- API网关:作为服务入口,处理前端的文件上传、下载等请求,并调用对应微服务。
- 消息队列:实现文件转移任务的异步处理,提升系统吞吐量和可扩展性。
- 文件元数据管理:支持文件哈希值的计算、存储和查询,以及文件的重命名、删除操作。
安装使用步骤
环境准备
确保已安装Golang环境,同时配置好Ceph集群或阿里云OSS等存储服务。手动安装所需库:
shell
go get gopkg.in/amz.v1/aws
go get gopkg.in/amz.v1/s3
若提示golang.org/x
相关的包无法下载,可参考国内下载golang.org/x/net。
代码下载
从项目的Git仓库中下载源代码,若要获取不同阶段代码,可参考以下命令:
- 下载master
主分支(最新代码):
bash
git clone https://git.imooc.com/coding-323/filestore-server.git
- 下载第九章(RabbitMQ异步存储)章节的代码(标签为v0.3
的版本):
bash
git clone --branch v0.3 https://git.imooc.com/coding-323/filestore-server.git
- 下载第八章(OSS)及之前章节的代码(标签为v0.2
的版本):
bash
git clone --branch v0.2 https://git.imooc.com/coding-323/filestore-server.git
配置修改
依据项目中的配置文件(如config.go
),修改连接数据库、消息队列和存储服务的参数。
启动服务
根据不同阶段和部署方式,选择相应的启动方式:
- 加入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
测试
使用提供的测试脚本或工具对文件上传、下载和转移等功能进行测试。
注意:以上步骤仅为基本的安装使用指南,实际部署时可能需根据具体环境和需求进行调整与优化。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】