网站首页 > 基础教程 正文
go-fastdfs是一个基于http协议的分布式文件系统, 它基于大道至简的设计理念, 一切从简设计, 使得它的运维及扩展变得更加简单,
它具有高性能、高可靠、无中心、免维护等优点。
https://github.com/sjqzhang/go-fastdfs
大家担心的是这么简单的文件系统, 靠不靠谱, 可不可以用于生产环境? 答案是肯定的, 正因为简单所以高效, 因为简单所以稳定。
如果你担心功能, 那就跑单元测试, 如果担心性能, 那就跑压力测试, 项目都自带了, 跑一跑更放心^_^。
支持curl命令上传
支持浏览器上传
支持HTTP下载
支持多机自动同步
支持断点下载
支持配置自动生成
支持小文件自动合并(减少inode占用)
支持秒传
支持一键迁移
支持并行体验
支持断点续传(tus)
支持docker部署
支持自监控告警
支持集群文件信息查看
使用通用HTTP协议
无需专用客户端(支持wget,curl等工具)
类fastdfs
高性能 (使用leveldb作为kv库)
高可靠(设计极其简单,使用成熟组件)
无中心设计(所有节点都可以同时读写)
优点
无依赖(单一文件)
自动同步
失败自动修复
按天分目录方便维护
支持不同的场景
文件自动去重
支持目录自定义
支持保留原文件名
支持自动生成唯一文件名
支持浏览器上传
支持查看集群文件信息
支持集群监控邮件告警
支持小文件自动合并(减少inode占用)
支持秒传
极低资源开销
支持断点续传(tus)
支持docker部署
支持一键迁移(从其他系统文件系统迁移过来)
支持并行体验(与现有的文件系统并行体验,确认OK再一键迁移)
支持token下载 token=md5(file_md5+timestamp)
运维简单,只有一个角色(不像fastdfs有三个角色Tracker Server,Storage Server,Client),配置自动生成
每个节点对等(简化运维)
所有节点都可以同时读写
启动服务器(已编译, 下载极速体验, 只需一分钟)
./fileserver
命令上传
curl -F file=@http-index-fs http://10.1.xx.60:8080/upload
WEB上传(浏览器打开)
http://yourserver ip:8080 注意:不要使用127.0.0.1上传
golang版本
package main
import (
"fmt"
"github.com/astaxie/beego/httplib"
)
func main() {
var obj interface{}
req:=httplib.Post("http://10.1.7.9:8080/upload")
req.PostFile("file","path/to/file")
req.Param("output","json")
req.Param("scene","")
req.Param("path","")
req.ToJSON(&obj)
fmt.Print(obj)
}
断点续传示例
golang版本
package main
import (
"os"
"fmt"
"github.com/eventials/go-tus"
)
func main() {
f, err := os.Open("100m")
if err != nil {
panic(err)
}
defer f.Close()
// create the tus client.
client, err := tus.NewClient("http://10.1.7.9:8080/big/upload/", nil)
fmt.Println(err)
// create an upload from a file.
upload, err := tus.NewUploadFromFile(f)
fmt.Println(err)
// create the uploader.
uploader, err := client.CreateUpload(upload)
fmt.Println(err)
// start the uploading process.
fmt.Println( uploader.Upload())
}
猜你喜欢
- 2024-11-26 golang defer、panic、recover实践
- 2024-11-26 OpenHarmony3.0在树莓派3B上的烧录与通讯
- 2024-11-26 go|bytes.buffer
- 2024-11-26 AOVX资产跟踪产品测试工具mPower1203如何使用python对接 (二)
- 2024-11-26 Python os.dup2() 方法是什么?os.du
- 2024-11-26 go中关于文件和json操作的知识点小结
- 2024-11-26 python3从零学习-5.8.4、mmap—内存映射文件支持
- 2024-11-26 29.Python 读取文件的六种方式
- 2024-11-26 macOS安装并设置五笔输入法
- 2024-11-26 树莓派3B上烧录OpenHarmony3.0
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)