FastDFS【FastDFS环境搭建_Linux、FastDFS指令、复习】(二)-全面详解(学习总结---从入门到深化)

news2024/11/28 4:43:36

 

目录

FastDFS环境搭建_Linux

FastDFS指令

复习:


FastDFS环境搭建_Linux

下载安装gcc

安装方式为yum安装(需网络):

yum install gcc-c++ perl-devel pcre-devel
openssl-devel zlib-devel wget

下载安装FastDFS

wget
https://github.com/happyfish100/fastdfs/archi
ve/V6.06.tar.gz

下载安装FastDFS依赖

wgethttps://github.com/happyfish100/libfastco
mmon/archive/V1.0.43.tar.gz

解压缩依赖tar包

tar -zxvf V1.0.43.tar.gz -C /usr/local
tar -zxvf V5.11.tar.gz -C /usr/local

编译并安装libfastcommon

cd /usr/local/libfastcommon-1.0.43/
 ./make.sh && ./make.sh install

编译并安装FastDFS

cd /usr/local/fastdfs-6.06
./make.sh && ./make.sh install

进入etc目录下复制配置文件

cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

创建tracker服务

创建tracker目录

mkdir -p /data/fastdfs/tracker

 修改配置文件

vim /etc/fdfs/tracker.conf
disabled=false                 #启用配置文件
port=22122                     #设置 tracker的端口号
base_path=/data/fastdfs/tracker #设置 tracker的数据文件和日志目录(需预先创建)
http.server_port=8888           #设置 http 端口号
http.server_port=8888           #指的是在tracker服务器上启动http服务进程,如:apache或者nginx 启动时所监听的端口

启动tracker服务

/etc/init.d/fdfs_trackerd start

检查tracker服务

netstat -lntup |grep fdfs
tcp       0     0 0.0.0.0:22122          
0.0.0.0:*               LISTEN     
10757/fdfs_trackerd

创建storage服务

创建storage目录

mkdir -p /data/fastdfs/base
mkdir -p /data/fastdfs/storage

修改配置文件

vim /etc/fdfs/storage.conf

disabled=false                       #启用配置文件
group_name=group1                     #组名,根据实际情况修改
port=23000                           #设置storage 的端口号
base_path=/data/fastdfs/base         #设置storage 的日志目录(需预先创建)
store_path_count=1                   #存储路径个数,需要和 store_path 个数匹配
store_path0=/data/fastdfs/storage       #存储路径
tracker_server=172.31.16.121:22122     #tracker 服务器的 IP 地址和端口号
http.server_port=8888                 #设置storage上启动的http服务的端口号,如安装的nginx的端口号

启动storage服务

/etc/init.d/fdfs_storaged start

查看storage服务

netstat -lntup |grep fdfs

tcp       0     0 0.0.0.0:23000          0.0.0.0:*               LISTEN     
10892/fdfs_storaged
tcp       0     0 0.0.0.0:22122          0.0.0.0:*               LISTEN     
10757/fdfs_trackerd

修改Client配置文件

vim /etc/fdfs/client.conf

connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client      # 日志路径
tracker_server=192.168.66.100:22122    # 追踪服务器的IP,有多个服务器可以另一行

创建日志目录

mkdir -p /data/fastdfs/client

查看启动的服务

ps -ef | grep fdfs

FastDFS指令

 上传指令

指令参数

fdfs_upload_file <config_file>
<local_filename> [storage_ip:port]
[store_path_index]

参数含义:

1 :配置文件路径

2 :本地文件路径

3 [storage_ip:port] :(可选参数)

4 [store_path_index] :(可选参数)

指令使用 

[root@tracker fdfs]# fdfs_upload_file
/etc/fdfs/client.conf 上传的文件路径

注意: 上传文件后会返回文件在FastDFS中的唯一文件标识,即卷名 +文件名 

下载指令 

指令参数

fdfs_download_file <config_file> <file_id>
[local_filename] [<download_offset>
<download_bytes>]

参数含义:

1 :配置文件路径

2 :文件在FastDFS中的唯一文件标识,即卷名+文件名

3 [local_filename] :文件下载地址

4 :(可选参数)文件下载开始时间

5 :(可选参数)文件下载的字节数

指令使用 

[root@tracker fdfs]# fdfs_download_file
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm /root/java/xxx.rpm

查看文件信息指令

指令参数

fdfs_file_info <config_file> <file_id>

参数含义:

1 :配置文件路径

2 :文件在FastDFS中的唯一文件标识,即卷名+文件名

 指令使用

[root@tracker fdfs]# fdfs_file_info
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm

删除指令

指令参数

fdfs_delete_file <config_file> <file_id>
参数含义:
1 <config_file> :配置文件路径
2 <file_id> :文件在FastDFS中的唯一文件标识,即卷名+文件名

指令使用

[root@tracker fdfs]# fdfs_delete_file
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm

注意: 删除指令使用后,文件在该卷中的所有备份都会被删除,因为卷内的存储节点会相互同步,故慎用。

实时学习反馈

1.FastDFS分布式文件系统中如何上传文件___。

A fdfs_delete_file

B fdfs_info_file

C fdfs_upload_file

D fdfs_download_file

2. FastDFS分布式文件系统中如何下载文件____。

A fdfs_delete_file

B fdfs_info_file

C fdfs_upload_file

D fdfs_download_file

复习:

为什么要使用分布式文件系统


单机时代

初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在 项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如 果按不同类型再细分,可以在项目目录下再建立不同的子目录来区 分。例如: resources\static\file 、 resources\static\img 等。 

注意:

优点:便利,使用方便。

缺点:文件越多存放越混乱。 

独立文件服务器 

随着公司业务不断发展,将代码和文件放在同一服务器的弊端就会 越来越明显。为了解决上面的问题引入独立图片服务器,

流程:

项目上传文件时,首先通过ftp或者ssh将文件上传到图片服务器 的某个目录下,再通过Ngnix或者Apache来访问此目录下的文件,返回一个独立域名的图片URL地址,前端使用文件时就通过 这个URL地址读取。 

分布式文件系统 

业务继续发展,单台服务器存储和响应也很快到达了瓶颈,新的业务需要文件访问具有高响应性、高可用性来支持系统。

优点:

扩展能力: 毫无疑问,扩展能力是一个分布式文件系统最重要的特点;
高可用性: 在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据 的完整和一致性;
弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要 中断系统运行。
缺点:

系统复杂度稍高,需要更多服务器 

实时学习反馈

1.下列属于独立文件服务器缺点是___。

A 容灾

B 单点故障问题

C 垂直扩展性稍差

D 以上都是

2. 下列属于分布式文件系统缺点的是____。

A 扩展能力强

B 高可用性

C 弹性存储

D 系统复杂度稍高 

FastDFS概述_简介


FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等 等。 

FastDFS特性:

文件不分块存储,上传的文件和OS文件系统中的文件一一对应
支持相同内容的文件只保存一份,节约磁盘空间
下载文件支持HTTP协议,可以使用内置Web Server,也可以和其他Web Server配合使用
支持在线扩容
支持主从文件 
分布式文件服务提供商

1、阿里的OSS

2、七牛云存储

3、百度云储存 

实时学习反馈

1.FastDFS是一个开源的轻量级____。

A Web平台

B 文件系统

C 分布式文件系统

D 代码托管平台

2. FastDFS分布式文件系统特别适合存储____文件。

A 小文件

B 大文件

C 中小型

D 以上都是错误

FastDFS概述_核心概念 


 FastDFS服务端有三个角色:跟踪服务器(tracker)、存储服务器 (storage)和客户端(client)。

 tracker

跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录 集群中所有存储组和存储服务器的状态信息,是客户端和数据服务 器交互的枢纽。

 storage

存储服务器(又称:存储节点或数据服务器),文件和文件属性 (meta data)都保存到存储服务器上。Storage server直接利用 OS的文件系统调用管理文件。

 client

客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议 与跟踪器服务器或存储节点进行数据交互。FastDFS向使用者提供 基本文件访问接口,比如upload、download、append、delete 等,以客户端库的方式提供给用户使用。

 group

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

流程: Tracker相当于FastDFS的大脑,不论是上传还是下载都是通过 tracker来分配资源;客户端一般可以使用Ngnix等静态服务器 来调用或者做一部分的缓存;存储服务器内部分为卷(或者叫 做组),卷于卷之间是平行的关系,可以根据资源的使用情况 随时增加,卷内服务器文件相互同步备份,以达到容灾的目 的。 

实时学习反馈

1.FastDFS的大脑是___。

A Tracker

B storage

C group

D client 

FastDFS概述_上传机制 


首先客户端请求Tracker服务获取到存储服务器的ip地址和端口,然 后客户端根据返回的IP地址和端口号请求上传文件,存储服务器接收到请求后生产文件,并且将文件内容写入磁盘并返回给客户端 file_id、路径信息、文件名等信息,客户端保存相关信息上传完 毕。 

内部机制如下

1、选择Tracker server

当集群中不止一个Tracker server时,由于Tracker之间是完全对等 的关系,客户端在upload文件时可以任意选择一个trakcer。

2、选择Storage server

当选定Group后,Tracker会在Group内选择一个Storage Server给 客户端

3、选择Storage path

当分配好Storage Server后,客户端将向Storage发送写文件请求, Storage将会为文件分配一个数据存储目录。 

注意: 剩余存储空间最多的优先。

4、生成Fileid 

选定存储目录之后,Storage会为文件生一个Fileid,由Storage Server Ip、文件创建时间、文件大小、文件crc32和一个随机数拼接 而成,然后将这个二进制串进行base64编码,转换为可打印的字符 串。

 5、生成文件名

当文件存储到某个子目录后,即认为该文件存储成功,接下来会为 该文件生成一个文件名,文件名由group、存储目录、两级子目 录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型) 拼接而成。

实时学习反馈

1.FastDFS上传文件成功后返回文件名由上面组成的___。

A 存储目录、两级子目录、fileid、文件后缀名

B group、两级子目录、fileid、文件后缀名

C group、存储目录、两级子目录、fileid、文件后缀名

D group、存储目录、fileid、文件后缀名 

 FastDFS概述_下载机制


 客户端带上文件名信息请求Tracker服务获取到存储服务器的ip地址 和端口,然后客户端根据返回的IP地址和端口号请求下载文件,存储服务器接收到请求后返回文件给客户端。

 内部机制如下

1 client询问tracker下载文件的storage,参数为文件标识(组名和文件名)

2 tracker返回一台可用的storage

3 client直接和storage通讯完成文件下载

 实时学习反馈

1.FastDFS分布式文件系统在下载文件的时候客户端带文件名请求 ___。

A Tracker

B Stroage

C Group

D 以上都是错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode42. 接雨水(单调栈-java)

接雨水 leetcode42. 接雨水题目描述单调栈解题代码演示 单调栈专题 leetcode42. 接雨水 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图…

一章让你明白什么是权限

目录 &#x1f30f;什么是Linux 权限&#xff1f; &#x1f30f;文件&#xff1a; &#x1f30f;目录&#xff1a; &#x1f30f;查看文件的权限 &#x1f30f;权限针对的三类用户&#xff1a; &#x1f30f;ls -l 命令显示的意义 &#x1f30f;修改文件的属性和权限 …

uni-app获取系统信息(手机牌子、手机型号、屏幕宽度、屏幕高度)

uni.getSystemInfo({success(res) {console.log(res.brand) //手机牌子console.log(res.model) //手机型号console.log(res.screenWidth) //屏幕宽度console.log(res.screenHeight) //屏幕高度}) .exec()}}); 如下 官网链接&#xff1a;系统信息的概念 | uni-app官网

基于Java学生作业管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

机器学习面试题 - 模型评估1

目录标题 1、准确率的局限性广告投放问题&#xff1a; 2、精确率与召回率的权衡2.1 案例2.2 P-R曲线 3、平方根误差4、ROC曲线5、如何绘制ROC6、如何计算AUC7、ROC曲线相比P-R曲线有什么特点&#xff1f; 模型评估主要分为离线评估和在线评估两个阶段。 针对分类、排序、回归、…

uni_app 微信小程序 苹果手机 边框显示不全

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a4c4ab1a146444c84c72d360a057c01.png 解决方案&#xff1a; 原因&#xff1a;是因为我们在设置边框的时候设置的rpx &#xff0c;自适应会自动换算px, 两者之间的比例一般都是1.5-2之间&#xff0c;对于边框 border 来说…

指定专业和城市|超声科医生赴美国佐治亚理工学院自费访学

从事超声医学的Y医生拟自费赴美国访学&#xff0c;希望在亚特兰大附近&#xff0c;且专业相符。最终我们落实了佐治亚理工学院的职位&#xff0c;专业及地理位置都符合申请人的预期目标。 Y医生背景&#xff1a; 申请类型&#xff1a;自费访学 工作背景&#xff1a;三甲医院医…

QT 实现windows系统文件拖拽

效果预览&#xff1a; 2023-07-05 14-29-11 功能描述&#xff1a; 1.首先实现了根据文件的路径获取了文件的信息&#xff0c;通过 QFileIconProvider 获取图标信息&#xff0c;并在界面上进行展示。 2.dropEvent 是实现拖拽功能的核心。重新此事件函数&#xff0c;并将窗口设…

vue实现动态URL

最近在项目上要用到动态baseURL,用的是vuex存储&#xff0c;具体实现如下 1.拦截器中重写baseURL 但是需要注意的是这个url必须符合URL格式&#xff0c;所以前端校验是必须的 2.前端校验 const validateUrl (rule, value, callback) > {if (isBlank(value)) {callback(ne…

【技巧】快速提取PowerPoint文件的图片

如果你看到PPT里的图片或背景素材比较好看&#xff0c;想要保存下来&#xff0c;你会怎么做呢&#xff1f; 可能很多人首先想到的就是选择图片后另存下来&#xff0c;或者使用截图保存&#xff0c;这也是一种方法&#xff0c;但如果图片很多的话&#xff0c;就十分繁琐和费时间…

MySQL用户与权限管理

用户与权限管理 1. 用户管理1.1 创建用户1.2 修改用户1.3 删除用户1.4 用户密码相关1.4.1 密码修改1.4.2 密码管理机制 2. 权限管理2.1 授予权限原则2.2 查看权限2.3 授予权限2.4 收回权限 3. 权限表4. 访问控制 1. 用户管理 MySQL用户分为root用户和普通用户&#xff1b;root…

大模型时代的模型运维与部署:LLMops

文章目录 1 LLMOps介绍1.1 关联定义1.2 LLMOps 与 MLOps 2 LLMOps实现步骤2.1 数据管理2.1.1 数据清洗和预处理技术2.1.2 数据标记和注释2.1.3 数据存储、组织和版本控制2.1.4 数据合规性检验 2.2 基础模型的选择2.3 迭代和提示管理2.4 测试评估2.5 部署2.6 监控 3 参考文献 1 …

万物的算法日记|算法学习 [java 二分法 acwing789.数的范围]

算法语言&#xff1a;java 题目来源&#xff1a;acwing.789 文章目录 题目描述题解五点七边的二分法第一个细节 l&#xff0c;r 边界问题为什么 l 边界初始化为 -1&#xff1f;同理为什么 r 边界初始化为 N而不是N-1 ?第二个细节 m是否始终处于[0,N)以内第三个细节&#xff0c…

【UnityDOTS 四】System的理解

System的理解 前言 System主要用于在ECS中进行逻辑处理。它具有自己的声明周期&#xff0c;主要分为两类&#xff1a;ISystem,SystemBase。前一个是非托管内存访问&#xff0c;后一个是托管内存访问。 一、Systemg认知 System在主线程运行&#xff0c;可以在代码中使用Job系…

基于php电影动漫在线观看系统 (源码➕数据库)

本系统主要是为用户提供一个动漫视频观看的平台&#xff0c;系统分为两个角色&#xff0c;一个是用户角色&#xff0c;另一个是管理员角色&#xff0c;其中用户角色可查看动漫视频的分类&#xff0c;查看动漫视频的详情&#xff0c;点击播放动漫视频&#xff0c;对动漫视频进行…

如何使用 OpenCV 去除图像背景

文末附源代码的免费下载链接 在本教程中,我们将学习如何使用 OpenCV 使用一种名为背景减法的技术来去除视频中的背景。 背景扣除是计算机视觉中用于检测视频中移动物体的常用技术。对于安全、监视、交通监控等来说,这是一种非常有用的技术。 背景减法的基本思想是通过从前景…

VirtualBox安装Ubuntu(22.04.2)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Hello mysql】 数据库基础

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;简单的介绍mysql相关的一些基础知识和在Linux环境下的安装 让大家对于mysql有一个初步的认知 数据库基础 数据库基础数据库定义数据库再理解软件角度文件角度总结 主流数据库mysql安装卸载不要的环境获取mysql官方yum源安装…

MySQL数据库引擎及账号管理

目录 前言 二、MySQL数据库引擎 1.是什么 2.MySQL的核心 3.MySQL的存储引擎 a.InnoDB(MySQL默认引擎) b.ACID事务 c.四种隔离级别 d.MyISAM e.MEMORY&#xff08;Heap&#xff09; 4.存储引擎查看 三、命令行操作数据库 四、账号管理 前言 MySQL安装请看MySQL的安装…

输入框input事件compositionstart和compositionend的妙用

现象&#xff1a; 在将输入输入法切换到中文的时候&#xff0c;在打拼音的过程中也会触发oninput事件&#xff0c;如下&#xff1a; const Demo()>{const [value,setValue]useState("");return (<><input onInput{(e)>{console.log("value&…