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

总结FastDFS的面试题

目录

一:FastDFS的基础知识

1:定义

2:FastDFS的优点

3:tracker server

4:storage server

二:FastDFS的存储原理

1:小文件存储的问题

2:小文件合并存储

3:文件上传原理

三:FastDFS存储的同步方式

2:binlog

3:同步规则

4:一个图展示上传和同步的过程

 5:下载过程直接使用之前的一张图即可


FastDFS的简单使用_fastdfs文件添加时间-CSDN博客

 C/C++精品项目之图床共享云存储(5):FastDFS存储原理,文件的秒传-CSDN博客

 分布式FastDFS存储的同步方式_fastfds 两个storage 数据同步 配置-CSDN博客

一:FastDFS的基础知识

1:定义

FastDFS是一个开源的轻量级的分布式文件管理系统,简单来说就是存放文件的。因为是分布式,所以我们可以把文件放到多个系统中去,并且我们只需要一个系统即可控制多个系统的操作。并且还提供了高可用和负载均衡。

2:FastDFS的优点

fastdfs是一个分布式文件管理系统,其中包括文件存储,文件同步,文件上传和下载。解决了大容量存储和负载均衡,很适合相册网站,并且充分考虑到了冗余备份,负载均衡,先行扩容等机制。注重高可用高性能。

3:tracker server

他是一个协调者,她负责管理storage server 和 group ,每当storage连接上来,他会告知tracker它的所有信息包括所属的group,然后保持心跳连接。在tracker中是不存储任何数据的,因此扩展十分容易,直接添加即可。

4:storage server

存放数据的主要地方。其中一个group中含有多个storage ,在一个group中的所有的storage都是互为备份,也就是说group中storage中的数量是副本数量。并且含有多个group,因此可以做负载均衡操作。缺点是group的容量受单机存储容量的限制,一个group中的存储大小以最小的storage为准。

我们看这个图,我们先根据所在的group进行区别,M00是group中一个storage多个磁盘中的一个,然后为了单个目录下的文件数量过多,因此会在这里创建二级目录,每级256个。然后文件会被hash到其中的目录中去。

二级目录的好处就是我们查找文件速度会快。

二:FastDFS的存储原理

1:小文件存储的问题

我们在linux中存储文件分为数据部分和inode节点部分。我们每存储一个文件就会存储一个inode节点部分。一个节点大小为128或256,并且我们会磁盘中每隔1k或2k就设置一个节点。当我们一个文件不满1k或2k,那也算1k或2k。导致磁盘的利用率很低。

2:小文件合并存储

我们fastdfs有一个配置文件,可以配置小文件的和并存储。我们先开辟一个大内存,这一个大内存有一个节点,当我们要存储的文件大小小于16MB的时候,我们就将这个文件存放到这个大文件中然后再给他分配一个节点。这样就可以提高磁盘利用率了。当我们存储一个正常大小的文件,会返回这个文件对应的fileid,但是存储小文件的时候,我们返回的是这个truck文件的fileid,而不是这个文件的具体id。

3:文件上传原理

我们客户端要上传一个文件,会给tracker发送信息,表示要上传,因为tracker是完全对等的,因此会随机选择一个(冗余的方式,保证高可用)。选择好之后。tracker会选择一个可以存放文件的group(轮询,指定,选择最大存储空间),然后再选择一个storage(轮询,ip,优先级),然后再选择这个storage中的磁盘(轮询,最大存储),然后为这个文件生成一个fileid(包括时间,大小,ip等),再通过这个fileid进行两次hash,存放到这个两级目录中去。当存放到具体目录中去之后,会为这个文件生成一个文件名:group/M00/00/00+文件名(时间,大小,ip等)。然后进行返回。

 如果一个磁盘中含有100万个文件,那么这个二级目录中,一个目录含有15.7个文件,容易查找。

三:FastDFS存储的同步方式

1:我们有连接到tracker server 的线程,是为了获取同一个group组中的其他storage的所有信息。并且一个storage含有指向其他storage的线程。这个线程是用来主动推送我们传入的文件的。

2:binlog

我们上传文件只能上传到一个storage中去,当我们上传成功后,我们会将具体的操作写入binlog,其中包括时间,操作类型,文件fileid。然后其他线程会监听binlog,然后主动推送给其他storage。

3:同步规则

我们只在同一个group中进行同步,同步的时候,我们只推送源文件操作,避免循环推送。当有新的storage添加,由一个机器,将全部数据都推送给它。

4:一个图展示上传和同步的过程

 5:下载过程直接使用之前的一张图即可

0voice · GitHub 

相关文章:

总结FastDFS的面试题

目录 一:FastDFS的基础知识 1:定义 2:FastDFS的优点 3:tracker server 4:storage server 二:FastDFS的存储原理 1:小文件存储的问题 2:小文件合并存储 3:文件上…...

Fiddler 5.21.0 使用指南:过滤浏览器HTTP(S)流量下(四)

概述 在上一篇文章中,我们介绍了一部分简单的过滤功能,已经可以帮助我们较为准确的定位到感兴趣的请求;提升我们的工作效率,我们可以通过设置更为复杂的过滤规则,精准到定位的我们想要的请求和响应信息。专注于分析对…...

【踩坑】pip安装依赖卡在Installing build dependencies ...

pip安装依赖卡在Installing build dependencies ... 如图,pip安装依赖一直卡着,最后不得不ctrlC强制终止 用–verbose显示详细安装信息,发现卡在安装numpy pip install -r requirements.txt --verbose大概率是网络问题,用镜像单…...

【WRF-Urban】SLUCM新增空间分布城市冠层参数及人为热排放AHF代码详解(下)

目录 详细解释更改文件内容4 运行模块(run):README.namelist5 输出模块(share):share/module_check_a_mundo.Fshare/output_wrf.F参考SLUCM新增空间分布城市冠层参数及人为热排放AHF代码详解的前两部分内容可参见-【WRF-Urban】SLUCM新增空间分布城市冠层参数及人为热排放A…...

云桌面:云计算桌面

目录 云桌面的定义和核心概念 技术架构详解 主流架构详解 管理成本分析 安全性措施 应用场景详解 云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务,它允许用户通过网络访问远程服务器上的虚拟机,这些虚拟机为用户提供了一个…...

WPF+LibVLC开发播放器-音量控制和倍速控制

界面 界面上增加音量的控件和倍速控制控件 音量控制 主要也是一个Slider进度条控件来实现音量调节 我们这里设置默认的最大值为100,默认Value值也为100,默认声音开到最大 这里目前完全由前端控制音量调节,可以直接使用ValueChanged事件实…...

数智运营一体化平台项目经营分享

分离前后台,增强产品管理灵活性 前端成熟的流程平台,支持低代码快速灵活配置流程表单,完美解决流程频繁变化与快速上线、费用控制的矛盾。使产品管理体系,摆脱了流程可移植性差和投入大量人力物力无止境修改流程的困境。同时&…...

记录blender学习过程中遇到的问题

物体发射的方向不对 被发射物体(例如一棵树)n键看旋转归0 切换正视图 将被发射物体的局部坐标的Z轴 指向 全局方向的X轴时 并且把粒子系统设置的物体旋转勾选上 方向就对了 做倒角发现有问题 检查缩放应用、面朝向、有没有重合点(融合点&am…...

(八)腾讯cloudstudio+Stable-Diffusion-webui AI绘画教程-安装插件

一、说明 本文安装8个插件,先安装,后面在慢慢学习,我也是第一次喔 二、中英文双语语言包 (二)Ubuntu22.04Stable-Diffusion-webui AI绘画 中英双语插件安装-CSDN博客https://blog.csdn.net/jiangkp/article/details…...

记一次跑前端老项目的问题

记一次跑前端老项目的问题 一、前言二、过程1、下载依赖2、启动项目3、打包 一、前言 在一次跑前端老项目的时候,遇到了一些坑,这里记录一下。 二、过程 1、下载依赖 使用 npm install下载很久,然后给我报了个错 core-js2.6.12: core-js…...

深度学习:MindSpore自动并行

随着模型规模的逐渐增大,需要的算力逐渐增强,但是算力需求增长速度远高于芯片算力增长速度。现在唯一的解决方案只有通过超大规模集群训练大模型。 大集群训练大模型的挑战 内存墙 200B参数量的模型,参数内存占用745GB内存,训练…...

python拆分Excel文件

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下: 结果:红色是按照Sheet名拆出的,蓝色和橙色是某个Sheet按照某列的不同值拆分的。 代码: # -*- coding: utf-8 -*- """ 拆分excel文件——按照…...

Python实现Excel中数据条显示

Python中要实现百分比数据条的显示,可以使用pandas库,pandas图表样式的设置与Excel中的条件格式设置比较类似,比如Excel里常用的数据条的用法,在pandas中使用代码进行高亮显示,用来突出重点数据,下面一起来…...

c#如何开发后端

1选择开发框架 在 C# 中,用于后端开发最常用的框架是ASP.NET。它提供了构建 Web 应用程序、Web API 和微服务等多种后端服务所需的功能。ASP.NET有不同的模式,如ASP.NET MVC(Model - View - Controller)和ASP.NET Web API。ASP.NE…...

6.Vue------async/await详细的讲解---知识积累

前提: 先说一下Promise解释 Promise是一种在JavaScript中处理异步操作的对象。它代表了一个尚未完成但承诺未来某个时间会完成的操作结果。Promise有三种状态:pending(等待中)、fulfilled(已成功)和reject…...

Redis面试专题-持久化

目录 前言 持久化相关知识 1.三种持久化机制 2.RDB持久化 3.深入剖析一下RDB持久化过程 4.AOF持久化 5.RDB和AOF对比​编辑 面试题 1.redis持久化机制有哪些? 2.那仔细讲讲你对他们的理解 3.你刚刚说AOF的文件很大,那AOF文件会越来越大&#xf…...

如何将快捷指令添加到启动台

如何将快捷指令添加到启动台/Finder/访达(Mac) 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…...

ansible自动化运维(二)ad-hoc模式

目录 Ansible模块(ad-hoc模式) 1.command模块:远程执行命令 2.shell 模块:远程执行命令,支持管道,重定向 3.Raw模块:先登录,再执行,最后退出 4.Script模块&#xff…...

技术栈6:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 9.Docker创建Nginx实战 10.数据卷 11.本地目录直接挂载* 12.镜像和dockerfile 13.容器互联与自定义网络 14.…...

OPStack Optimism Layer2

概述 OP Stack 是标准化、共享和开源的开发堆栈,为 Optimism 提供支持,由 Optimism Collective 维护。 Optimism Bedrock 是 OP Stack的当前版本。 Bedrock 版本提供了用于启动生产质量的 Optimistic Rollup 区块链的工具。此时,OP Stack不同层的 API 仍然与Stack的 Rollu…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

npm install 相关命令

npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖&#xff08;默认&…...

TI德州仪器TPS3103K33DBVR低功耗电压监控器IC电源管理芯片详细解析

1. 基本介绍 TPS3103K33DBVR 是 德州仪器&#xff08;Texas Instruments, TI&#xff09; 推出的一款 低功耗电压监控器&#xff08;Supervisor IC&#xff09;&#xff0c;属于 电源管理芯片&#xff08;PMIC&#xff09; 类别&#xff0c;主要用于 系统复位和电压监测。 2. …...

鸿蒙APP测试实战:从HDC命令到专项测试

普通APP的测试与鸿蒙APP的测试有一些共同的特征&#xff0c;但是也有一些区别&#xff0c;其中共同特征是&#xff0c;它们都可以通过cmd的命令提示符工具来进行app的性能测试。 其中区别主要是&#xff0c;对于稳定性测试的命令的区别&#xff0c;性能指标获取方式的命令的区…...

NamedParameterJdbcTemplate 使用方法及介绍

NamedParameterJdbcTemplate是 Spring 框架中用于数据库操作的核心类之一&#xff0c;它拓展了JdbcTemplate&#xff0c;通过封装实现命名参数特性&#xff0c;相比传统占位符?&#xff0c;命名参数可读性和维护性更强&#xff0c;能有效避免参数顺序混淆问题。 一、核心支持…...