FastDFS 学习笔记

2023-11-10

一、理论基础

    FastDFS比较适合以中小文件为载体的在线服务,比如跟Nginx(Apache)配合搭建图片服务器。

    分布式文件系统FastDFS

    FastDFS是纯C语言实现,只支持Linux、FreeBSD等UNIX系统。

    FastDFS的两个核心概念分别是:Tracker(跟踪器)、Storage(存储节点)

    跟踪器Tracker主要做调度工作,相当于mvc中的controller的角色,在访问上起负载均衡的作用。跟踪器和存储节点都可以由一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务,其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

       跟踪器Tracker负责管理所有的Storagegroup,每个Storage在启动后会连接Tracker

  告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,

  建立group==>[storage server list]的映射表,Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。 

        存储节点Storage采用了分卷[Volume](或分组[group])的组织方式,存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。

   一个卷[Volume](组[group])可以由一台或多台存储服务器组成,一个组中的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。


二、安装环境

分布式片服器FastDFS

1. FastDFS

FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考了冗余份、负载均衡、线容等机制,并注重高可用、高性能等指,使用 FastDFS 很容易搭建一套高性能的文件服器集群提供文件上、下等服 

FastDFS 架构包括 Tracker server Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。

Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务 器。

Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。


 

服务端两个角色:

Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。

Storage:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有 主从的概念。

2.文件上传流

 

 

 

客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文 件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

 

组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回, 需要客户端自行保存。

虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。

数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据 文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储 服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

3. 文件下载流程

 

4. FastDFS架构

 

5  FastDFS安装

5.1 安装fastdfs依赖包

1. 解压缩libfastcommon-master.zip

2. 进入libfastcommon-master的目录中

3. 执行 ./make.sh

4. 执行 sudo ./make.sh install

 

5.2 安装fastdfs

1. 解压缩fastdfs-master.zip

2. 进入 fastdfs-master目录中

3. 执 ./make.sh

4. 执 sudo ./make.sh install

 

5.3 配置跟踪服务tracker

1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

2. 在/home/python/目录中创建目 fastdfs/tracker      

mkdir –p /home/python/fastdfs/tracker

3. 编辑/etc/fdfs/tracker.conf配置文件    sudo vim /etc/fdfs/tracker.conf

修改 base_path=/home/python/fastdfs/tracker

 

5.4 配置存储服务storage

1. sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2. 在/home/python/fastdfs/ 目录中创建目录 storage

mkdir –p /home/python/fastdfs/storage

3. 编辑/etc/fdfs/storage.conf配置文件  sudo vim /etc/fdfs/storage.conf

修改内容:

base_path=/home/python/fastdfs/storage

store_path0=/home/python/fastdfs/storage

tracker_server=自己ubuntu虚拟机的ip地址:22122

 

5.5 启动tracker 和 storage

sudo service fdfs_trackerd start

sudo service fdfs_storaged start

 

说明:如果没有服务,可以通过命令指定配置文件启动

sudo fdfs_trackerd /etc/fdfs/tracker.conf

sudo fdfs_storaged /etc/fdfs/storage.conf

 

5.6 测试是否安装成功

1. sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

2. 编辑/etc/fdfs/client.conf配置文件  sudo vim /etc/fdfs/client.conf

修改内容:

base_path=/home/python/fastdfs/tracker

tracker_server=自己ubuntu虚拟机的ip地址:22122

3. 上传文件测试:

fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件

如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功

 

5.7 安装nginxfastdfs-nginx-module

1. 解压缩 nginx-1.8.1.tar.gz

2. 解压缩 fastdfs-nginx-module-master.zip

3. 进nginx-1.8.1目录中

4. 执行

sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解后的目绝对路径/src

 

sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/python/Desktop/fastdfs-nginx-module-master/src

 

 /home/python/Desktop/fastdfs-nginx-module-master

 

sudo make

sudo make install

5. sudo cp fastdfs-nginx-module-master解压后的目录中src下mod_fastdfs.conf  /etc/fdfs/mod_fastdfs.conf

 

sudo cp /home/python/Desktop/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

6. sudo vim /etc/fdfs/mod_fastdfs.conf

修改内容:

connect_timeout=10

tracker_server=自ubuntu虚拟机ip地:22122

url_have_group_name=true

store_path0=/home/python/fastdfs/storage

7. sudo cp fastdfs-master/conf/http.conf  /etc/fdfs/http.conf

sudo cp /home/python/Desktop/fastdfs-master/fastdfs-master/conf/http.conf  /etc/fdfs/http.conf

 

8. sudo cp fastdfs-maste/conf/mime.types /etc/fdfs/mime.types

sudo cp /home/python/Desktop/fastdfs-master/fastdfs-master/conf/mime.types  /etc/fdfs/mime.types

 

9.sudo vim /usr/local/nginx/conf/nginx.conf

http部分中添加配置信息如下:

server {

            listen       8888;

            server_name  localhost;

            location ~/group[0-9]/ {

                ngx_fastdfs_module;

            }

            error_page   500 502 503 504  /50x.html;

            location = /50x.html {

            root   html;

            }

        }

10. 启动nginx

sudo /usr/local/nginx/sbin/nginx





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastDFS 学习笔记 的相关文章

随机推荐

  • 网络安全人才青黄不接、数字化转型迫在眉睫、你还在犹豫吗?

    大专能不能学网络安全呢 大专学网络安全能不能找到工作呢 大专学网络安全有竞争力吗 网络上关于质疑大专学历进入网络安全行业的声音越来越多了 居然有很多人在质疑大专学历从事网络安全没有竞争力 很多人看到某些招聘软件上起薪12K的薪资就望而却步了
  • Linux文件管理

    成功不易 加倍努力 1 文件系统目录结构 1 1文件系统的目录结构 1 2 常见的文件系统目录功能 1 3 应用程序的组成部分 1 4 Linux下的文件类型 2 文件操作命令 2 1 显示当前工作目录 2 2 绝对和相对路径 2 3 更改
  • Nano编辑器安装使用指南

    关于nano Nano编辑器是一个命令行文本编辑器 具有简单易用的界面和一些基本功能 Nano小巧友好 提供许多额外的特性 例如交互式的查找和替换 定位到指定的行列 自动缩进 特性切换 国际化支持 文件名标记完成等 Nano是为了代替闭源的
  • 《Zookeeper-分布式过程系统技术详解》第一部分基础概念笔记学习

    1 Zookeep的客户端API功能强大 其中包括 保障强一致性 有序性和持久性 实现通用的同步原语的能力 在实际分布式系统中 并发往往导致不正确的行为 ZooKeeper提供了一种简单的并发处理机制 2 ZooKeeper不适用的场景 整
  • 重新学javaweb---JSTL标签

    JSTL简介 标准标签库JSTL的全名为 Java Server Pages Standard Tag Library JSTL主要提供了5大类标签库 核心标签库 为日常任务提供通用支持 如显示和设置变量 重复使用一组项目 测试条件以及其他
  • Promise常用API介绍

    Promise中的API PromiseState 实例对象中的一个属性 Promisestate 状态 pending 未决定 resolved fullfilled 成功 rejected 失败 pending 变为resolved p
  • CSDN周赛64期题解(含部分代码)

    计算之魂 主题周赛如期回归 因为差不多每次都是新题 让人多了点期待 相信非编程题无需多言 答案都在书里 翻书翻得快 满分无障碍 当然 如果提前读过此书就更好了 比如原书中把金块切了 2 刀 问题中扩展了一下 变成切 9 刀 如果提前理解过原
  • 【推荐系统】 一、推荐系统简介

    1 推荐系统的作用和意义 在这个时代 无论信息消费者还是信息生产者都面临巨大的挑战 信息消费者 在大量信息中找到自己感兴趣的信息很困难 信息生产者 将自己生产的信息让广大消费者关注很困难 推荐系统将用户与信息联系起来 1 1 用户角度 推荐
  • Mysql语句执行顺序

    1 SQL书写顺序 select distinct 显示字段 from 表名 join 要连接的表名 on 连接查询条件 where 约束条件 group by 分组字段 having 分组过滤条件 order By DESC 降序 或AS
  • NSLog效率低下的原因以及NSLog宏定义

    我是前言 打Log是我们debug时最简单朴素的方法 NSLog 对于objc开发就像 printf 对于c一样重要 但在使用 NSLog 打印大量Log 尤其是在游戏开发时 如每一帧都打印数据 NSLog 会明显的拖慢程序的运行速度 游戏
  • java实现敏感词过滤算法DFA并忽略敏感词中的特殊字符

    参考文章 https blog csdn net chenssy article details 26961957 补充说明 1 具体的DFA介绍参考原文章 此处只是补充了文章中没有介绍的点以及根据实际需求进行了改造 2 最大 小匹配规则
  • Flask学习笔记_BBS论坛搭建(三)

    Flask学习笔记 BBS论坛搭建 三 1 cms管理 1 1 项目模块划分 目录结构搭建 1 2 每个模块注册蓝图 并绑定 1 3 数据库配置 连接 迁移控制 这里本来用了flask script 但migrate的新版不支持他了 所以就
  • CSDN竞赛第41期题解

    CSDN竞赛第41期题解 非编程题部分 第一题 算盘是一种古代中国发明的计算机 原因在于人们在操作算盘时可以充分利用人脑的计算能力 错的 第二题 以下选项中 哪一项不属于计算机的本质特征 C 受电力驱动 电力不是本质特征 第三题 布莱兹 帕
  • ElasticSearch学习:文档的基本操作

    上一个我们基本是围绕索引操作 里面的指定类型 或者文档里面的一些属性 这里是主要关注文档操作 毕竟主要常见的操作就是围绕文档内容来进行的 毕竟主要是做搜索 首先先导入一些数据进去 一 简单的查询操作 put testdoc user 1 n
  • 机器学习 -Statsmodels

    机器学习记录 Statsmodels 用于探索数据 估计模型 并运行统计检验 conda install y statsmodels 线性回归 import numpy as np import pandas as pd import ma
  • Linux·网络编程套接字(三)

    目录 简单的TCP英译汉服务器 简单回顾 更改handler方法 地址转换函数 字符串IP转整数IP 整数IP转字符串IP 绑定失败问题 TCP协议通讯流程 通讯流程总览 三次握手的过程 数据传输的过程 编辑 四次挥手的过程 TCP和UDP
  • 人不成熟的五大特征-读后感

    原文地址 人不成熟的五大特征 百度经验 1 立即要回报 1 所有简单的快的 别人也能做 这并不能使你超过别人 2 做出别人做不出来的复杂成果 需要较长的时间和持续的学习 得到就得付出 时间 资源 金钱 3 尽量宏观 全局 眼光放长远 考虑全
  • 11系统越狱无法连接服务器,Electra发布iOS 11.2-11.3.1“不完美”越狱工具(附教程)...

    7月8日消息 据相关媒体报道 iOS越狱团队Electra日前发布了适用于所有iPhone iPod touch iPad用户的iOS 11 2 11 3 1 不完美 越狱工具 不过 由于此次越狱依旧是 不完美 状态 因此设备关机或重启后启
  • 通过Vitis Ai 3.0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解!

    通过Vitis Ai 3 0平台量化yolov5模型并部署到ZCU102板卡上相关问题求解 这些天再通过Vitis Ai 3 0平台来量化yolov5模型的并且部署到zcu102板子上的时候一直遇到检测结果比较离谱的问题 因此想要发个贴请教
  • FastDFS 学习笔记

    一 理论基础 FastDFS比较适合以中小文件为载体的在线服务 比如跟Nginx Apache 配合搭建图片服务器 分布式文件系统FastDFS FastDFS是纯C语言实现 只支持Linux FreeBSD等UNIX系统 FastDFS的