Fastdfs分布式文件系统之文件同步机制

FastDFS文件同步原理 4. 上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。服务器宕机,下次重新启动,重新加载同步文件,发现没有同步完成。之间的同步都是由一个独立线程负责的,这个线程中的所有操作都是以同步方式执行的。是否有该文件,只要解析文件的创建时间,然后与该值作比较,若该值大于创建创建时间,说明该。(大写的都是),则将该行指定的操作同步给对方(非源操作不需要同步),同步成功后更新。 阅读详情

本文将对同一组的不同storage server之间的同步以及新增storage server的同步进行介绍。
在这里插入图片描述
fastdfs文件系统结构

fastdfs文件系统原理

**从fastdfs文件系统结构中我们可以看出不管是上传文件、删除文件、修改文件及新增storager server,文件的同步都是同组内多台storager server之间进行的。**下面我们看fastdfs文件系统开发者是怎么描述同步机制的(来源于chinaunix):

tracker server的配置文件中没有出现storage server,而storage server的配置文件中会列举出所有的tracker server。

这就决定了storage server和tracker server之间的连接由storage server主动发起,storage server为每个tracker server启动一个线程进行连接和通讯。

tracker server会在内存中保存storage分组及各个组下的storage server,并将连接过自己的storage server及其分组保存到文件中,以便下次重启服务时能直接从本地磁盘中获得storage相关信息。storage server会在内存中记录本组的所有服务器,并将服务器信息记录到文件中。tracker server和storage server之间相互同步storage server列表:

  1. 如果一个组内增加了新的storage server或者storage server的状态发生了改变,tracker server都会将storage server列表同步给该组内的所有storage server。以新增storage server为例,因为新加入的storage server主动连接tracker server,tracker server发现有新的storage server加入,就会将该组内所有的storage server返回给新加入的storage server,并重新将该组的storage server列表返回给该组内的其他storage server;

  2. 如果新增加一台tracker server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。
    同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行。**文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器。**以文件上传为例,假设一个组内有3台storage server A、B和C,文件F上传到服务器B,由B将文件F同步到其余的两台服务器A和C。我们不妨把文件F上传到服务器B的操作为源头操作,在服务器B上的F文件为源头数据;文件F被同步到服务器A和C的操作为备份操作,在A和C上的F文件为备份数据。同步规则总结如下:

  3. 只在本组内的storage server之间进行同步;

  4. 源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;

  5. 上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器;

storage server有7个状态,如下:

  # FDFS_STORAGE_STATUS_INIT      :初始化,尚未得到同步已有数据的源服务器

  # FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有数据的源服务器

  # FDFS_STORAGE_STATUS_SYNCING   :同步中

  # FDFS_STORAGE_STATUS_DELETED   :已删除,该服务器从本组中摘除(注:本状态的功能尚未实现)

  # FDFS_STORAGE_STATUS_OFFLINE   :离线

  # FDFS_STORAGE_STATUS_ONLINE    :在线,尚不能提供服务

  # FDFS_STORAGE_STATUS_ACTIVE    :在线,可以提供服务

当storage server的状态为FDFS_STORAGE_STATUS_ONLINE时,当该storage server向tracker server发起一次heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下:

  1. storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。
    storage server A询问追加同步的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_ONLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理;

  2. 假设tracker server分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了storage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。
    storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据;

  3. storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_ONLINE;

  4. 当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

从上面的描述,我觉得作者描述的非常的清楚,让我们这些使用者能够非常容易理解。

同步时间管理

刚刚我们从上面了解了fastdfs文件系统中组内的多个storage server之间同步的机制,那文件同步是什么时候进行呢?是文件上传成功后,其它的storage server才开始同步,其它的storage server怎么去感知,tracker server是怎么通知storage server呢?

在这里插入图片描述
管理同步时间

当一个文件上传成功后,客户端马上发起对该文件下载请求(或删除请求)时,tracker是如何选定一个适用的存储服务器呢?

其实每个存储服务器都需要定时将自身的信息上报给tracker,这些信息就包括了本地同步时间(即,同步到的最新文件的时间戳)。

而tracker根据各个存储服务器的上报情况,就能够知道刚刚上传的文件,在该存储组中是否已完成了同步。在storage server中这些信息是以Binlog文件的形式存在的。

Binlog文件

当Storaged server启动时会创建一个 base_path/data/sync 同步目录,该目录中的文件都是和同组内的其它 Storaged server之间的同步状态文件,如192.168.1.2_33450.mark 192.168.1.3_33450.mark binlog.100(binlog.index);

192.168.1.2_33450.mark 192.168.1.3_33450.mark binlog.000 binlog.index
  • binlog.index 记录当前使用的Binlog文件序号,如为10,则表示使用binlog.010
  • binlog.100真实地Binlog文件
  • 192.168.1.2_33450.mark 同步状态文件,记录本机到192.168.1.2_33450的同步状态

在Mark文件中内容:由binlog_index和binlog_offset两项组成,以192.168.1.2_33450.mark为例其中binlog_index表示上次同步192.168.1.2机器的最后一条binlog文件索引,binlog_offset表示上次同步192.168.1.2机器的最后一条binlog偏移量,如果程序重启了,也只要从这个位置开始向后同步。

Binlog文件内容:在该文件中是以binlog日志组成,比如:

1470292943 c M00/03/61/QkIPAFdQCL-AQb_4AAIAi4iqLzk223.jpg

1470292948 C M00/03/63/QkIPAFdWPUCAfiraAAG93gO_2Ew311.png

1470292954 d M00/03/62/QkIPAFdWOyeAO3eUAABvALuMG64183.jpg

1470292959 C M00/01/23/QUIPAFdVQZ2AL_o-AAAMRBAMk3s679.jpg

1470292964 c M00/03/62/QkIPAFdVOsCAcxeQAAGTdbQsdVs062.jpg

1470292969 c M00/03/62/QkIPAFdVOnKAXu1NAABq9pkfsms63.jpeg

1470293326 D M00/03/62/QkIPAFdVMnGAZYSZAABq9pkfsms33.jpeg

其中的每一条记录都是使用空格符分成三个字段,分别为:

  • 第一个字段 表示文件upload时间戳 如:1470292943

  • 第二个字段 表示文件执行操作,值为下面几种

    C表示源创建、c表示副本创建

    A表示源追加、a表示副本追加

    D表示源删除、d表示副本删除

    T表示源Truncate、t表示副本Truncate

    其中源表示客户端直接操作的那个Storage即为源,其他的Storage都为副本

  • 第三个字段 表示文件 如M00/03/61/QkIPAFdQCL-AQb_4AAIAi4iqLzk223.jpg

Storage server具体同步过程

从fastdfs文件同步原理中我们知道Storaged server之间的同步都是由一个独立线程负责的,这个线程中的所有操作都是以同步方式执行的。比如一组服务器有A、B、C三台机器,那么在每台机器上都有两个线程负责同步,如A机器,线程1负责同步数据到B,线程2负责同步数据到C。每个同步线程负责到一台Storage的同步,以阻塞方式进行。

以IP为192.168.1.1的Storaged severe的服务器为例,它的同步目录下有192.168.1.2_33450.mark 192.168.1.3_33450.mark binlog.100等文件现在Storaged severe将会从ip为192.168.1.2的Storaged severe的存储里面同步数据。

1)打开对应Storage server的mark文件,如负责到192.168.1.1的同步则打开192.168.1.2_33450.mark 文件,从中读取binlog_index、binlog_offset两个字段值,如取到值为:100、1000,那么就打开binlog.100文件,seek到1000这个位置。

2)进入一个while循环,尝试着读取一行,若读取不到则睡眠等待。若读取到一行,并且该行的操作方式为源操作,如C、A、D、T(大写的都是),则将该行指定的操作同步给对方(非源操作不需要同步),同步成功后更新binlog_offset标志,该值会定期写入到192.168.1.2_33450.mark文件之中。

同步过程中可能因为同步较为缓慢,导致可能在同步一个文件之前,文件已经被客户端删除,此时同步线程将打印一条日志,然后直接处理后面的Binlog。

Fastdfs group同步及一台服务器部署两个storage 背景: 1921.68.0.164上已经有一个storage,组名:group1; 192.168.0.171上有tracker(单tracker),一个storage,组名:group0; 现在要做的工作是:在164上再起一个storage,设置组名为group0(与171上的goup0互为备份),将171上的group0文件同步到164 grou... 阅读详情

相关推荐

FastDFS配置:一个Tracker管理多个Storage Group

在安装过程中,确保Tracker服务器和Storage服务器的软件包都被正确安装。在FastDFS中,Tracker服务器用于管理文件的元数据信息,而Storage服务器则用于存储实际的文件内容。通过以上步骤,你已经成功配置了一个Tracker服务器管理多个Storage Group服务器的FastDFS环境。你可以根据需要添加更多的Storage服务器来扩展存储容量,并实现更高的可用性和负载均衡。至此,你已经成功配置了一个Tracker服务器管理多个Storage Group服务器的FastDFS环境。

TpCode的博客 1102

fastdfs文件服务器配置多个storage

fastdfs文件服务器添加存储

love_THL的博客 1330

解决 TensorFlow 和 Keras 的 Python 版本兼容问题:详细技术指南

本文提供了TensorFlow和Keras与Python版本不兼容问题的完整解决方案。通过版本对照表指出不同TensorFlow版本对应的Python支持范围,强调2.13.x仅支持Python 3.9-3.11,且不兼容Python 3.12+。给出最佳实践建议:使用虚拟环境管理项目依赖,推荐venv或conda创建独立环境;指导正确安装TensorFlow和Keras版本,建议优先使用tf.keras避免冲突;针对常见报错如DLL加载失败、模块导入错误等提供具体解决方法。最后给出一个在兼容环境中运行的M

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1663

fastDFS 分布式文件系统新增加storage

已经搭建好了一套fastdfs文件服务器,一个tracker和一个storage,且部署在同一台服务器上,已经正式投入运行一年,1T的空间已经用完。 有两种方案: 在原有的storage直接挂存储,这样单个storage达到2T; 另外部署一套storage(新的服务器上),作为group2,这样,就是一个tracker对应两个storage,方便维护以及备份转移。 现采用第二种方案。   已经搭建好了一套fastdfs文件服务器基本不用动。   在新的服务器安装fastDFS,修改配置。   1、vi

weixin_45725946的博客 2938

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3424

【电机控制入门】——电机控制书籍推荐

电机控制入门书籍推荐及分享 阅读须知: 1.电机控制的入门是涉及到机械、电子与控制等复杂交叉学习,它需要持续投入时间才可以看到学习的效果,如同“一万小时定律”。俗话说,九层之台,起于垒土,因此电机控制入门没有所谓的速成培训班。相反,还需要夯实好一定的基础。为此,博主建议从基础理论抓起,故推荐相关的书籍并分享给大家。 2.学习电机贵在动手实践,无论是借助于MATLAB/Simulink仿真平台来验证理论分析,或是使用板子对所设计的控制系统进行物理实现,博主极力推荐在一定基础(看完部分以下推荐的书籍),一边动手

昔时扬尘处 3万+

FastDFS分布式文件系统

FastDFS分布式文件系统

qq_43350524的博客 980

【自动驾驶端到端5:VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning】

从大规模人类驾驶演示中学习类人驾驶策略是有希望的。但是,规划的不确定性使得从驾驶演示中提取驾驶知识是有挑战性的。从统计学习的角度来看,动作(包括实际和速度)是高度随机的,受许多无法建模的潜在因素影响。

weixin_40000560的博客 1404

fastdfs+nginx集群搭建

一.简介fastdfs 1.什么是fastdfs fastdfs是一个轻量级的开源分布式文件系统; fastdfs主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡; fastdfs实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储支持存储服务器在线扩容支持相同内容的文件只保存一份,节约磁盘空间; fastdfs只能通过Client API访问,不支持POSI...

pengshengli的博客 2万+

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。

一路寒风身如絮,命海沉浮客独行 1761

8 卡 GPU 服务器与 NVLink/NVSwitch 互联技术

NVLink 是一种点对点的高速互连技术,单条 NVLink 就是一条全双工双路信道,每条 NVLink 链路可以将 2 个 GPU 直连起来,并且每个 GPU 可以提供多条 NVLink 接口连接多个 GPU。另外,PCIe Switch 互联拓扑中的 GPU 之间可能存在 GPU0→Switch0→CPU0→CPU1→Switch1→GPU7 的通信链路,它的通信不可避免的存在一定的延迟,因而更适合用于对信号效率不敏感且追求性价比的使用场景,如:推理、云计算等领域。本文讨论的是单机 GPU 卡间互联。

烟云的计算 4259

分布式文件系统FastDFS实战

​ FastDFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB< file_size

苦难带不走梦想 2299

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4508

FastDFS原理

FastDFS原理 摘要: 系统架构 相关术语 同步机制 通信协议 目录结构 安装和运行 和其他系统对比 FastDFS简介 FastDFS是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载), 特别适合以文件为载体的在线服务,如图片网站,视频网站等 FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡 FastDFS实现了软件方式的RAID, 可以使用廉价...

java后端架构 515

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

分布式文件系统FastDFS架构剖析

分布式文件系统FastDFS架构剖析

愤怒的小狐狸----博客专栏 7545

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

分布式文件系统FastDFS

在内存中记录集群中group和storage server的状态信息,是连接Client和Storage server的枢纽。FastDFS支持HTTP方式下载文件,不建议使用内置web server,推荐使用外部web server,如果apache或nginx。文件ID由FastDFS生成,作为文件访问凭证。只有两个角色,tracker server和storage server,不需要存储文件索引信息。client询问tracker可以下载指定文件的storage,参数为文件ID(组名和文件名);

dyuan134的博客 981

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

FastDFS分布式文件服务器

FastDFS文件服务器 https://www.cnblogs.com/chiangchou/p/fastdfs.html#_label0 用FastDFS一步步搭建文件管理系统 目录 一、FastDFS介绍 1、简介 2、FastDFS的存储策略 3、FastDFS的上传过程 4、FastDFS的文件同步 5、FastDFS的文件下载 二、安装FastDFS环境 0、前言 1、下载安装 libfastcommon 2、下载安装FastDFS 3、配置FastDFS跟踪器(Tracker) 4、配置 Fa

专搞技术的小兔子 1353

爆肝两万字,详解fastdfs分布式文件系统

TrackerServer:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用,记录storage server的状态,是连接Client和Storage server的枢纽。Storage Server:存储服务器,文件和meta data都保存到存储服务器上group:组,也称为卷,同组内服务器上的文件是完全相同的【主崩子接】文件标识:包括两部分:组名和文件名(包含路径)

m0_61927082的博客 891
上一篇: FASTDFS 文件同步
下一篇: FastDFS 注意事项
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值