GoFastDFS:轻量级高性能分布式文件存储解决方案(Window安装部署)

0 阅读7分钟

本文由 本人CSDN博客转码, 原文地址 GoFastDFS:轻量级高性能分布式文件存储解决方案(Window安装部署)-CSDN博客

一、GoFastDFS 概述

GoFastDFS 是一个基于 HTTP 协议的分布式文件存储系统,采用 Go 语言开发,具有轻量级、高性能、易部署等特点。它专为互联网应用设计,特别适合图片、视频、文档等中小文件的存储与分发场景。

它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。

核心特性

  • 极简架构:单二进制文件部署,无外部依赖

  • 高性能:采用内存映射技术,小文件存储效率极高

  • 高可用:支持集群部署,自动同步副本

  • 断点续传:支持大文件分片上传和断点续传

  • 兼容 S3:提供兼容 Amazon S3 的 API 接口

  • 智能缓存:内置智能缓存机制,加速热点文件访问

二、架构设计

1. 系统组成

  • Tracker:调度节点,负责负载均衡和调度

  • Storage:存储节点,实际存储文件数据

  • Client:客户端,通过 HTTP API 与系统交互

2. 数据分布策略

  • 文件分片:大文件自动分片存储

  • 副本机制:默认 3 副本存储(可配置)

  • 一致性哈希:优化数据分布和节点扩容

三、go-fastdfs 的搭建

1. 下载

下载地址:

第一步,打开 go-fastdfs 的服务地址,滑到下面下载 Windows 版本的服务

第二步,打开 go-fastdfs 后台管理端地址点击这里

下载 zip 格式的文件

2. 安装 Go-FastDFS 服务

第一步,将下载好的压缩包和 exe 文件放到自已指定的文件夹下

第二步,解压并打开客户端的压缩文件

第三步,在当前目录输入 cmd 回车 进入命令行

第四步,通过命令 fileserver.exe server 来执行 Windows 版的服务

第五步,它的默认端口号是 8080,启动成功后会生成相关的配置文件等,我们需要进入生成的 conf/cfg.json 文件中修改其端口号。

{
"绑定端号": "端口",
"addr": ":8080",
"是否开启 https": "默认不开启,如需启开启,请在 conf 目录中增加证书文件 server.crt 私钥 文件 server.key",
"enable_https": false,
"PeerID": "集群内唯一, 请使用 0-9 的单字符,默认自动生成",
"peer_id": "4",
"本主机地址": "本机 http 地址, 默认自动生成 (注意端口必须与 addr 中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
"host": "http://192.168.101.126:8080",
"集群": "集群列表, 注意为了高可用,IP 必须不能是同一个, 同一不会自动备份,且不能为 127.0.0.1, 且必须为内网 IP,默认自动生成",
"peers": ["http://192.168.101.126:8080"],
"组号": "用于区别不同的集群 (上传或下载) 与 support_group_manage 配合使用, 带在下载路径中",
"group": "group1",
"是否支持按组(集群)管理, 主要用途是 Nginx 支持多集群": "默认支持, 不支持时路径为 http://10.1.5.4:8080/action, 支持时为 http://10.1.5.4:8080/group(配置中的 group 参数)/action,action 为动作名,如 status,delete,sync 等",
"support_group_manage": true,
"是否合并小文件": "默认不合并, 合并可以解决 inode 不够用的情况(当前对于小于 1M 文件)进行合并",
"enable_merge_small_file": false,
"图片是否缩放": "默认是",
"enable_image_resize": true,
"图片最大宽度": "默认值 2000",
"image_max_width": 2000,
"图片最大高度": "默认值 1000",
"image_max_height": 1000,
"允许后缀名": "允许可以上传的文件后缀名,如 jpg,jpeg,png 等。留空允许所有。",
"extensions": [],
"重试同步失败文件的时间": "单位秒",
"refresh_interval": 1800,
"是否自动重命名": "默认不自动重命名, 使用原文件名",
"rename_file": false,
"是否支持 web 上传, 方便调试": "默认支持 web 上传",
"enable_web_upload": true,
"enable_pprof_debug": false,
"是否支持非日期路径": "默认支持非日期路径, 也即支持自定义路径, 需要上传文件时指定 path",
"enable_custom_path": true,
"下载域名": "用于外网下载文件的域名",
"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"
},
"反向代理缓存内容":"目前只支持 pypi ex:  pip install -i http://127.0.0.1:9000/simple pandas",
"proxies":[
{"dir":"pypi","origin":"pypi.douban.com","addr":":9000"}
],
"告警接收邮件列表": "接收人数组",
"alarm_receivers": [],
"告警接收 URL": "方法 post, 参数: subject,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",
"管理 Key": "用于管理集的 key",
"admin_key": "95ab8978-4e1c-d382-da89-4b15340adfbd",
"管理 ip 列表": "用于管理集的 ip 白名单, 如果放开所有内网则可以用 0.0.0.0 , 注意为了安全,不对外网开放",
"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,
"同步单一文件超时时间(单位秒)": "默认为 0, 程序自动计算,在特殊情况下,自已设定",
"sync_timeout": 0
}

addr:为默认的端口号

host 与 peers 这两个地址必须要保持一致

这里修改为 8888,配置完成后关闭黑窗口,再次重新启动即可!

打开调试页面**(无后台管理使用,对应配置参数为 "enable_web_upload": true)**

测试上传效果

点击选择文件,然后点击 upload,显示这个说明上传成功。

复制 url 进行访问,查看是否可以获取文件,成功获取到文件说明服务端已经安装完成。

3. 安装后台可视化界面。

第一步,打开事先解压好的文件

config: 文件夹里面的 application.yml 文件是用来配置服务的属性的。
go-fastdfs-web.jar: 后台管理界面 jar 包
goFastDfsWeb.sh: linux 启动
start.bat: windows 启动 (压缩包自带)

第二步,打开 conf 目录下 application.yml 文件配置端口号,这里修改为 8889

第三步,点击 start.bat 启动后台管理服务,看见 JVM 即启动成功!

第四步,访问后台管理页面配置 gofastdfs 界面

根据自己设置的后台管理 ip 访问(我这里设置的是 8889)

第一次访问时会提示未检测到本地的 GoFastDfs 服务,是因为它会自动去找 127.0.0.1:8080,而我们在这里修改了默认端口!

切记不要关闭服务!

然后点击下一步,进行账号配置:

第五步,安装完成后点击账号登录,输入刚才创建的账号密码进行登录

看到这个界面表示登录成功!

下面我们上传文件进行测试,这里需要替换为自已的 ip 地址


点击选择文件,并上传,成功回显并下载说明后台也管理成功。

查看上传的文件,选择文件列表然后根据你的路径日期,一步步往下看就可以。

这个就是刚刚我上传的文件

至此 window 下的安装部署 gofastdfs 就已完成,如果不想 cmd 页面常驻桌面上,可以去写个脚本让 cmd 后台执行即可,后面有时间我会补充下。