该开源项目是一个高效可靠的分布式文件存储系统,采用了多种前沿技术,包括Gin、gRPC、Etcd和RabbitMQ,旨在为用户提供全面的文件存储和管理解决方案。通过整合各项功能和技术,我们实现了文件上传、分片上传、秒传、断点续传、文件定时同步、冗余备份、线性扩容等一系列核心功能,同时引入了插件化架构,支持底层存储对象的灵活注册,可连接主流云存储厂商的对象存储服务(OSS)或本地存储设备。
这个项目是一个Linux或Windows系统下的二进制可执行文件,不需要安装任何依赖项。只需要按照以下步骤进行即可:
- 下载最新版本的可执行文件:
wget https://github.com/PIPIKAI/yun/releases/latest/download/yun-linux-amd64
- 控制台中执行以下命令来启动客户端或存储端:
启动客户端:
./yun start --f "tracker"
启动存储端:
./yun start --f "storage"
ToDo List:
-
文件同步(实时,定时,周期性文件同步)
-
auth
-
文件管理
-
ui
-
客户端生成配置文件,热加载配置文件
- 整体架构
- 分片上传过程(详细版)
- 服务注册与发现
- etcd分布式id
通过实现对应的接口,存储服务端可以实现不同的存储类型,例如支持各大云盘,如OneDrive,百度云,阿里云、各大品牌NAS...
举例:
Step1:
在storage/drivers
目录下新建文件夹 one_drive
Step2:
完成core/storage/drivers/vo/idrivers.go
文件中的对应的Driver接口、
type Driver interface {
GetAddition() Addition
Init(context.Context) error
Readder
Writter
}
Step3:
创建对应的初始化函数
func New() *Local {
return &Local{}
}
并在core/storage/drivers/enter.go
文件中注册对应的Driver
var DriverCenter = map[string]vo.Driver{
"OneDrive": one_drive.New(),
}
我们欢迎任何形式的贡献,包括但不限于:报告问题、提交bug修复、改进文档和代码等。如果您想做出贡献,请按照以下步骤进行:
- Fork这个项目,并克隆到本地。
- 在本地分支中进行修改。
- 提交Pull Request,描述您的修改内容和用途。
本项目基于MIT许可证开放源代码。
如果您对这个项目有任何问题或建议,请通过以下方式联系我们:
- 发送邮件到 z1652091948@outlook.com
- 在GitHub上提交问题
感谢您的使用和贡献!