FastDFS原理系列文章

基于FastDFS 5.03/5.04

2014-12-19

一、概述

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

这段时间研究FastDFS源代码,而且做了大量的性能測试。中间也做了大量的笔记。基本上把程序的结构与基本的操作摸索清楚,因此写了一些文章即是对前段工作的总结,同一时候也分享给想很多其它了解FastDFS内部的同行们。

这里对每篇文章做个介绍。

、机器之间的同步

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

《FastDFS之Binlog同步》 http://blog.csdn.net/hfty290/article/details/42041155

、加入新机器同步

大家可能不怎么会注意到这部分。可是事实上非常重要。

在实际的生产系统。坏掉一台机器,或者为了读压力而添加机器,等都是非常正常的。在一个执行的系统上加入一台机器涉及到存量文件的同步与融入到系统中。以下这篇文章做了具体的回答。

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

、磁盘恢复

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

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

、Storaged程序结构

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

《FastDFS之Storage程序框架》http://blog.csdn.net/hfty290/article/details/42048001

、Client与Tracker的通讯

如今是时候从client角度来端详下Tracker了。由于无论是上传、下载、删除等操作都须要先查询Tracker。那么这些查询Tracker是怎样计算。并返回的呢?请看本篇。

《FastDFS之client与Tracker通讯》http://blog.csdn.net/hfty290/article/details/42064429

、合并存储

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

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

、Tracker-Leader选举

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

《FastDFS之Tracker-Leader选择》 http://blog.csdn.net/hfty290/article/details/42030339

、合并存储设计缺陷

对于FastDFS合并存储功能不得不面对一个问题,在某些情况下会导致数据错误或丢失。

你在看《FastDFS合并存储原理分析》这篇文章时可能已经发现了,如今让我们完完整整地重现下这样的错误的出现,请看。

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

FastDFS原理系列文章的更多相关文章

  1. MapReduce调度与执行原理系列文章

    转自:http://blog.csdn.net/jaytalent?viewmode=contents MapReduce调度与执行原理系列文章 一.MapReduce调度与执行原理之作业提交 二.M ...

  2. Consul实现原理系列文章2: 用Gossip来做集群成员管理和消息广播

    工作中用到了Consul来做服务发现,之后一段时间里,我会陆续发一些文章来讲述Consul实现原理.这篇文章会讲述Consul是如何使用Gossip来做集群成员管理和消息广播的. Consul使用Go ...

  3. Consul实现原理系列文章1: 用Raft来实现分布式一致性

    工作中用到了Consul来做服务发现,之后一段时间里,我会陆续发一些文章来讲述Consul实现原理.在前一篇文章中,我介绍了Raft算法.这篇文章会讲讲Consul是如何使用Raft算法来实现分布式一 ...

  4. Consul实现原理系列文章3: Consul的整体架构

    工作中用到了Consul来做服务发现,之后一段时间里,我会陆续发一些文章来讲述Consul实现原理.在前几篇文章介绍完了Consul用到的两个关键性东西Raft和Gossip之后,这篇文章会讲述Con ...

  5. java nio系列文章

    java nio系列教程 基于NIO的Client/Server程序实践 (推荐) java nio与并发编程相关电子书籍   (访问密码 48dd) 理解NIO nio学习记录 图解ByteBuff ...

  6. .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引

    系列文章索引: .NET面试题解析(01)-值类型与引用类型 .NET面试题解析(02)-拆箱与装箱 .NET面试题解析(03)-string与字符操作 .NET面试题解析(04)-类型.方法与继承 ...

  7. 【深入ASP.NET原理系列】--ASP.NET请求管道、应用程序生命周期、整体运行机制

    微软的程序设计和相应的IDE做的很棒,让人很快就能有生产力..NET上手容易,生产力很高,但对于一个不是那么勤奋的人,他很可能就不再进步了,没有想深入下去的动力,他不用去理解整个框架和环境是怎么执行的 ...

  8. 分布式文件系统FastDFS原理介绍

    在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ...

  9. 【转载】Android异步处理系列文章

    本博文地址:http://blog.csdn.net/mylzc/article/details/6777767 转载请注明出处. 为了给用户带来良好的交互体验,在Android应用的开发过程中需要把 ...

随机推荐

  1. hdoj-1827-Summer Holiday(scc+缩点)

    Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. 22.Generate Parentheses[M]括号生成

    题目 Given n pairs of parentheses, write a function to generate all combinations of well-formed parent ...

  3. 图片加载AsyncTask并发问题

    在列表控件中使用AsycnTask加载图片时,会带来并发问题. 如果每个子视图都触发一个AsyncTask,因为AsyncTask内部是一个线程池,并发触发时,不能确保每个子视图的AsyncTask都 ...

  4. mysql 主从错误情况与原因

    mysql 主从错误情况1,master 上删除一条记录是从库报错 找不到该记录引起原因:master出现宕机或者从库已经删除.解决方案:stop slave;set global sql_slave ...

  5. 服务器控件使用eval()绑定属性出现服务器标记的格式不正确

    在使用asp.net服务器端控件的时候,想要动态绑定控件某属性的值,或者动态绑定控件事件方法的参数,例如一个<asp:RadioButton ID="RadioButton5" ...

  6. 《SLIC Superpixels》阅读笔记

    原始链接:http://blog.csdn.net/jkhere/article/details/16819285 或许有改动,请参考原文! SLIC 超像素(SLICSuperpixels) Rad ...

  7. C#读取EXCEL 并输出到文本框

    #region 加载数据到DataGraidView private void button1_Click(object sender, EventArgs e) { string excelPath ...

  8. 日常记录-Pandas Cookbook

    Cookbook 1.更新内容 2.关于安装 3.Pandas使用注意事项 4.包环境 5.10分钟Pandas初识 6.教程 7.Cookbook 8.数据结构简介 9.基本功能 10.使用文本数据 ...

  9. sublim Text3 配置python3环境

    一.安装Sublime Text 3 1.双击下载的.exe文件安装,安装路径不要有中文目录 2.安装Sublime Text 3时,勾选“Add to explorer context menu”, ...

  10. 【BZOJ2733】【HNOI2012】永无乡 - 线段树合并

    题意: Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通 ...