FastDFS文件管理系统:分布式文件系统、网络文件系统、多机器多文件分享存储空间
FastDFS了解:
博客:https://www.cnblogs.com/Leo_wl/p/6731647.html#_label9
简介:功能:上传(存储)、下载(访问)、存储系统同步
解决问题:大容量、负载均衡
适合场景:CMS图片库
特点:客户端控制访问权限
决定因素:数据存储方式、数据读取速率、数据安全机制
系统架构:
跟踪服务器:项目经理、管理(调度存储服务器)者的角色、管理元信息少(内存存储、storage汇报信息)、单位cluster(cluster每个tracker对等)------>元信息
存储服务器:程序员、最底层劳动者、容量和备份数据、单位group(每个storage对等、互为副本)、group(项目组 优点:应用数据隔离、负载均衡、副本数定制 缺点:数据恢复只能依赖group里的其他副本慢!、单机容量小)
客户端client:客户、安装有Nginx的本地服务器
FastDFS存储策略:
卷即group、单位group(storage service的集合)、独立
整个系统文件容量 = 所有group容量++
整个存储空间不足-->动态添加group-->多台storage配置为一个group,增加容量
group里面的storage server不足时:增加程序员、并告诉他当前项目的进度(同步),程序员开始工作(上线)
FastDFS的流程:
Tracker Server Cluster中的每个Tracker是对等的:每个项目经理对等、都可以接收不同客户的需求
上传流程:Tracker接收客户端上传文件的请求、分配group-->分配storage server
客户端向storage发送些文件的请求,storage server 分配存储目录-->分配一块领域-->分配存储文件的名称
文件格式:组名/磁盘/目录/文件名
文件同步:说白了就是多线程copy binlog(元信息日志) 类似于redis持久化同步操作
同步进度以时间戳记录、保证集群内所有server时钟一致
下载流程:客户端请求任意traker、tracker server存储元信息,可以根据文件名解析出group、大小、创建时间,选择一个storage来服务读请求
FastDFS方案:轻量级
部署复杂程度:simple
配置要求:common
文件系统接口:可移植
客户端:需要配套
目录结构:不能指定
产品级别:大中型
成熟:比较成熟
开发语言:C
移行成本:较高!!!
其他特点:不会对文件进行分块处理、mongodb GridFS就是一种分片处理的方式
服务器端的安装:
SpringBoot和FastDFS的整合:
https://blog.csdn.net/kokjuis/article/details/76614923
https://blog.csdn.net/qq741437836/article/details/74311802
步骤:
centeros的安装:
https://www.cnblogs.com/sunshinekevin/p/8085554.html
测试成功:
安装tracker服务器、client、storage service:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/panda/Desktop/panda.jpg
返回结果:group1/M00/00/00/rBA3iVrbJUOAdEUSAAHOxFEuSI0192.jpg 存储成功过了
安装nginx:
下载:fastdfs-nginx-module模块
fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
tracker_server=172.16.55.137:22122
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
traker server
client server
storage server
成功实例:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/panda/Desktop/panda.jpg 返回:group1/M00/00/00/rBA3iVrbPZeAee3eAAHOxFEuSI0557.jpg
nginx安装fastDFS模块 最终结果:成功访问 http://172.16.55.137:8888/group1/M00/00/00/rBA3iVrbPZeAee3eAAHOxFEuSI0557.jpg
全部启动命令:
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
/etc/init.d/nginx