业余时间基于golang,参考fastdfs,实现了一个简单的分布式文件管理系统。
项目地址:https://github.com/smally84/easy-dfs
项目说明
本项目参考fastdfs逻辑进行简单实现,主要功能包括:
- 文件上传
- 文件删除
- 文件下载
- 文件多副本同步保存和删除
- tracker自动容量均衡到不同的存储组
使用说明
- 1.clone源代码,编译出二进制文件
cd cmdgo build main.go -o dfs./dfs
- 2.配置文件 将 configs/dsf.yml放到dfs可执行文件目录
server_type: "storage"#http_porthttp_port: 9000#默认语言default_lang: zh_cn#跟踪服务器的配置tracker: node_id: 1# 存储服务器的配置 storage: #http_scheme http_scheme: http #存储服务所属的group group: group1 #文件大小限制,单位字节 file_size_limit: 100000 #存储目录 storage_path: ./ #跟踪服务器,可以有多个 tracker: - http://127.0.0.1:9000
服务的类型:用server_type来定义。 最小系统,要配置一个tracker,一个storage
接口说明
- 上传api: /uploadmethod: post参数:file
- 下载api: /完整文件路径method: get
- 删除api: /deletemethod: post参数: file_name(注意为完整路径)
项目工具
- gin,高效的golang web框架
- leveldb,基于golang的kv数据库
拓扑图
![662b67cedd565e841527e6f3a256f8ed.png](https://i-blog.csdnimg.cn/blog_migrate/dee8964add919bcd9a63392e531eba44.jpeg)
单集群
![2f38868379a2cd585c1b94a39a1569bd.png](https://i-blog.csdnimg.cn/blog_migrate/a5e2404ae4454ed03728d961a47bed6b.jpeg)
多集群
![85115fa855dcd6d52537e76fa3d1d304.png](https://i-blog.csdnimg.cn/blog_migrate/62a634180d3601e40ed002a6d812df1a.jpeg)
tracker服务器定时任务
![e65ae27a893d89e011b593ed8d82e2d8.png](https://i-blog.csdnimg.cn/blog_migrate/45cbc2e7191d2b5cd538d411c552ef37.jpeg)
上传流程
业余时间还会继续完善该项目,欢迎一起学习交流!