保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第1张图片
官方网站:https://github.com/happyfish100/

配置文档:https://github.com/happyfish100/fastdfs/wiki/

参考资料:https://www.oschina.net/question/tag/fastdfs

Java客户端:https://github.com/happyfish100/fastdfs-client-java


文章目录

  • 为什么要学习分布式文件系统?
  • 什么是分布式文件系统?
  • FastDFS
    • FastDFS是什么?
    • FastDFS整体架构
    • 下载安装
      • 一.安装前置依赖包
      • 二.安装libfastcommon
      • 三.安装FastDFS
        • 配置Tracker服务
        • 配置Storage服务
      • 四.安装Nginx和fastdfs-nginx-module模块
        • 配置Nginx和fastdfs-nginx-module模块
    • 上传下载测试
    • FastDFS-扩展模块执行流程
    • 常用命令
    • Java操作FastDFS
      • 准备工作
      • 上传文件
      • 下载文件
      • 删除文件

为什么要学习分布式文件系统?

在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去。

举一个简单的例子,按照一个传统的上传方式,前端使用form表单,提交按钮直接submit到后台,其关键的代码就是文件的接收,至于后面的存储操做,基本上都是对IO流的操做。而文件也只是保存到本地磁盘或对应的服务器。这样就会有一些致命的缺点。

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第2张图片

如果这台计算机宕机了,那么会导致整个服务不可用,文件不能上传和下载了,如果这台计算机磁盘损坏了那么会丢失所有的文件。并且这台计算机的磁盘空间非常有限,很容易达到磁盘的上线导致无法上传文件。

了解完传统的文件上传系统的一些弊端后,我们针对下方的一个需求带大家进一步了解分布式文件系统的一些好处。

  • 需求案例:假设现在需要做一个类似抖音b站的,视频分享网站,会拥有大量的视频教程资源供用户观看以及上传下载,文件太多如果高效存储?用户访问量大如何保证下载速度呢?

  • :分布式文件系统是解决这些问题的有效方法之一


什么是分布式文件系统?

百度百科是这样说的!

  • 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。

  • 另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。

这里讲的可能会有些官方,没关系!下面我将结合上方的需求给大家做了一个简单的总结。

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第3张图片

之前我们将上传的视频文件放在一台宿主机内,如果一个盘符内存不够,就增加硬盘个数,但是单纯的增加硬盘个数已经无法满足当代的需求,毕竟硬盘访问速度有限。

分布式文件系统将视频分别放在不同计算机内,通过网络将一个一个计算机的文件系统连接起来组成一个网络文件系统,形成一个分布式网络,一台计算机的文件系统处理能力扩充到多台计算机内同时处理,就算某一台计算机挂了,还有另外副本(备份)计算提供数据。每台计算机也可以放在不同的地域,这样用户就可以就近访问,提高访问速度。有效的解决单点故障文件丢失等一系列问题,特别适合我们高并发,常扩容的这么一个业务场景下。


FastDFS

FastDFS纯C语言实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。


FastDFS是什么?

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载) 等,解决了大容量存储和负载均衡的问题。

特别适合以文件为载体的在线服务,如相册网站、视频网站、图片网站、文档网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。


FastDFS整体架构

FastDFS文件系统主要由两大部分构成,一个是客户端,一个是服务端。

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第4张图片

客户端(Client)通常指我们的程序

  • 比如我们的Java程序去连接FastDFS,操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供有API用来访问FastDFS文件系统,控制文件上传下载层( 如果你是 java 开发,你只需要关心着一层)。

服务端有两个部分构成

  1. 跟踪器(Tracker):跟踪器主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端 Client 和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server 的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
  2. 存储节点(Storage):存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储,文件同步和提供文件访问等。

下载安装

  • 下载安装分以下三个步骤,请按照顺序进行操作。

一.安装前置依赖包

检查Linux上是否安装了 gcc,libevent,libevent-devel

yum list installed | grep gcc


yum list installed | grep libevent


yum list installed | grep libevent-devel

如果没有安装以上前置依赖包,则需要通过下面命令进行安装

yum install gcc libevent libevent-devel-y

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第5张图片


二.安装libfastcommon

前置依赖包安装成功后,我们紧接着需要安装公共函数库 libfastcommon

  1. 获取libfastcommon安装包

    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第6张图片

  1. 解压安装包

    tar -zxvf V1.0.36.tar.gz

保姆级教程-分布式文件系统FastDFS(高效存储,有效解决大量资源上传下载)_第7张图片

  1. 安装完成后进入 libfastcommon 目录

    cd libfastcommon-1.0.36

在这里插入图片描述

  1. 在 libfastcommon 目录执行编译

    ./make.sh

你可能感兴趣的:(前端,html,javascript,前端,vue.js)