小型分布式文件存储系统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:
某个供应商上传了合同,需要通知甲方进行查看。 等等。
所以,其实文件上传成功与否其实也可以是决定下一步业务的关键点来的。
所以。。。嗯,估计重新加业务逻辑进去。

例如,场景3:
积分下载。
某个文件的下载是有权限的,不同会员角色,例如,level2才能进行下载,而且下载完毕以后要扣除一定数量的金币,level2的扣除10个金币,level3的扣除5个金币,level4或以上的免费。这个时候除了authToken以后还得有下载时候需要回调给业务系统一个扣除金币的操作。

没有完整的管理界面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/501586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins详细安装配置部署

目录 简介一、安装jdk二、安装jenkins这里如果熟悉 Jenkins ,可以【选择插件来安装】,如果不熟悉,还是按照推荐来吧。注意: 三、插件安装如果上面插件安装,选择的不是【安装推荐的插件】,而是【选择插件来安…

学习Fast-LIO系列代码中相关概念理解

目录 一、流形和流形空间(姿态) 1.1 定义 1.2 为什么要有流形? 1.3 流形要满足什么性质? (1) 拓扑同胚 (2) 可微结构 1.4 欧式空间和流形空间的区别和联系? (1) 区别: (2) 联系: 1.5 将姿态定义在流形上比…

基于java+springboot+vue实现的二手闲置物品置换系统(文末源码+Lw+ppt)23-375

摘 要 大学生二手闲置物品置换交易管理系统设计的目的是为用户提供免费物品、积分物品等功能。 与其它应用程序相比,大学生二手闲置物品置换交易的设计主要面向于学校,旨在为管理员和卖家、用户提供一个大学生二手闲置物品置换交易管理系统。用户可以…

Java项目:80 springboot师生健康信息管理系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的角色:管理员、宿管、学生 管理员管理宿管员,管理学生,修改密码,维护个人信息。 宿管员…

LLM推理入门指南②:深入解析KV缓存

在本系列文章《LLM推理入门指南①:文本生成的初始化与解码阶段》中,作者对Transformer解码器的文本生成算法进行了高层次概述,着重介绍了两个阶段:单步初始化阶段,即提示的处理阶段,和逐个生成补全词元的多…

数组类模板(类模拟实现静态数组)

目录 介绍: 案例描述: 思路: 对要求分别分析实现: 创建对应的类: 1.定义一个数组类 2.类中属性有:数组, 容量, 大小 3.数组函数有: 构造函数(容量&am…

Oracle EBS AR接口和OM销售订单单价为空数据修复

最近,用户使用客制化Web ADI 批量导入销售订单行功能,把销售订单行的单价更新成空值,直到发运确认以后,财务与客户对帐才发现大量销售订单的单价空,同时我们检查AR接口发现销售订单的单价和金额均为空。 前提条件 采用PAC成本方式具体问题症状 销售订单行的单价为空 Path:…

车载以太网AVB交换机 gPTP透明时钟 6口 百兆车载以太网交换机

SW100TE百兆车载以太网交换机 一、产品简要分析 6端口百兆车载以太网交换机,其中包含5通道100BASE-T1泰科MATEnet接口和1个通道100BASE-TX标准以太网(RJ45接口),可以实现车载以太网多通道交换,车载以太网数据采集和模拟,Bypass数…

Discourse 最多允许有几个分类级别

和 DISCUZ 不同,DISCUZ 可以允许分类下面还有分类,再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话,系统会提示错误: 意思就是子分类不能再分子分类。 Discourse 尽量采取了…

Chapter 1 - 6. Introduction to Congestion in Storage Networks

NVMe/TCP NVMe/TCP carries NVMe commands over TCP transport (Figure 1-8) for accessing remote block storage via a lossy or sometimes lossless network. It is an OSI layer 5 (sessions layer) protocol. NVMe/TCP 通过 TCP 传输(图 1-8)传输 NVMe 命令,以便通过有…

pnpm、monorepo分包管理、多包管理、npm、vite、前端工程化、保姆级教程

浅尝pnpm monorepo 多包管理方案 💡tips: 创建pnpm monorope多包管理框架流程 初始化 mkdir taurus & cd taurus pnpm init创建基础文件 创建文件pnpm-workspace.yaml packages:- packages/**创建文件夹packages/ -packages/ -package.json -pnpm-workspace…

一周学会Django5 Python Web开发-Django5模型分页查询

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计43条视频,包括:2024版 Django5 Python we…

初步了解C++

目录 一:什么是C? 二.C发展史 三:C关键字 四:命名空间 4.1命名空间的介绍 4.2命名空间的使用 4.3命名空间的使用 4.3.1使用作用域限定符 4.3.2 使用using将命名空间的某个成员引入 4.3.3使用using把整个命名空间展开 4.4命名空…

软件测试计划

1测试目的 2测试范围 3资源要求 3.1人力资源 3.2指派干系人 3.3测试环境 3.4测试工具 4测试类型 5测试安排 5.1测试进度 5.2测试策略 5.2.1测试需求 5.2.2测试类型 6测试停止标准 7测试风险 8缺陷管理 8.1缺陷属性 8.2缺陷类型 8.3缺陷严重程度 8.4缺陷优先…

(十一)图像的罗伯特梯度锐化

环境:Windows10专业版 IDEA2021.2.3 jdk11.0.1 OpenCV-460.jar 系列文章: (一)PythonGDAL实现BSQ,BIP,BIL格式的相互转换 (二)BSQ,BIL,BIP存储格式的相互转换算法 (三…

windows无法使用hadoop报错:系统找不到路径

在windows下安装hadoop-3.1.4,进行环境变量配置后,打开window命令行窗口测试hadoop命令,报错,如图所示: 方案:由于JAVA_HOME路径有空格导致,可修改hadoop下\etc\hadoop\hadoop_env.cmd文档中set JAVA_HOME以…

Beans模块之工厂模块DisposableBean

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

【软件工程导论】——Visio与StarUML的安装

目录 🕒 1. Visio🕒 2. StarUML 🕒 1. Visio 1、下载Office Tool Plus并安装:🔎 Office Tool Plus官网 2、打开软件 → 部署 → 添加产品 3、这里我选择Visio 2021 专业版 LTSC,确定,随后点击“…

ABAP AMDP 示例

AMDP 是HANA开发中的一种优化模式 按SAP的官方建议,在可以使用Open SQL实现需要的功能或优化目标的时候,不建议使用AMDP。而在需要使用Open SQL不支持的特性,或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况…

自动化潮流框架——Playwright 大解密!

一说到自动化测试,第一个反应估计就是Pythonselenium这样的一个组合,其实在2020年的时候市面上就出现了另一个由微软发布的一款UI自动化测试工具,叫Playwright。经过几年的迭代和技术的沉淀,该工具受到越来越多的人重视和青睐。 B…