热门标签 | 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,并解决一些常见的配置问题。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 如何实现织梦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发明 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
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社区 版权所有