FastDFS 一文读懂

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastDFS 一文读懂相关的知识,希望对你有一定的参考价值。

目录

FastDFS 介绍

FastDFS 概念

FastDFS 作用

FastDFS 优缺点 

FastDFS 相关概念

FastDFS 原理

FastDFS系统拓扑图

FastDFS核心工作流程

FastDFS 文件上传

FastDFS 文件下载

 Linux 环境搭建FastDFS

Docker 环境搭建FastDFS

SpringBoot 封装FastDFS 功能模块


FastDFS 介绍

FastDFS 概念

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和**负载均衡**的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

​ FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、在线扩容等机制,并注重高可用高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS 作用

适合用来存储用户图片、视频、文档等文件。​ 出于简洁考虑,FastDFS没有对文件做分块存储,因此不太适合分布式计算场景

FastDFS 优缺点 

优点:

  1. 适合中小文件存储(建议范围:4KB<file_size<500MB
  2. 主备Tracker服务,增强系统的可用性
  3. 系统不需要支持POSIX,这样的话就降低了系统的复杂度,使得处理的速度会更高
  4. 支持主从文件,支持自定义扩展名
  5. 支持在线扩容机制,增强了系统的可扩展性
  6. 实现了软RAID,增强了系统的并发处理能力和数据容错恢复能力

缺点:

  1. 直接按文件存储,可直接读取文件内容,缺乏文件安全性
  2. 通过API下载,存在单点的性能瓶颈
  3. 不支持断点续传,对大文件将是噩梦
  4. 同步机制不支持文件正确性校验,降低了系统的可用性
  5. 不支持POSIX通用接口访问,通用性比较的低
  6. 对跨公网的文件同步,存在着比较大的延迟,需要应用做相应的容错策略

FastDFS 相关概念

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

tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。

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

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

FastDFS 原理

FastDFS系统拓扑图

  • FastDFS分为Tracker、Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度。

  • Tracker、Storage都可以实现集群部署,Tracker的每个节点地位平等,而Storage可以分为多个组,每个组之间保存的文件是不同的,组内部分为多个成员,每个成员保存的内容是一样,组成员地位一致,没有主从概念。

  • 使用FastDFS存储文件优点:可以应对互联网的海量文件存储,一旦文件较多,可以随时横向扩展,且集群的实现也使系统不存在单点故障问题,用户不会因为服务器宕机而无法访问文件资源。

FastDFS核心工作流程

FastDFS 文件上传

1. client询问tracker上传到的storage,不需要附加参数;

2. tracker返回一台可用的storage;

3. client直接和storage通讯完成文件上传。

FastDFS 文件下载

 

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

  2. Tracker返回一台可用的storage;

  3. Client直接和storage通讯完成文件下载。

 Linux 环境搭建FastDFS

请参考:Centos 搭建FastDFS 分布式文件服务器搭建

               FastDFS storage服务器安装Nginx

Docker 环境搭建FastDFS

请参考: Docker 搭建FastDFS文件系统

SpringBoot 封装FastDFS 功能模块

请参考:Springboot 封装Fastdfs 功能模块

以上是关于FastDFS 一文读懂的主要内容,如果未能解决你的问题,请参考以下文章

一文读懂响应式编程到底是什么?(附赠国外优质Java学习视频)

一文读懂Android View事件分发机制

一文读懂Android View事件分发机制

一文读懂MapR Apache Hadoop的MapR发行版白皮书

什么是spark?通俗易懂,一文读懂

一文读懂AOE到底是什么!