Java常见面试题-13-FastDFS

文章目录

  • FastDFS 是什么?
  • FastDFS 组成
  • FastDFS 的流程
  • FastDFS 如何现在组内的多个 storage server 的数据同步?

FastDFS 是什么?

FastDFS 是一个开源的轻量级分布式文件系统,它可以对文件进行管理,功能包括: 文件存储文件同步文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、 视频网站等等。

FastDFS 组成

  1. Storage server(存储服务器)
    Storage server 一般都是以组(group)为组织单位,一个组中有多个 Storageserver, 数据互为备份(意味着每个 Storageserver 的内容是一致的,他们之间没有主从之分),组的存储空间以组内最小的 Storage server 为准,所以为了避免浪费存储空间最好的话每个 Storage server 的配置最好相同
  2. Tracker server(调度服务器、追踪服务器)
    Tracker server 主要负责管理所有的 Storage servergroup,每个 storage 在启动后会连接 Tracker,告知自己所属的 group 等信息,并保持周期性的心跳,tracker 根据 storage 的心跳信息,建立 group==>[storage server list]的映射表。

FastDFS 的流程

在这里插入图片描述

  1. 选择 tracker server
    当集群中不止一个 tracker server 时,由于 tracker 之间是完全对等的关系,客户端在 upload 文件时可以任意选择一个 trakcer。
  2. 选择存储的 group
    当 tracker 接收到 upload file 的请求时,会为该文件分配一个可以存储该文件的 group,支持如下选择 group 的规则:
    • Round robin,所有的 group 间轮询。
    • Specified group,指定某一个确定的 group。
    • Load balance,剩余存储空间多的 group 优先。
    • 选择 storage server。
  3. 选择 storage server
    当选定 group 后,tracker 会在 group 内选择一个 storage server 给客户端,支持如下选择 storage 的规则:
    • Round robin,在 group 内的所有 storage 间轮询。
    • First server ordered by ip,按 ip 排序。
    • 3.First server ordered by priority,按优先级排序(优先级在storage 上配置)。
  4. 选择 storage path
    当分配好 storage server 后,客户端将向 storage 发送写文件请求, storage 将会为文件分配一个数据存储目录,支持如下规则:
    • Round robin,多个存储目录间轮询。
    • 剩余存储空间最多的优先。
  5. 生成 Fileid
    选定存储目录之后,storage 会为文件生一个 Fileid,由 storage server ip、文件创建时间、文件大小、文件 crc32 和一个随机数拼接而成,然后将这个二进制串进行 base64 编码,转换为可打印的字符串。
  6. 选择两级目录
    当选定存储目录之后,storage 会为文件分配一个 fileid,每个存储目录下有两级256*256 的子目录,storage 会按文件 fileid 进行两次 hash (猜测),路由到其中一个子目录,然后将文件以 fileid 为文件名存储到该子目录下。
  7. 生成文件名
    当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由 group、存储目录、两级子目录、fileid、 文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

FastDFS 如何现在组内的多个 storage server 的数据同步?

  • 当客户端完成文件写至 group 内一个 storage server 之后即认为文件上传成功。
  • storage server 上传完文件之后,会由后台线程将文件同步至同 group 内其他的storage server。后台线程同步参考的依据是每个 storageserver 在写完文件后,同时会写一份 binlog。
  • binlog 中只包含文件名等元信息,storage 会记录向 group 内其他storage 同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有 server 的时钟保持同步。

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。

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

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

相关文章

创意指南丨VR游览沉浸式空间体验

欢迎来到我们制作的VR幻想世界。玩家的起点是一条蓝色水晶大道,让我们一起探索这个如梦似幻的境地。 在这条大道的两侧,漂浮着半透明的大水晶水母。它们轻盈地在空中飘动,仿佛在欢迎我们的到来。这条道路上方,一个个半圆环不停地…

【数据结构】Map与Set

前言 前两篇文章我们研究了二叉搜索树与哈希表的结构与特点,他们二者是Map与Set这两个接口实现的底层结构,他们利用了搜索树与哈希表查找效率高这一特点,是一种专门用来进行搜索操作的容器或数据结构。本篇文章就让我们一起来梳理这两个接口的…

基于Hadoop的国内手机销售大数据分析与可视化研究【百万数据集】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍 绪论研究背景研究目的研究意义 相关技术理论介绍Hadoop相关理论HIve数据仓库flume组件介绍sqoop组件介绍Pyecharts介绍 数据来源及处理数据介绍数据预处理 Hadoop集群搭建Hadoop全…

开源wiki知识库工具zyplayer-doc

zyplayer-doc是一款适合团队和个人私有化部署使用的在线知识库、笔记、WIKI文档管理工具。它不仅提供了知识库管理的基本功能,还包含了数据库管理、API接口管理等模块,能够满足用户多样化的需求。 体验地址:文档管理系统 仓库地址&#xff…

Together规则引擎 金融解决方案

目录 1.金融法规和期望正在发生变化,快速跟踪您的金融数字化变革!2.抵押贷款功能集(MFS)3.MFS 示例模型4.MFS 知识特点5.MFS特定功能 1.金融法规和期望正在发生变化,快速跟踪您的金融数字化变革! ogether规则引擎使金融机构能够简…

NAT、服务代理、内网穿透

文章目录 NAT技术NAT IP转换过程NATPNAT的优点NAT的缺点 代理服务器正向代理反向代理 内网穿透和内网打洞内网穿透内网穿透 NAT技术 NAT技术即网络地址转换技术。用于将私有IP地址转换为公共IP地址,以便在互联网或其他外部网络中通信。为了解决IPv4协议下IP地址不足…

[matlab] 鲸鱼优化算法优化KNN分类器的特征选择

目录 引言 智能优化算法概述 智能优化算法在KNN特征选择中的应用 应用步骤 UCI数据集 鲸鱼优化算法 一、算法背景与原理 二、算法组成与步骤 三、算法特点与优势 四、应用与挑战 代码实现 鲸鱼优化算法 主程序 打印结果 引言 智能优化算法在优化KNN(…

最大耗散功率

注:本文内容来自ChatGPT 最大耗散功率(Maximum Power Dissipation)是指芯片或电子元件在指定的工作条件下,能够安全散发的最大热功率,通常以瓦特(W)为单位表示。这是一个关键的设计参数&#x…

什么是Stable Diffusion?如何安装Stable Diffusion?

前言 Stable Diffusion秋叶整合包,一键安装Stable Diffusion,门槛极低,完全免费,支持Nvidia全系列显卡。 来自B站up主秋葉aaaki近期推出的Stable Diffusion整合包v4.6版本,能够让零基础用户轻松在本地部署Stable Diff…

Scanner类、String类和StringBuffer类的相关使用

一、Scanner: 主要用于键盘录入的 构造方法: Scanner(InputStream source) 构造一个新的 Scanner ,产生从指定输入流扫描的值。 1、next()和nextLine()区别: String line sc.next(); // 不会接收特殊字符,比如空格回…

Python中的 `continue` 语句:掌握循环控制的艺术

Python中的 continue 语句:掌握循环控制的艺术 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通…

服务器数据恢复—Raid故障导致存储中数据库数据丢失的数据恢复案例

服务器存储数据恢复环境&故障情况: 一台光纤存储中有一组由16块硬盘组成的raid。 该存储出现故障导致数据丢失。RAID中2块盘掉线,还有1块盘smart状态为“警告”。 服务器存储数据恢复过程: 1、通过该存储自带的存储管理软件将当前存储的完…

企业常用的文件加密软件排行榜,10款顶级文件加密软件推荐

在数字化时代,企业数据的安全性和保密性显得尤为重要。为了确保敏感文件不被未授权访问或泄露,企业纷纷采用文件加密软件来加强数据保护。以下是2024年企业常用的10款顶级文件加密软件推荐,它们各具特色,能够满足不同企业的需求。…

【第十届泰迪杯数据挖掘挑战赛A题害虫识别】-农田害虫检测识别-高精度完整更新

农田害虫检测识别项目-高精度完整版 一、说明: 该版本为基于泰迪杯完整害虫数据重新制作数据集、优化增强数据集、重新进行模型训练,达到高精度、高召回率的最优模型代码。包含论文、最优模型文件以及相关文件、原始数据集、训练数据集XML版、增强扩充…

【数据结构】哈希应用-海量数据处理

目录 1、10亿个整数里面求最大的100个 2、求大文件交集 3、查找出现次数前210的ip地址 1、10亿个整数里面求最大的100个 经典的tok问题,可以使用堆来解决 2、求大文件交集 给两个文件,分别有100亿个query,我们只有1G内存,如…

如何用 CocosCreator 对接抖音小游戏的侧边栏复访

前言 最近小游戏的软著下来了,用 CocosCreator 做的游戏也完成了 1.0 版本。而当我打包成抖音小游戏进行提交时,还没到初审就给拒了,因为还有一个机审,机器检测到代码中没有接入 “侧边栏复访功能”。这个我还真不知道&#xff0…

不要问人工智能能为你做什么,而要问你能用人工智能实现什么?

​新前沿 欢迎来到雲闪世界。在过去的一年半里,我一直在向我认识的每个人讲述人工智能的潜力,尤其是大型语言模型 (LLM)。无论技术背景如何,现在是时候让每个人学习 LLM 的基础知识以及如何有效地使用它们了。 20 世纪 60 年代,我…

美国服务器稳定么?影响服务器稳定性的6个因素

美国服务器稳定么?美国服务器的稳定性是相当不错的,这主要得益于其先进的技术、成熟的基础设施以及严格的管理措施。美国拥有众多知名的服务器提供商,这些提供商通常会采用顶级的硬件设施,如英特尔、AMD等知名品牌的处理器&#x…

以树莓集团的视角:探索AI技术如何重塑数字媒体产业发展

在科技日新月异的今天,AI技术如同一股不可阻挡的潮流,正深刻改变着我们的世界,尤其是数字媒体产业发展。作为数字产业生态链的杰出建设者,树莓集团始终站在时代前沿,积极探索AI技术如何为数字媒体产业注入新活力。 在树…

NFTScan 正式上线 Gravity NFTScan 浏览器和 NFT API 数据服务

2024 年 8 月 9 号,NFTScan 团队正式对外发布了 Gravity NFTScan 浏览器,将为 Gravity 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商,Gravity 是继 Bitcoin、Ethereum、BNBC…