热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

FastDFS原理系列文章

FastDFS原理系列文章基于FastDFS5.035.042014-12-19一、概述FastDFS文档极少,只能找到一些宽泛的架构文档,以

FastDFS原理系列文章

 

基于FastDFS 5.03/5.04



2014-12-19

 

一、概述

      FastDFS文档极少,只能找到一些宽泛的架构文档,以及ChinaUnix论坛上作者对网友提问的一些回答。对于要将FastDFS应用到生产系统来说,这点了解绝对是不够的。

      这段时间研究FastDFS源码,并且做了大量的性能测试,中间也做了大量的笔记,基本上把程序的结构与主要的操作摸索清楚,因此写了一些文章即是对前段工作的总结,同时也分享给想更多了解FastDFS内部的同行们。这里对每篇文章做个介绍。


1、机器之间的同步

      Storage之间的同步可能是大家首先关心的了,这篇文章做了详细的介绍,最后我还写了注意事项,主要是性能方面的。

FastDFSBinlog同步》 http://blog.csdn.net/hfty290/article/details/42041155

 

2、添加新机器同步

      大家可能不怎么会注意到这部分,但是其实很重要。在实际的生产系统,坏掉一台机器,或者为了读压力而增加机器,等都是很正常的。在一个运行的系统上添加一台机器涉及到存量文件的同步与融入到系统中,下面这篇文章做了详细的回答。

FastDFS之添加机器同步》 http://blog.csdn.net/hfty290/article/details/42041953

 

3、磁盘恢复

      线上机器坏个磁盘算是个大概率事件了,换了一个新磁盘,问题来了,数据怎么恢复啊。不用急,重启下Storaged,他会检测到并进行恢复,虽然恢复时间可能要很长(数据量大时),这篇文章对这个功能做了说明。

FastDFS之磁盘恢复过程》 http://blog.csdn.net/hfty290/article/details/42032817

 

4Storaged程序结构

      到此处Storaged主要的功能点已经讲述了,或者你还想知道程序内部是如何组织的,线程之间的协调等信息,请看这篇文章。

FastDFSStorage程序框架》 http://blog.csdn.net/hfty290/article/details/42048001

 

5ClientTracker的通讯

      现在是时候从客户端角度来端详下Tracker了,因为不管是上传、下载、删除等操作都需要先查询Tracker。那么这些查询Tracker是如何计算,并返回的呢?请看本篇。

FastDFS之客户端与Tracker通讯》http://blog.csdn.net/hfty290/article/details/42064429

 

6、合并存储

      海量小文件导致性能下降,可能大家都听说过。福音是FastDFS通过合并小文件成大文件的方式来规避这个问题。FastDFS是如何实现这个功能的,详细请看这里。

FastDFS合并存储原理分析》 http://blog.csdn.net/hfty290/article/details/42026215

 

7Tracker-Leader选举

      看过了FastDFS合并存储原理分析》这篇文章后,对于其中提到的Tracker-Leader如何选举可能会好奇,通过这篇文章你会看到Leader的选举过程。

FastDFSTracker-Leader选择》 http://blog.csdn.net/hfty290/article/details/42030339

 

8、合并存储设计缺陷

      对于FastDFS合并存储功能不得不面对一个问题,在某些情况下会导致数据错误或丢失。你在看FastDFS合并存储原理分析》这篇文章时可能已经发现了,现在让我们完完整整地重现下这种错误的出现,请看。

FastDFS之合并存储缺陷导致数据丢失或错误》 http://blog.csdn.net/hfty290/article/details/42030481

 


推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
author-avatar
sfktrd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有