我是靠谱客的博主 勤恳大地,最近开发中收集的这篇文章主要介绍fastDFS轻量级分布式文件系统1. fastDFS2. fastDFS主要功能3. fastDFS中的角色4. fastDFS的优点5. fastDFS读写数据的流程6. fastDFS的单机版的安装7. 使用fastDFS命令操作fastDFS8. fastDFS集群的搭建9. fastDFS的api操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 1. fastDFS
  • 2. fastDFS主要功能
  • 3. fastDFS中的角色
    • 3.1 tracker server 追踪服务器
    • 3.2 storage server 储存服务器
    • 3.3 Group组
    • 3.4 meta data
  • 4. fastDFS的优点
  • 5. fastDFS读写数据的流程
    • 5.1 fastDFS写入数据
    • 5.2 fastDFS读数据
  • 6. fastDFS的单机版的安装
    • 6.1 准备安装文件
    • 6.2 安装依赖
      • 6.2.1 安装GCC依赖
      • 6.2.2 安装unzip工具
      • 6.2.3 安装libevent
      • 6.2.4 安装Nginx所需依赖
      • 6.2.5 安装libfastcommon-master
    • 6.3 安装单机版fastDFS
      • 6.3.1 编译安装fastDFS
      • 6.3.2 配置tracker
      • 6.3.3 配置storage
    • 6.4 nginx的FastDFS模块安装
      • 6.4.1 FastDFS的Nginx模块
      • 6.4.2 安装Nginx
  • 7. 使用fastDFS命令操作fastDFS
  • 8. fastDFS集群的搭建
  • 9. fastDFS的api操作

1. fastDFS

fastDFS 是以C语言开发的一项开源轻量级分布式文件系统,一般作为资源服务器来使用


2. fastDFS主要功能

  • 文件存储
  • 文件同步
  • 文件的访问(文件上传|文件下载)
  • 特别适合以文件为载体的在线服务(图片网站,视频网站,购物网站)

3. fastDFS中的角色

3.1 tracker server 追踪服务器

  • 追踪服务器负责接收客户端的请求
  • 主要做调度工作, 起负载均衡的作用
  • Tracker需要管理的信息也都放在内存中,并且里面所有的Tracker都是对等的(每个节点地位相等),很容易扩展
  • 客户端访问集群的时候会随机分配一个Tracker来和客户端交互
  • storage server会向tracker server发送心跳,保持连接

3.2 storage server 储存服务器

文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。

3.3 Group组

  • 组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。
  • 同一个组内的机器的数据自行同步

3.4 meta data

meta data:文件相关属性,键值对( Key Value Pair) 方式,如:width=1024,heigth=768 。

4. fastDFS的优点

  • 海量的存储:主从型分布式存储,存储空间方便拓展,
  • fastDFS对文件名做hash处理,避免出现重复文件
  • 然后fastDFS结合Nginx集成, 提高网站效率
  • 特别适合以中小文件( 建议范围: 4KB 到 500MB ) 为载体的在线服务, 如相册网站、 视频网站等等。

5. fastDFS读写数据的流程

5.1 fastDFS写入数据

写操作的时候,storage会将他所挂载的所有数据存储目录的底下都创建2级子目录,每一级256个总共65536个,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据作为本地文件存储到该目录中

5.2 fastDFS读数据

当客户端向Tracker发起下载请求时,并不会直接下载,而是先查询storage server(检测同步状态),返回storage server的ip和端口,
然后客户端会带着文件信息(组名,路径,文件名),去访问相关的storage,然后下载文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9UBzYnH-1628510437879)(assets/14027542-9b9dcd61bd1a9a57.png)]

6. fastDFS的单机版的安装

6.1 准备安装文件

FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-master.zip
nginx-1.10.0.tar.gz

6.2 安装依赖

6.2.1 安装GCC依赖

GCC用来对C语言代码进行编译运行,使用yum命令安装:

 yum -y install gcc

6.2.2 安装unzip工具

unzip工具用来对.zip文件进行解压的工具

 yum install -y unzip zip

6.2.3 安装libevent

yum -y install libevent

6.2.4 安装Nginx所需依赖

yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

6.2.5 安装libfastcommon-master

  • 解压刚刚上传的libfastcommon-master.zip

    unzip libfastcommon-master.zip
    
  • 进入解压完成的目录:

    cd libfastcommon-master
    
  • 编译并且安装:

    ./make.sh
    ./make.sh install
    

到这里为止,所有依赖都已经安装完毕(/usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so ),接下来我们安装FastDFS:

6.3 安装单机版fastDFS

6.3.1 编译安装fastDFS

  • 解压

    tar -zxvf FastDFS_v5.08.tar.gz
    -C /opt/
    
  • 进入目录

    cd FastDFS
    
  • 编译并安装

    ./make.sh
    ./make.sh install
    
  • 安装完成,我们应该能在/etc/init.d/目录,通过命令ll /etc/init.d/ | grep fdfs看到FastDFS提供的启动脚本:

    fdfs_trackerd #tracker启动脚本
    fdfs_storaged #storage启动脚本
    
  • 我们可以在 /etc/fdfs目录,通过命令查看到以下配置文件模板

    • tarcker.conf.sample 是tracker的配置文件模板
    • storage.conf.sample 是storage的配置文件模板
    • client.conf.sample 是客户端的配置文件模板

6.3.2 配置tracker

  • 编辑tracker配置

首先我们将模板文件进行赋值和重命名:

cp tracker.conf.sample tracker.conf
vim tracker.conf

打开tracker.conf,修改base_path配置:

#bind_addr= 不配置则代表监听所有地址
bind_addr=
base_path=/var/fdfs/tracker # tracker的数据和日志存放目录
  • 创建目录

    刚刚配置的目录可能不存在,我们创建出来

    mkdir -p
    /var/fdfs/tracker
    
  • 启动tracker

    我们可以使用 sh /etc/init.d/fdfs_trackerd 启动,不过安装过程中,fdfs已经被设置为系统服务,我们可以采用熟悉的服务启动方式:

    service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop
    systemctl start fdfs_trackerd #centeros7的启动方式
    

6.3.3 配置storage

  • 编辑storage配置

    首先我们将模板文件进行赋值和重命名:

    cp storage.conf.sample storage.conf
    vim storage.conf
    

    打开storage.conf,修改base_path配置:

    base_path=/var/fdfs/storage # storage的数据和日志存放目录
    store_path0=/var/fdfs/storage_data # storage的上传文件存放路径
    tracker_server=10.10.10.11:22122 # tracker的地址
    
  • 创建目录

    刚刚配置的目录可能不存在,我们创建出来,没有目录则会启动失败

    mkdir -p /var/fdfs/storage
    mkdir -p /var/fdfs/storage_data
    
  • 启动storage

    我们可以使用 sh /etc/init.d/fdfs_storaged 启动,同样我们可以用服务启动方式:

    service fdfs_storaged start
    # 启动fdfs_storaged服务,停止用stop
    

    最后,通过netstat -nltp|grep fdfs 查看进程:

    tcp
    0
    0 0.0.0.0:22122
    0.0.0.0:*
    LISTEN
    2192/fdfs_trackerd
    tcp
    0
    0 0.0.0.0:23000
    0.0.0.0:*
    LISTEN
    2215/fdfs_storaged
    

6.4 nginx的FastDFS模块安装

6.4.1 FastDFS的Nginx模块

  • 解压

    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
    
  • 配置config文件(nginx安装fastdfs-nginx-module模块时要使用到fdfs中的库)

    # 进入配置目录
    cd /soft/fastdfs-nginx-module/src/
    # 修改配置
    vim config
    # 执行下面命令(将配置中的/usr/local改为/usr):
    :%s+/usr/local/+/usr/+g
    
  • 配置mod_fastdfs.conf

    # 编辑该文件
    vim /etc/fdfs/mod_fastdfs.cof
    connect_timeout=10
    # 客户端访问文件连接超时时长(单位:秒)
    tracker_server=192.168.56.101:22122
    # tracker服务IP和端口
    url_have_group_name=true
    # 访问链接前缀加上组名
    store_path0=/var/fdfs/storage_data
    # 文件存储路径
    
  • 将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录

    cp mod_fastdfs.conf
    /etc/fdfs/
    
  • 复制 FastDFS的部分配置文件模板到/etc/fdfs目录

    cd /opt/fdfs/conf
    cp http.conf mime.types /etc/fdfs/
    

6.4.2 安装Nginx

  • 解压

    tar -zxvf nginx-1.10.0.tar.gz
    
  • 配置

    ./configure --prefix=/opt/nginx
    --add-module=/soft/fastdfs-nginx-module/src
    
  • 编译安装

    make &&
    make install
    
  • 配置nginx整合fastdfs-module模块

    需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:

    vim
    /opt/nginx/conf/nginx.conf
    

    添加一个server的代理:

    server {
    listen
    80;
    server_name
    image.leyou.com;
    # 监听域名中带有group的,交给FastDFS模块处理
    location ~/group([0-9])/ {
    ngx_fastdfs_module;
    }
    }
    
  • 启动

    nginx # 启动
    nginx -s stop # 停止
    nginx -s reload # 重新加载配置
    

7. 使用fastDFS命令操作fastDFS

  • 配置/etc/fdfs/client.conf

    #客户端的临时数据存储目录
    base_path=/var/fdfs/client
    #tracker的服务地址
    tracker_server=tracker的Ip:22122
    
  • 使用命令

    #上传文件
    fdfs_upload_file
    /etc/fdfs/client.conf
    xxx文件
    eg:
    fdfs_upload_file /etc/fdfs/client.conf
    /soft/nginx-1.10.0.tar.gz
    返回: group1/M00/00/00/CgoKC14KxIOAK7WrAA3emu5kyOM.tar.gz
    group1:组信息
    M00:对应store_path0
    /00/00:磁盘路径
    group1/M00/00/00/CgoKFWEPit6Af4KgAA3emu5kyOM.tar.gz
    #下载文件
    fdfs_download_file /etc/fdfs/client.conf
    

8. fastDFS集群的搭建

  • 把单机版安装的fastdfs拷贝到其他机器即可
  • 如果有多个组只需要修改对应的storage的goupname即可
  • 其他机器也要安装nginx及其nginx的fastdfs模块(老版本的FastDFS提供了http服务,但是新版本中已经不再提供服务,需要我们自己通过nginx和其nginx的fastdfs的模块来提供http服务)
  • storage和tracker上的nginx提供http服务的端口要保持一致

9. fastDFS的api操作

  • 以SpringBoot操作为例

    <!--因为fast作者提供的fastdfs的api并不是太友好,所以我们使用goyhub其他作者开源的实现-->
    <dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
    <version>1.26.5</version>
    </dependency>
    
  • 启动类使用Import注解导入FastDfs的配置类

    @Import(FdfsClientConfig.class)
    public class LyItemApplication {
    public static void main(String[] args) {
    SpringApplication.run(LyItemApplication.class, args);
    }
    }
    
  • 配置文件配置fastdfs的配置

    fdfs:
    tracker-list:
    - 10.10.10.11:22122
    
  • 使用fastdfs的api上传文件

    @SpringBootTest()
    @RunWith(SpringRunner.class)
    public class MyTest {
    @Autowired
    private FastFileStorageClient storageClient;
    @Test
    public void test01() throws FileNotFoundException {
    File file = new File("/f:/1.png");
    FileInputStream fis = new FileInputStream(file);
    StorePath storePath = storageClient.uploadFile(fis, file.length(), FilenameUtils.getExtension(file.getName()), null);
    System.out.println(storePath.getFullPath());
    }
    }
    

最后

以上就是勤恳大地为你收集整理的fastDFS轻量级分布式文件系统1. fastDFS2. fastDFS主要功能3. fastDFS中的角色4. fastDFS的优点5. fastDFS读写数据的流程6. fastDFS的单机版的安装7. 使用fastDFS命令操作fastDFS8. fastDFS集群的搭建9. fastDFS的api操作的全部内容,希望文章能够帮你解决fastDFS轻量级分布式文件系统1. fastDFS2. fastDFS主要功能3. fastDFS中的角色4. fastDFS的优点5. fastDFS读写数据的流程6. fastDFS的单机版的安装7. 使用fastDFS命令操作fastDFS8. fastDFS集群的搭建9. fastDFS的api操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部