手把手教你用 FastDFS 构建分布式文件管理系统
说起分布式文件管理系统,大家可能很容易想到 HDFS、GFS 等系统,前者是 Hadoop 的一部分,后者则是 google 提供的分布式文件管理系统 。除了这些之外,国内淘宝和腾讯也有自己的分布式文件管理系统,都叫 TFS(Taobao File System 和 Tencent File System) 。
相对于上面提到的这些分布式文件管理系统而言,FastDFS 可能离我们 JAVA 工程师更近一些,因为文件上传这个功能太常见了,而想要搭建独立的分布式文件管理系统,FastDFS+Nginx 组合无疑是最佳方案 。因此,松哥今天就来和大家简单聊一聊这个问题 。
如果小伙伴们还不懂在传统的开发环境下如何进行文件上传,可以参考松哥之前发在gongzhonghao的文件上传教程:
- Spring Boot + Vue,手把手教你做文件上传
这款开源软件从发布至今,历经数十年,这款开源软件的生命力依然旺盛,在业界依然备受推崇,当然这也得益于作者一直在不断完善该软件 。
FastDFS 专为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性,它可以看做是基于文件的 key/value 存储系统,key 为文件 ID,value 为文件内容,因此称作分布式文件存储服务更为合适 。
1.2 为什么需要 FastDFS传统的企业级开发对于高并发要求不是很高,而且数据量可能也不大,在这样的环境下文件管理可能非常 Easy 。
但是互联网应用访问量大、数据量大,在互联网应用中,我们必须考虑解决文件大容量存储和高性能访问的问题,而 FastDFS 就特别适合干这件事情,常见的图片存储、视频存储、文档存储等等我们都可以采用 FastDFS 来做 。
1.3 FastDFS 架构作为一款分布式文件管理系统,FastDFS 主要包括四个方面的功能:
- 文件存储
- 文件同步
- 文件上传
- 文件下载
下面这是一张来自 FastDFS 官网的系统架构图:

文章插图
从上面这张图中我们可以看到,FastDFS 架构包括 Tracker 和 Storage 两部分,看名字大概就能知道,Tracker 用来追踪文件,相当于是文件的一个索引,而 Storage 则用来保存文件 。
我们上传文件的文件最终保存在 Storage 上,文件的元数据信息保存在 Tracker 上,通过 Tracker 可以实现对 Storage 的负载均衡 。
Storage 一般会搭建成集群,一个 Storage Cluster 可以由多个组构成,不同的组之间不进行通信,一个组又相当于一个小的集群,组由多个 Storage Server 组成,组内的 Storage Server 会通过连接进行文件同步来保证高可用 。
2.FastDFS 安装介绍完 FastDFS 之后,相信小伙伴已经摩拳擦掌跃跃欲试了,接下来我们就来看下 FastDFS 的安装 。
【手把手教你用 FastDFS 构建分布式文件管理系统】我这里为了测试方便,就不开启多台虚拟机了,Tracker 和 Storage 我将安装在同一台服务器上 。
图片上传我们一般使用 FastDFS,图片上传成功之后,接下来的图片访问我们一般采用 Nginx,所以这里的安装我将从三个方面来介绍:
- Tracker 安装
- Storage 安装
- Nginx 安装
「1.一个环境」
先来看一个环境,由于 FastDFS 采用 C 语言开发,所以在安装之前,如果没有 gcc 环境,需要先安装,安装命令如下:
yum install gcc-c++
「2.两个库」再来看两个库,由于 FastDFS 依赖 libevent 库,安装命令如下:
yum -y install libevent
另一个库是 libfastcommon,这是 FastDFS 官方提供的,它包含了 FastDFS 运行所需要的一些基础库 。libfastcommon 下载地址:
https://github.com/hAppyfish100/libfastcommon/archive/V1.0.43.tar.gz
?将下载好的 libfastcommon 拷贝至 /usr/local/ 目录下,然后依次执行如下命令:
考虑到 GitHub 访问较慢,松哥已经把安装文件下载好了,放在百度网盘上,小伙伴们可以在松哥公众号后台回复 fastdfs 获取下载链接 。
?
cd /usr/localtar -zxvf V1.0.43.tar.gzcd libfastcommon-1.0.43/./make.sh./make.sh install
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 微信小程序开发教程:WeUI一个专为微信小程序设计的UI框架
- 从零开始学习OpenWrt:刷机 + 使用 + 编译教程
- 血一般的教训,请慎用Insert Into Select
- CentOS7.9安装教程
- 春季煲汤注意三点 饮食专家教你怎么煲出好汤
- 春季护肤有妙招 专家教你春季护手新招
- 单反相机入门教程
- 教师|高薪自由职业者20%-40%的个税,如何核定后低至0.7%左右?
- 通过国学教育后对孩子的影响 国学教育中实施存在的问题,有哪些
- 乌鸡的做法 5款乌鸡食疗方做法教给你