总结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 

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

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

相关文章

Leetcode打卡:骑士在棋盘上的概率

执行结果:通过 题目:骑士在棋盘上的概率 在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0) ,右下单元格是 (n - …

Oceanbase离线集群部署

准备工作 两台服务器 服务器的配置参照官网要求来 服务器名配置服务器IPoceanbase116g8h192.168.10.239oceanbase216g8h192.168.10.239 这里选oceanbase1作为 obd机器 oceanbase安装包 选择社区版本的时候自己系统的安装包 ntp时间同步rpm包 联网机器下载所需的软件包 …

漫画之家Spring Boot:漫画资源的跨设备访问

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

重生之我在21世纪学C++—循环语句

一、while 循环 1、while 语法形式 while ( 表达式 ) { 语句 } while默认只能跟一条语句,如果有多条语句,需要用{ }将语句括起来。 2、执行流程 首先上来先执行判断表达式,如果表达式的值为 0 ,就不进入循环;如…

微信小程序购物车全选反选功能以及合计

微信小程序基于Vant Weapp的购物车功能实现 1、单选 使用微信小程序原生表单组件checkbox和checkbox-group 注意&#xff1a;checkbox原生不支持bind:change事件&#xff0c;checkbox-group支持 <checkbox-group bindchange"handleCheck"><checkbox val…

DAY35|动态规划Part03|LeetCode:01背包问题 二维、01背包问题 一维、416. 分割等和子集

目录 01背包理论基础&#xff08;一&#xff09; 基本思路 C代码 01背包理论基础&#xff08;二&#xff09; 基本思路 C代码 LeetCode:416. 分割等和子集 基本思路 C代码 01背包理论基础&#xff08;一&#xff09; 题目链接&#xff1a;卡码网46. 携带研究材料 文字…

elasticsearch-如何给文档新增/更新的字段

文章目录 前言elasticsearch-如何给文档新增/更新的字段1. 如何给某些文档新增/更新的字段2. 给所有文档添加/更新一个新的字段3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且…

World Labs发布最新3D世界生成模型 | 李飞飞引领AI创新

随着人工智能技术的飞速发展&#xff0c;3D生成模型作为一个新兴领域&#xff0c;正逐步改变我们与虚拟世界的互动方式。2023年12月3日&#xff0c;李飞飞教授领导的AI初创公司World Labs发布了他们的最新成果——一款能够将单张图片转化为完整3D世界的生成模型。这个模型不仅突…

分布式cap

P&#xff08;分区安全&#xff09;都能保证&#xff0c;就是在C&#xff08;强一致&#xff09;和A&#xff08;性能&#xff09;之间做取舍。 &#xff08;即立马做主从同步&#xff0c;还是先返回写入结果等会再做主从同步。类似的还有&#xff0c;缓存和db之间的同步。&am…

cocos creator接入字节跳动抖音小游戏JSAPI敏感词检测(进行文字输入,但输入敏感词后没有替换为*号)

今天更新了某个抖音小游戏的版本&#xff0c;增加了部分剧情&#xff0c;半天过后一条短信审核未通过&#xff0c;emmm…抖音总是能给开发者惊喜…打开电脑看看这次又整什么幺蛾子… 首先是一脸懵逼&#xff0c;后端早已接入了官方的内容安全检测能力了&#xff08;https://de…

软件无线电安全之GNU Radio基础(下)

往期回顾 软件无线电安全之GUN Radio基础(上) 背景 在上一小节中&#xff0c;我们简单介绍和使用了GNU Radio软件的基础功能和模块&#xff0c;同时通过GNU Radio Companion&#xff08;GRC&#xff09;创建了简单的流程图&#xff0c;展示了信号生成、处理和输出的流程。最后…

Gitee配置SSH公钥

采用SSH协议同步Git仓库代码的好处就是高效。在配置好SSH公钥后&#xff0c;不需要每次操作都要输入用户名和密码&#xff08;主要针对命令行来说&#xff09;。 以我个人项目为例。 生成 SSH 公钥 1. 通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现&#xff1a; 2023 年开年&#xff0c;ChatGPT 作为一款聊天型AI工具&#xff0c;成为了超越疫情的热门词条&#xff1b;而在AI的另一个分支——绘图领域&#xff0c;一款名为Midjourney&#xff08;MJ&#xff…

算法-字符串-5.最长回文子串

一、题目&#xff1a; 二、思路解析 1.思路&#xff1a; 最长子串——动态数组 2.常用方法&#xff1a; a.字符串的截断 ress.substring(start,end1); 3.核心逻辑&#xff1a; 1.特殊情况&#xff1a;字符串为空或字符串的长度为0 if(snull||s.length())return ""…

高中数学:计数原理-二项式定理

文章目录 一、二项式定理与通项公式二、二项式系数的性质 一、二项式定理与通项公式 我们先来看完全平方公式 二、二项式系数的性质

刷题计划day26 回溯(五)回溯止【N 皇后】【解数独】

⚡刷题计划day26 回溯&#xff08;五&#xff09;继续&#xff0c;回溯最后一个专题&#xff0c;今天的是hard题&#xff0c;也是比较经典的题型&#xff0c;可以点个免费的赞哦~ 往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录…

UE5基本数据类型

bool: 表示布尔值&#xff0c;只有两个取值&#xff1a;true 或 false&#xff0c;用于表示逻辑条件。int8: 表示 8 位的有符号整数&#xff0c;范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数&#xff0c;范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…

linux的vdagent框架设计

1、vdagent Linux 的 spice 客户代理由两部分组成&#xff0c;一个系统范围的守护进程 spice-vdagentd 和一个 X11 会话代理 spice-vdagent&#xff0c;每个 X11 会话有一个。spice-vdagentd 通过 Sys-V initscript 或 systemd 单元启动。 如下图&#xff1a;spice-vdagent&a…

docker修改并迁移存储至数据盘

文章目录 前言一、操作步骤&#xff08;需要root权限&#xff09;1. 查看磁盘占用&#xff0c;查看当前docker目录占用的空间2. 查看正在运行的容器&#xff0c;并停止容器及服务3. 拷贝数据、修改配置&#xff08;关键步骤&#xff09;4. 加载配置&#xff0c;启动服务及容器 …

证明网络中的流形成一个凸集

证明网络中的流形成一个凸集 步骤1&#xff1a;定义和符号步骤2&#xff1a;线性组合步骤3&#xff1a;验证容量限制步骤4&#xff1a;验证流量守恒结论示例代码&#xff08;C语言&#xff09; 在网络流理论中&#xff0c;一个流 f f f 是定义在网络图的边集上的一种函数&…