小型分布式文件存储系统GoFastDfs应用简介

前言

最近稍微留意了一下各个文件存储系统的协议,发现minio是LGPLV3, 而fastdfs 是GPL3,这些协议其实对于商业应用是一个大坑。故而寻找一些代替品。
go-fastdfs就是其中之一,官网在:
go-fastdfs

具体应用

其实可以直接查看官网教程的。
下面简单提一下大概流程,重点提一下有些业务需求的满足以及二次开发[例如,md5直到,多url转发同一文件等]。

简要部署流程

编译

首先从 github上下载源代码:
https://github.com/sjqzhang/go-fastdfs
然后使用本身自带脚本:
build.sh

进行编译— 当然了,你也可以自行编译的。

得到:
在这里插入图片描述

ps:我额外添加了部分参数进去–因为需要适配业务需求的。。。请无视。

然后执行命令运行程序:

./fileserver server

然后在浏览器上可以看到:
在这里插入图片描述

任意传一个文件,有:
在这里插入图片描述
到这里其实一个简单的原型部署就已经完成了,剩下的其实就是添加启动脚本,关闭脚本,或者添加它作为系统服务开机启动,然后前台进行对接上传文件。

服务器部署用脚本

下面顺便补充一下脚本:
start.sh

#!/bin/sh
touch log.log
nohup ./fileserver server  >> log.log 2>&1 &
tail -f log.log

stop.sh

#!/bin/sh
ps -ef|grep "./fileserver server" |grep -v grep|awk '{printf $2}'|xargs kill -9
ps -ef|grep "./fileserver server"
DATE=`date +%Y-%m-%d-%H-%M` #获取当前系统时间
mkdir logs
mv log.log logs/${DATE}_log.log

具体管理界面

目前这个版本是没有完善的管理界面的,
api倒是有:
https://sjqzhang.github.io/go-fastdfs/api.html
界面的话,可能是以下这个:
在这里插入图片描述
可以查看一下:
在这里插入图片描述

如果需要完善管理后台,又是一个工作量了。

不足/弥补之处

权限限制 回调不灵活

但这里要提一下一些问题,或者需要弥补的地方:
具体可以看看自动生成的配置文件:
在这里插入图片描述

其中有一份内容是:
在这里插入图片描述
上传时候验证方式有几种。。但是,个人感觉还是得根据业务系统来决定是否能够上传或者下载–
比如:每个会员有自己的存储空间,空间有大有小的,那么这种情况怎么算?万一超过了会员空间怎么算?
还有,上传完成了需要尽心回调通知业务服务器的-----客户端进行回调就很不靠谱了。
那就是1、需要回调。
不同的业务系统可能对后续操作不一样,
例如,场景1:
如果是会员成功上传了头像,这时候就需要通知系统进行头像审核了【头像也不是随便能上传的啊,一不小心内容有问题是要进去喝咖啡的】。
例如,场景2:
某个供应商上传了合同,需要通知甲方进行查看。 等等。
所以,其实文件上传成功与否其实也可以是决定下一步业务的关键点来的。
所以。。。嗯,估计重新加业务逻辑进去。

没有完整的管理界面。

相关推荐

  1. 分布式文件存储系统minio了解下

    2024-03-30 07:12:04       62 阅读
  2. OSS文件上传、MinIO分布式文件存储系统

    2024-03-30 07:12:04       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 07:12:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 07:12:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 07:12:04       87 阅读
  4. Python语言-面向对象

    2024-03-30 07:12:04       96 阅读

热门阅读

  1. 服务未注册到nacos通过gateway转发的配置

    2024-03-30 07:12:04       38 阅读
  2. MYSQL中update的low_priority

    2024-03-30 07:12:04       37 阅读
  3. 机器学习 - 提高模型 (代码)

    2024-03-30 07:12:04       38 阅读
  4. ARM.day8

    2024-03-30 07:12:04       39 阅读
  5. 怎么使用vuex的数据和方法

    2024-03-30 07:12:04       36 阅读
  6. 使用VHDL实现俄罗斯方块游戏设计

    2024-03-30 07:12:04       44 阅读
  7. PyTorch中的flatten+transpose函数说明

    2024-03-30 07:12:04       46 阅读
  8. 使用Dom4j解析多层级XML为Map对象

    2024-03-30 07:12:04       39 阅读
  9. 【threejs】计算矩阵、网格等总面积

    2024-03-30 07:12:04       46 阅读