Java常见面试题-13-FastDFS

news2024/9/21 14:35:36

文章目录

  • 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.coloradmin.cn/o/1994475.html

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

相关文章

Linux驱动开发—中断,中断号,中断控制器GIC,中断子系统架构详解

文章目录 1.中断的基本概念2.中断上下文中断上下文的主要特点中断上下文的限制顶半部和底半部 3.中断子系统架构中断控制器GICGIC 的层级结构 中断控制器级联基本概念级联中断控制器的工作原理 中断号概念基本概念中断号的作用中断号的分配ARM 架构和 GIC 总体架构图 4.申请一个…

荒原之梦:考研期间可以玩游戏吗?

有不少同学,特别是男同学,在考研之前,会有玩游戏的习惯,那么,对于考研的同学来说,就会产生这样一个疑问。在考研备考期间,我还可以玩游戏吗? 其实关于这个问题的答案是因人而异的&am…

C语言—报数游戏

#include<stdio.h> #include<stdlib.h> #include<time.h> int main() {char op;int n 0, m, flag 0;srand(time(NULL));int x rand() % 2;if (x 0) printf("玩家先报&#xff01;\n");else printf("电脑先报&#xff01;\n");do{if …

【原创】java+swing+mysql学生管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 这两天简单开发…

【数据结构】Map与Set

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

CTFHUB | web进阶 | PHP | Bypass disable_function | Backtrace UAF

开启题目 查看源码&#xff0c;发现可以蚁剑连接 进入之后无发现&#xff0c;使用插件 PHP7 Backtrace UAF 之后直接进入终端了 查看根目录之后发现了有两个 flag 文件&#xff0c;之后发现了本题的 flag

[SWPU2019]Web11

打开题目&#xff0c;看到登录口&#xff0c;注册账号看看 admin2&#xff0c;112 申请发布一下广告&#xff0c;sql注入试试 查看详情 看到sql&#xff0c;猜测sql注入&#xff0c;进行测试时发现空格、or、#、--、and等进行了过滤&#xff0c;目前基本可以确定注入点在这个地…

缺人!需求暴涨超300%!年薪超50万元!这一风口,带来大机遇

目前&#xff0c;秋季招聘快来了&#xff0c;随着人工智能应用的爆发&#xff0c;生成式人工智能的招聘市场也十分火爆。 在一家大型人工智能软件公司&#xff0c;团队负责人告诉记者&#xff0c;团队主要做基于大模型的办公协作类软件的开发&#xff0c;近期正在升级一款面向…

macOS Ventura 13.6.9 (22G830) Boot ISO 原版可引导镜像下载

macOS Ventura 13.6.9 (22G830) Boot ISO 原版可引导镜像下载 2024 年 8 月 8 日凌晨&#xff0c;macOS Sonoma 14.6.1 发布&#xff0c;本更新包含了重要的错误修复&#xff0c;并解决了导致高级数据保护无法启用或停用的问题。同时带来了 macOS Ventura 13.6.9 安全更新。 …

LVS(Linux virual server)详解

目录 一、LVS&#xff08;Linux virual server&#xff09;是什么&#xff1f; 二、集群和分布式简介 2.1、集群Cluster 2.2、分布式 2.3、集群和分布式 三、LVS运行原理 3.1、LVS基本概念 3.2、LVS集群的类型 3.2.1 nat模式 3.2.2 DR模式 3.2.3、LVS工作模式总结 …

IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式

今早看到&#xff0c;IntelliJ IDEA 2024.2 发布的邮件提示&#xff0c;看了一眼这个版本更新的新特性真的太适合我了&#xff01;也许这些能力对关注DD的小伙伴也有帮助&#xff0c;所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。 Spring Da…

解密 Coretime:Polkadot 区块链资源分配的新革命

作者&#xff1a;PaperMoon Kaichao 高峰期打车&#xff0c;小编往往需要承受溢价车费&#xff0c;甚至还要不停加上小费&#xff0c;才可能在“前方排队 300人”的恐怖等待中获得优先打车的机会。但实际上&#xff0c;只要走出了拥挤路段&#xff0c;即使是高峰期&#xff0c…

Python装饰器之@property使用详解

概要 在Python中&#xff0c;property装饰器是一种强大且优雅的工具&#xff0c;用于定义属性方法&#xff0c;使得类的属性访问更加直观和安全。property装饰器可以让方法像属性一样被访问&#xff0c;从而在不改变接口的情况下对类的属性访问进行控制。本文将详细介绍proper…

VMware虚拟机和Docker的备份与恢复

目录 1. VMware虚拟机的快照备份 1.1 VMware本机的快照备份 1.2 VMware快照备份到另一电脑 2. Docker知识点 2.1 Docker镜像和容器的关系 2.2 Docker的存储卷 2.3 Docker命令简介 2.4 删除Anylink镜像 3. Docker备份和恢复 3.1 确定要回滚的容器和版本 3.2 备份当前…

UE开发中的设计模式(二) —— 中介者模式

上一篇文章介绍了观察者模式如何降低观察者和目标之间的耦合&#xff0c;并通过一个实例具体实现了观察者模式&#xff0c;本篇文章从上篇文章的实例继续&#xff0c;介绍中介者模式是如何带来对象间进一步的松耦合。 文章目录 问题提出概述问题解决总结优点缺点模式应用 参考资…

Powershell 禁用系统更新

创建一个关闭系统更新脚本 脚本系统兼容10,11,2012,206,2019,2022,2025powershell-install-stop-System-update.ps1 <# Powershell Install stop System update +++++++++++++++++++++++++++++++++++++++++++++++++++++ + _____ _____ _ …

【竞技宝】奥运会:法国国奥VS西班牙国奥

北京时间8月10日法国国奥在巴黎奥运会男足决赛中跟西班牙国奥狭路相逢&#xff0c;这场比赛对于主帅亨利来说&#xff0c;有着极为特殊的意义。因为&#xff0c;亨利将带领法国国奥队冲击他执教生涯首枚奥运会金牌。法国足协邀请亨利出任国奥队主帅&#xff0c;就是希望他能带领…

Mac 连接 Synology NAS【Finder】

对于 Mac 用户&#xff0c;建议使用 Finder 或 Cyberduck 通过WebDAV连接到Synology NAS 在上一篇文章中介绍了如何使用【Cyberduck 】连接到Synology NAS 这一篇文章介绍【Finder】连接到Synology NAS 相关文章&#xff1a; 注重任如何使用 Synology NAS 的套件或其他软件…

纸质文物的数字化革命:RFID技术的应用与影响

在这个数字化的时代&#xff0c;我们见证了技术的革新如何将历史重新点燃。纸质文物&#xff0c;这些人类文明的宝贵篇章&#xff0c;正经历一场由RFID技术引领的革命。 数字化浪潮不仅改变了我们的生活&#xff0c;也重塑了我们保护和传承历史的方式。纸质文物的数字化管理&am…