文档章节

FastDFS分布式文件系统

 我的月亮
发布于 2017/05/19 10:56
字数 1186
阅读 29
收藏 0

FastDFS简介

•FastDFS是一个轻量级的开源分布式文件系统

•FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡

•FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储

•支持存储服务器在线扩容

•支持相同内容的文件只保存一份,节约磁盘空间

•FastDFS只能通过ClientAPI访问,不支持POSIX访问方式

•FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)
系统架构-架构图
图片
系统架构-上传文件流程图
图片

• 1. client询问tracker上传到的storage,不需要附加参数;

• 2. tracker返回一台可用的storage;

• 3. client直接和storage通讯完成文件上传。 
系统架构-下载文件流程图
图片

• 1. client询问tracker下载文件的storage,参数为文件标识(组名和文件名);

• 2. tracker返回一台可用的storage;

• 3. client直接和storage通讯完成文件下载。
相关术语

• Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storageserver的枢纽。

• Storage Server:存储服务器,文件和meta data都保存到存储服务器上

• group:组,也可称为卷。同组内服务器上的文件是完全相同的

• 文件标识:包括两部分:组名和文件名(包含路径)

• meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768
同步机制

•同一组内的storageserver之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;

•文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;

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

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

• 协议包由两部分组成:header和body

• header共10字节,格式如下:

– 8 bytes body length

– 1 byte command

– 1 byte status

• body数据包格式由取决于具体的命令,body可以为空
运行时目录结构-tracker server

•  ${base_path}
    |__data
    |     |__storage_groups.dat:存储分组信息
    |    |__storage_servers.dat:存储服务器列表
    |__logs

          |__trackerd.log:trackerserver日志文件
运行时目录结构-storage server

•  ${base_path}
    |__data
    |     |__.data_init_flag:当前storageserver初始化信息
    |    |__storage_stat.dat:当前storage server统计信息
    |    |__sync:存放数据同步相关文件
    |    |     |__binlog.index:当前的binlog文件索引号
    |    |     |__binlog.###:存放更新操作记录(日志)
    |    |     |__${ip_addr}_${port}.mark:存放同步的完成情况
    |    |
    |     |__一级目录:256个存放数据文件的目录,如:00, 1F
   |           |__二级目录:256个存放数据文件的目录
    |__logs

          |__storaged.log:storageserver日志文件
安装和运行

•#step 1. download FastDFS source package and unpack it,

•# if you use HTTP to download file, please downloadlibevent 1.4.x and install it

•tar xzf FastDFS_v1.x.tar.gz

•#for example:

•tar xzf FastDFS_v1.20.tar.gz

•#step 2. enter the FastDFS dir

•cd FastDFS

•#step 3. if HTTP supported, modify make.sh, uncommentthe line:

•# WITH_HTTPD=1, then execute:

•./make.sh

•#step 4. make install

•./make.sh install

•#step 5. edit/modify the config file of tracker andstorage

•#step 6. run server programs

•#start the tracker server:

•/usr/local/bin/fdfs_trackerd<tracker_conf_filename>

•#start the storage server:

•/usr/local/bin/fdfs_storaged<storage_conf_filename>
FastDFS和集中存储方式对比

指标

FastDFS

NFS

集中存储设备

如NetApp、NAS

线性扩容性

文件高并发访问性能

一般

文件访问方式

专有API

POSIX

支持POSIX

硬件成本

较低

中等

相同内容文件只保存一份

支持

不支持

不支持

• FastDFS中文:http://www.csource.org/

• FastDFS英文:http://code.google.com/p/fastdfs/ 
官网资料,分享给大家学习 

愿意了解框架技术或者源码的朋友直接加求求(企鹅):2042849237
更多详细源码参考来源:http://minglisoft.cn/technology

© 著作权归作者所有

粉丝 0
博文 4
码字总数 6182
作品 0
惠州
私信 提问

暂无文章

定时获取服务器时间戳的一个类(Typescript)

export class TimeStampService { private _local_timestamp: number; // 本地时间戳 private _server_timestamp: number; // 服务器端时间戳 private _duration: number = 1......

lilugirl
8分钟前
0
0
前段技术总结

前端UI框架组件库: 说到前端框架我第一印象中想起React、Vue和Angular,不知道你是否与我一样想到这些,现在常用的有:Bootstrap、jQuery UI、BootMetro、AUI常用的还有很多、就不一一跟大家...

WinkJie
28分钟前
0
0
对话亲历者|鲁肃:我在支付宝“拧螺丝“的日子

摘要: 他是支付宝技术平台的奠基人之一,但是他总说“这还不是我心中最完美的架构”;他行事低调但却有着“此时此地,非我莫属”的豪气;他曾无数次充当救火大队长,但自评只是“没有掉队的...

阿里云云栖社区
35分钟前
4
0
设置 npm yarn 淘宝源

设置npm config set chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver设置yarn config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"......

internetafei
44分钟前
2
0
Docker搭建Mysql集群、主从同步复制

1、创建数据挂载点: mkdir /opt/mysql-master/mysql、/opt/mysql-master/conf.d、/opt/mysql-slave/mysql、/opt/mysql-slave/conf.d 2、分别在master、slave节点文件目录conf.d下创建touch......

WALK_MAN
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部