目录
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 以上都是错误