• 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
    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 功能模块

  • 相关阅读:
    2022年6月电子学会Python等级考试试卷(五级)答案解析
    大数据——Hadoop3.1.3安装与配置
    MybatisPlus 1 MybatisPlus 入门案例与简介 1.1 入门案例
    JUC强大的辅助类
    Python for循环
    你真的会写简历吗?软件测试简历修改包装...
    LLM - 大语言模型(LLM) 的 评估体系
    【数据分析】:数据分析三大思路及方法
    scala解析命令行参数详解
    程序地址空间
  • 原文地址:https://blog.csdn.net/zhouzhiwengang/article/details/126139990