当前位置: 首页 > news >正文

【分布式文件系统】FastDFS

1.简介 

 讲这个之前,相信很多人特别是学java的,肯定在做苍穹外卖的时候肯定接触过一个东西,叫做阿里云OSS,他们的功能都差不多,但是阿里云的这个是要付费的,而FastDFS是免费开源的,是由淘宝资深架构师余庆开发,专为高并发,大文件存储场景设计,尤其适用于海量小文件存储(如图片,视频,日志等)。它具有轻量级,高可扩展,高可用等特点,广泛适用于电商,社交,音视频等领域。

2.组成

 2.1 Tracker Server(跟踪服务器)

作为分布式系统的“调度中心”,起负载均衡的作用,在内存中记录集群中所有存储组合存储服务器的状态信息,是客户端和存储服务器交互的枢纽,不记录文件索引信息,占用的内存量很少

负责管理集群中的Storage Server和group,每个storage在启动后会连接tracker,告知自己所属的group等信息,并保持周期性心跳。

tracker根据storage的心跳信息,建立group==>[storage server list]的映射表

2.2 Storage Server(存储服务器)

主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

2.3 Client(客户端)

作为业务请求发起方,与tracker server或者storage server进行数据交互

3.文件上传

客户端向Tracker服务器发起文件上传请求,Tracker服务器接收到请求后,会基于预设的负载均衡策略(如轮询、分组内随机或存储空间优先等),为待上传文件分配一个可用的存储分组(Group)及该分组内的一个Storage节点。

随后,Tracker服务器将目标Storage节点的连接信息返回给客户端,包含节点IP地址、服务端口号以及所属分组名等关键参数。客户端依据这些信息,直接与目标Storage节点建立连接并发起文件数据传输请求。

Storage节点接收文件数据后,会执行以下操作:

   1.生成文件标识**:按照固定规则生成唯一的文件标识(File ID),其结构为 `group_name/M00/00/00/[文件哈希值]`。其中,`M00` 是默认的存储路径前缀;`00/00` 为两级目录,由文件哈希值的前两位自动生成,通过这种路径散列方式有效分散磁盘存储压力,避免单目录下文件数量过于集中。

   2. 磁盘写入:将文件数据按指定路径写入本地磁盘。

   3. 数据冗余同步:为保障数据可靠性,Storage节点会根据集群配置的副本策略(默认同步1份副本),将新写入的文件同步至同分组内的其他Storage节点,通过增量同步或全量同步机制确保同组节点间数据一致。

待文件存储及同步完成后,Storage节点向客户端返回上传结果,包含文件路径(File Path)**和自定义元数据。其中,文件路径遵循 `group1/M00/00/00/[文件名]` 的格式,与文件标识形成映射关系,便于后续下载或管理操作;元数据为客户端上传时附带的业务属性信息(如用户ID、文件类型等键值对),可用于业务场景下的文件分类与检索。

4.文件下载 

storage会定时向tracker发送心跳,让tracker确认storage还活着

客户端向tracker发送下载请求,tracker查找存储storage的地址后返回给客户端

客户端拿到Storage地址后,去Storage上找到文件

Storage把文件返回给客户端

相关文章:

  • 基于非线性规划的电动汽车充电站最优布局
  • YOLOv11改进 | Conv/卷积篇 | 2024 ECCV最新大感受野的小波卷积WTConv助力YOLOv11有效涨点
  • Python 和 matplotlib 保存图像时,确保图像的分辨率和像素符合特定要求(如 64x64),批量保存 不溢出内存
  • 国产化Word处理控件Spire.Doc教程:使用 Python 创建 Word 文档的详细指南
  • maven添加自己下载的jar包到本地仓库
  • 「金融证券行业」 如何搭建自己的研发智能管理体系?
  • 【人工智能】低代码-模版引擎
  • 二十三、面向对象底层逻辑-BeanDefinitionParser接口设计哲学
  • 现代生活下的创新健康养生之道
  • Idea 配合 devtools 依赖 实现热部署
  • VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编
  • Idea如果有参数,怎么debug
  • facebook开源Triton编写GPU内核的编程模型速读:KernelLLM
  • spring.factories详解
  • AI是否会取代人类?浔川问答①
  • docker安装es连接kibana并安装分词器
  • PTA刷题笔记3(微难,有详解)
  • 【瑞数3代】药监评审中心逆向分析 | 后缀MmEwMD参数
  • JDBC-java操作数据库
  • AT24C02(I2C总线)
  • 武汉专业建站网/微软bing搜索引擎
  • 织梦手机网站怎么仿制/2021小学生新闻摘抄
  • 汽车行业网站建设/百度搜索网
  • 嘉兴做网站优化公司/免费seo推广公司
  • 网站建设的新闻/郑州百度推广公司地址
  • 襄阳市建设公司网站/seo营销推广公司