【分布式文件系统】FastDFS

news2025/5/24 14:35:27

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把文件返回给客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2384665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

word为章节标题添加自动编号

问题: 如何为word文档中的多级标题添加自动编号? 方法: 1、首先为文档各级标题设置格式样式,一级标题使用样式中的“标题 1”,二级标题使用“标题 2”,三级使用“标题 3”,也就是直接在开始—…

无人机飞行间隔安全智能评估、安全风险评估

无人机空中安全飞行评估需结合改进碰撞模型、蒙特卡洛仿真、安全间隔反推及动态避障策略,通过多机型分类与实时数据融合,实现从理论建模到实际部署的全流程管控,为城市低空密集飞行提供安全保障。 需求 无人机飞行间隔安全智能评估 无人机…

【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答

栏目内容论文标题End-to-End Navigation with Vision-Language Models: Transforming Spatial Reasoning into Question-Answering (端到端导航与视觉语言模型:将空间推理转化为问答)核心问题如何利用大型视觉语言模型(VLM)实现端到端的机器人…

PCB设计实践(二十五)贴片电阻与插件电阻的全面解析:差异、演进与应用场景

一、基础结构与技术原理差异 物理结构差异 贴片电阻(SMD Resistor)采用表面贴装技术(SMT),其主体为扁平长方体或圆柱形结构,两端金属化电极直接与PCB焊盘接触。典型封装尺寸包括0402(1.00.5mm&a…

Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)

一、前序 近两年AI发展太过迅速,各类AI产品层出不穷,AI绘图/AI工作流/AI视频等平台的蓬勃发展,促使图片/视频等复杂内容的创作更加简单,让更多普通人有了图片和视频创作的机会。另一方面用户内容消费也逐渐向图片和视频倾斜。在“…

利用Qt绘图随机生成带多种干扰信息的数字图片

背景 在学习AutoML或ML的过程中,需要一些图片类型的数据做分类预测训练,于是想到尝试最简单的数字识别,且单个数字的识别,也就是y的取值只有10种可能,即0到9。 以下参考代码分别考虑了数字字体的大小、数字颜色的深浅…

STM32——从点灯到传感器控制

STM32基础外设开发:从点灯到传感器控制 一、前言 本篇文章总结STM32F10x系列基础外设开发实例,涵盖GPIO控制、按键检测、传感器应用等。所有代码基于标准库开发,适合STM32初学者参考。 二、硬件准备 STM32F10x系列开发板LED模块有源蜂鸣器…

java day14

接昨天,响应 响应 就是我们在处理请求的时候,里面的return 其实方法里面写的return的返回平常的什么字符串啊什么等等;这些东西都是直接返回;如果是一个对象的话,我们会按json的格式返回; 这些都依赖于一…

Tailwind css实战,基于Kooboo构建AI对话框页面(一)

在当今数字化时代,AI 助手已成为网站和应用不可或缺的一部分。本文将带你一步步使用 Tailwind CSS 和 Kooboo 构建一个现代化的 AI 对话界面框。 一、选择 Kooboo平台 的核心优势 智能提示:在输入 class 属性时,会自动触发 Tailwind CSS 规则…

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 (一)数学与AI的关系:从基础理论到创新思维的回馈 (二)AI的创造力:突破传统推理的局限 (三)AI对数学研究的潜在贡献:创…

docker部署并测试翻译模型-CSANMT连续语义增强机器翻译

1.模型选择CSANMT-Translation模型: 2.修改docker-compose.yml文件,重新定义模型缓存路径和存储路径 其中MODELSCOPE_CACHE指定了模型的下载路径。 3.运行docker compose up -d --build,提示出现报错:Error response from daemon…

Spring Boot项目配置核心 - pom.xml的依赖管理与构建优化

基础架构 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVe…

告别手抖困扰:全方位健康护理指南

手抖&#xff0c;医学上称为震颤&#xff0c;是常见的身体症状&#xff0c;可能由多种原因引发&#xff0c;了解其成因并采取科学护理措施&#xff0c;对改善症状、维护健康至关重要。 生理性手抖往往因情绪激动、过度劳累、大量饮用咖啡或酒精等引起&#xff0c;这种手抖通常较…

图解深度学习 - 特征工程(DL和ML的核心差异)

前言 深度学习通过自动化特征提取&#xff0c;简化了机器学习工作流程&#xff0c;它让解决问题变得更加简单。因为深度学习将特征工程完全自动化&#xff0c;而特征工程曾经是机器学习工作流程中最关键的一步。 一、机器学习特征工程 机器学习为什么需要特征工程&#xff08…

Datacom-hcia~Datacom-hcie学习笔记索引

hcia VLAN工作原理实验案例(超详细)https://blog.csdn.net/Fanmeang/article/details/145855768?spm1001.2014.3001.5502 交换机工作原理实验案例https://blog.csdn.net/Fanmeang/article/details/145802382?spm1001.2014.3001.5502 ARP理论实验案例&#xff08;超详细&am…

受不了github的网络限制了,我开源了一个图床工具 gitee-spring-boot-starter

嗨嗨嗨~ 我老马又又来了&#xff01;&#xff01;&#xff01;上次写了一篇我开源了一款阿里云OSS的spring-boot-starter&#xff0c;然后买的资源包到期了&#xff0c;后面又想白&#xff08;开&#xff09;嫖&#xff08;源&#xff09;的路子&#xff0c;首先想到了使用gith…

2025年医美行业报告60+份汇总解读 | 附 PDF 下载

原文链接&#xff1a;https://tecdat.cn/?p42122 医美行业在消费升级与技术迭代的双重驱动下&#xff0c;已从边缘市场逐步走向主流。数据显示&#xff0c;2024 年中国医美市场规模突破 3000 亿元&#xff0c;年复合增长率达 15%&#xff0c;但行业仍面临正品率不足、区域发展…

API自动化与持续集成核心实战知识点!

想象一下&#xff0c;你开发的API像一辆跑车&#xff0c;性能强劲&#xff0c;但你如何确保它每次启动都完美无缺&#xff1f;或者你的代码像一道复杂的菜肴&#xff0c;如何保证每次更新都不破坏原有味道&#xff1f;答案就是API自动化测试与持续集成&#xff01;SuperTest让你…

基于SpringBoot+Vue的社区医院信息平台设计与实现

项目背景与概述 随着医疗健康信息化的发展&#xff0c;社区医院的管理逐渐由传统的手工模式转向信息化管理。为了提高医院的管理效率、减少人工操作、提升服务质量&#xff0c;开发一个高效且实用的社区医院信息平台显得尤为重要。本系统基于Spring Boot框架与MySQL数据库设计…

C++ 中的暴力破解算法

一、暴力破解算法原理​ 暴力破解算法&#xff0c;顾名思义&#xff0c;就是通过穷举所有可能的解&#xff0c;逐一验证&#xff0c;直到找到满足条件的解。它不依赖复杂的逻辑推导或数学优化&#xff0c;而是依靠计算机强大的计算能力&#xff0c;将所有可能的情况都尝试一遍…