美文网首页
分布式文件存储go-fastdfs 与 go-fastdfs-w

分布式文件存储go-fastdfs 与 go-fastdfs-w

作者: Andy_1ee | 来源:发表于2020-01-02 23:10 被阅读0次

我们在平时进行网站开发的时候经常需要存储一些图片,如果我们将图片存储在应用程序服务器的话会影响服务器的性能,此时我们就需要将这些文件存储在专门的文件服务器上,分布式存储的服务有很多,go-fastdfs是其中使用起来较为简单的一种。

go-fastdfs服务器的搭建

go-fastdfs的github地址:https://github.com/sjqzhang/go-fastdfs

go-fastdfs 服务器的搭建较为简单,常见的搭建方式有从官网直接找到编译的版本进行安装、使用docker进行安装两种,当然本着没有最简单只有更简单的方式,我们使用docker进行安装(官方版本)

docker search go-fastdfs
使用docker搜索go-fastdfs镜像
此时我们就可以根据go-fastdfs的官方文档进行相应容器启动操作了
go-fastdfs的文档地址为:https://sjqzhang.github.io/go-fastdfs/install.html#docker

go-fastdfs docker 容器的创建命令是:

 docker run --name fastdfs -v /data/fastdfs_data:/data -p 8080:8080 -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs

go-fastdfs的目录结构一般是:

├── conf
│   └── cfg.json
├── data
│   ├── 20200102
│   ├── fileserver.db
│   ├── log.db
│   └── stat.json
├── files
│   ├── _big
│   └── default
├── fileserver
├── log
│   ├── access.log
│   ├── fileserver.log
│   └── tusd.log
└── static
    └── uppy.html

如果我们想更改文件服务器的配置,只需要更改 conf/cfg.json文件即可

{
    "绑定端号": "端口",
    "addr": ":8080",
    "PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
    "peer_id": "2",
    "本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
    "host": "http://172.16.13.103:8080",
    "集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
    "peers": ["http://172.16.13.103:8080","http://172.16.13.104:8080"],
    "组号": "用于区别不同的集群(上传或下载)与support_group_upload配合使用,带在下载路径中",
    "group": "group1",
    "是否合并小文件": "默认不合并,合并可以解决inode不够用的情况(当前对于小于1M文件)进行合并",
    "enable_merge_small_file": false,
    "重试同步失败文件的时间": "单位秒",
    "refresh_interval": 1800,
    "是否自动重命名": "默认不自动重命名,使用原文件名",
    "rename_file": false,
    "是否支持web上传,方便调试": "默认支持web上传",
    "enable_web_upload": true,
    "是否支持非日期路径": "默认支持非日期路径,也即支持自定义路径,需要上传文件时指定path",
    "enable_custom_path": true,
    "下载域名": "用于外网下载文件的域名,不包含http://",
    "download_domain": "",
    "场景列表": "当设定后,用户指的场景必项在列表中,默认不做限制(注意:如果想开启场景认功能,格式如下:'场景名:googleauth_secret' 如 default:N7IET373HB2C5M6D ",
    "scenes": [],
    "默认场景": "默认default",
    "default_scene": "default",
    "是否显示目录": "默认显示,方便调试用,上线时请关闭",
    "show_dir": true,
    "邮件配置": "",
    "mail": {
        "user": "abc@163.com",
        "password": "abc",
        "host": "smtp.163.com:25"
    },
    "告警接收邮件列表": "接收人数组",
    "alram_receivers": [],
    "告警接收URL": "方法post,参数:subjet,message",
    "alarm_url": "",
    "下载是否需带token": "真假",
    "download_use_token": false,
    "下载token过期时间": "单位秒",
    "download_token_expire": 600,
    "是否自动修复": "在超过1亿文件时出现性能问题,取消此选项,请手动按天同步,请查看FAQ",
    "auto_repair": true,
    "文件去重算法md5可能存在冲突,默认md5": "sha1|md5",
    "file_sum_arithmetic": "md5",
    "是否支持按组(集群)管理,主要用途是Nginx支持多集群": "默认不支持,不支持时路径为http://10.1.5.4:8080/action,支持时为http://10.1.5.4:8080/group(配置中的group参数)/action,action为动作名,如status,delete,sync等",
    "support_group_manage": false,
    "管理ip列表": "用于管理集的ip白名单,",
    "admin_ips": ["127.0.0.1"],
    "是否启用迁移": "默认不启用",
    "enable_migrate": false,
    "文件是否去重": "默认去重",
    "enable_distinct_file": true,
    "是否开启跨站访问": "默认开启",
    "enable_cross_origin": true,
    "是否开启Google认证,实现安全的上传、下载": "默认不开启",
    "enable_google_auth": false,
    "认证url": "当url不为空时生效,注意:普通上传中使用http参数 auth_token 作为认证参数, 在断点续传中通过HTTP头Upload-Metadata中的auth_token作为认证参数,认证流程参考认证架构图",
    "auth_url": "",
    "下载是否认证": "默认不认证(注意此选项是在auth_url不为空的情况下生效)",
    "enable_download_auth": false,
    "默认是否下载": "默认下载",
    "default_download": true,
    "本机是否只读": "默认可读可写",
    "read_only": false,
    "是否开启断点续传": "默认开启",
    "enable_tus": true
}

此时我们可以可以查看容器是否创建成功,一般情况下此时一个go-fastdfs服务就可以使用了


浏览器访问

在浏览器中输入 : http:// 你的ip地址:8080 就可以返回如下界面

浏览器界面
通过选择图片进行上传就可以得到图片服务器的返回结果,返回的结果包括图片的访问src等信息
python代码访问

除了在浏览器中使用服务,还可以在代码中使用,在python代码中的使用为:

import requests
url = 'http://10.1.5.9:8080/group1/upload'
files = {'file': open('report.xls', 'rb')}
options={'output':'json','path':'','scene':''} #参阅浏览器上传的选项
r = requests.post(url,data=options, files=files)
print(r.text)

与此同时go-fastdfs还支持断点续传与集群部署,具体的实现细节可以在移步官方文档。

go-fastdfs-web服务的搭建

待更新

相关文章

网友评论

      本文标题:分布式文件存储go-fastdfs 与 go-fastdfs-w

      本文链接:https://www.haomeiwen.com/subject/ytvooctx.html