• 分布式文件存储系统FastDFS[1]-介绍以及安装


    一、分布式文件存储

    1.分布式文件存储的由来

      在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一个服务器中。

      后面随着文件越来越多,服务器的资源会被文件资源大量占据,从而影响到服务器的稳定,这时我们可以单独的把文件服务器拆出来。

      拆解出来后,文件服务的使用不会影响到我们的系统服务的稳定,但是当用户量越来越大,存储的文件就会越来越多,这时如果还是单台的文件服务,比如100T的文件,这时是存储不下去的,这时就产生了我们将的分布式文件存储,

      也就是我们解决如何将这100T的文件分散的存储到各个节点上,然后当我们需要读取文件的时候又能非常快的帮我们把文件找到。这个就是分布式文件系统帮我们解决的问题了。

    2.常见的分布式存储框架

      接下来我们看看在国内常用的分布式存储的框架选择有哪些

    cc03a44bb788be46309d455a305753e0.png

      好了就介绍这么几个,其他的我们也用不到了。

    二、FastDFS介绍

      FastDFS是余庆国人开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

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

    FastDFS的特点:

    • FastDFS是一个轻量级的开源分布式文件系统

    • FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡

    • FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储

    • 支持存储服务器在线扩容

    • 支持相同内容的文件只保存一份,节约磁盘空间

    • FastDFS只能通过Client API访问,不支持POSIX访问方式

    • FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)

    架构图:

    相关术语讲解:

    名词描述
    Tracker Server跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。 记录storage server的状态,是连接Client和Storage server的枢纽
    Storage Server存储服务器,文件和meta data都保存到存储服务器上
    group组,也可称为卷。同组内服务器上的文件是完全相同的
    文件标识包括两部分:组名和文件名(包含路径)
    meta-data文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768

    架构解读:

    • 只有两个角色,tracker server和storage server,不需要存储文件索引信息。

    • 所有服务器都是对等的,不存在Master-Slave关系。

    • 存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)。

    • 不同组的storage server之间不会相互通信。

    • 由storage server主动向tracker server报告状态信息,tracker server之间不会相互通信。

    三、FastDFS安装

      FastDFS的安装我们还是通过Docker来安装实现吧,直接在Linux上还装还是比较繁琐的,但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦,不清楚的可以看看我的Docker专题的内容。https://blog.csdn.net/qq_38526573/category_9619681.html

    1.拉取镜像文件

      首先我们可以通过 docker search fastdfs 来查询下有哪些镜像文件。

      我们看到搜索到的镜像还是蛮多的,这里我们使用 delron/fastdfs 你也可以尝试使用其他的镜像来安装,你也可以制作自己的镜像来给别人使用哦,只是不同的镜像在使用的时候配置会有一些不一样,有些镜像没有提供Nginx的相关配置,使用的时候会繁琐一点。接下来通过 docker pull delron/fastdfs命令把镜像拉取下来。

    2.构建Tracker服务

      首先我们需要通过Docker命令来创建Tracker服务。命令为

    docker run -d --name tracker --network=host -v /mydata/fastdfs/tracker:/var/fdfs delron/fastdfs tracker

      tracker服务默认的端口为22122,-v 实现了容器和本地目录的挂载操作。

    3.构建Storage服务

      接下来创建Storage服务,具体的执行命令如下

    docker run -d --name storage --network=host  -e TRACKER_SERVER=192.168.56.100:22122 -v /mydata/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

      在执行上面命令的时候要注意对应的修改下,其中TRACKER_SERVER中的ip要修改为你的Tracker服务所在的服务IP地址。

      默认情况下在Storage服务中是帮我们安装了Nginx服务的,相关的端口为

    服务默认端口
    tracker22122
    storage23000
    Nginx8888

      当然如果你发现这些相关的端口被占用了,或者想要对应的修改端口信息也可以的。要修改你可以先进入容器中查看下相关的配置文件信息。

      然后查看storage.conf文件

      这个是storage监听的Nginx的端口8888,如果要修改那么我们还需要修改Nginx中的服务配置,这块的配置在 /usr/local/nginx/conf目录下

      查看下文件

    所以要修改端口号的话,这两个位置都得修改了。当然本文我们就使用默认的端口号来使用了。

    4.测试图片上传

      好了,安装我们已经完成了,那么到底是否可以使用呢?我们来测试下。首先在虚拟机的/mydata/fastdfs/storage下保存一张图片。

      然后我们再进入到storage容器中。并且进入到 /var/fdfs目录下,可以看到我们挂载的文件了

      然后执行如下命令即可完成图片的上传操作

    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.jpg

      通过上面的提示我们看到文件上传成功了,而且返回了文件在storage中存储的信息。这时我们就可以通过这个信息来拼接访问的地址在浏览器中访问了:http://192.168.56.100:8888/group1/M00/00/00/wKg4ZGHcKLSAXibaAAezMuUrlS8235.jpg

      好了到这儿FastDFS的服务安装成功了。

     

  • 相关阅读:
    PS(Photoshop)去水印的4个方法
    【UniApp】-uni-app-CompositionAPI应用生命周期和页面生命周期
    vite基础,vite中 `@`符号是不被支持,不用@符号,直接用层级(./,../等)
    kettle基础使用教程
    js复制文本到剪切板
    剑指 Offer II 036. 后缀表达式
    C# 连接SQL Sever 数据库与数据查询实例 数据仓库
    案例分享:某汽车企业通过龙智拓展Jira功能,实现高效项目管理
    Mysql查询——根据字段值自定义排序
    vscode ros配置
  • 原文地址:https://blog.csdn.net/listeningdu/article/details/128212467