当前位置: 首页 > 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…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...