FastDFS源码学习(一)FastDFS介绍及源码编译安装
FastDFS是淘宝的余庆主导开发的一个分布式文件系统,采用C语言开发,性能较优。在淘宝网、京东商城、支付宝和某些网盘等系统均有使用,使用场景十分广泛。
下图来源:https://blog.csdn.net/kyriehe/article/details/52431495
目前这个系统的源码已在github上开源。
编译FastDFS需要下载以下源码:
FastDFS,下载地址:https://github.com/happyfish100/fastdfs
libfastcommon,下载地址:https://github.com/happyfish100/libfastcommon
本笔记(教程)采用如下环境进行编译学习,为了保证代码的一致性,建议在同等环境下进行编译学习。系统没有太大的更新,本教程均具有参考价值。
FastDFS版本:fastdfs-5.11.tar.gz
libfastcommon版本:libfastcommon-1.0.39.tar.gz
libfastcommon库编译安装:
1.解压libfastcommon,进入目录,执行./make.sh进行编译libfastcommon
2.执行./make.sh install 进行安装libfastcommon
安装时将头文件拷贝到/usr/include/fastcommon目录下,动态库libfastcommon.so拷贝到/usr/lib目录下。创建/usr/lib64/libfastcommon.so的软连接
启示:我们自己也可以编写动态库,把接口预留出来(即include中的头文件)供其他开发人员使用。本项目的libfastcommon库在原作者(余庆)的fastdht系统中也有使用。本lib库是将项目中的基础模块提取出来形成的一个基础库,供系统调用使用,这个库在其他系统中也能发挥很大的作用
fastdfs编译安装
1.解压fastdfs,进入目录,执行./make.sh进行编译fastdfs
2.执行./make.sh install 安装fastdfs
安装时将配置文件:client.conf.sample、tracker.conf.sample、storage_ids.conf.sample、storage.conf.sample拷贝到/etc/fdfs/目录下。
将可执行程序文件:fdfs_trackerd、fdfs_storaged、fdfs_monitor、fdfs_test、fdfs_test1、fdfs_crc32、fdfs_upload_file、fdfs_download_file、fdfs_delete_file、fdfs_file_info、fdfs_appender_test、fdfs_appender_test1、fdfs_append_file、fdfs_upload_appender拷贝到/usr/bin目录下
重要文件解释:实际使用时将.sample去掉。
client.conf.sample 客户端配置文件,主要配置client日志目录,tracker服务器地址
tracker.conf.sample 配置tracker日志。
storage.conf.sample 存储服务器配置文件,主要配置日志目录,数据存储目录,tracker服务器地址
整个系统中的重点是tracker服务器,storage需要tracker去发现。client去请求,都是要经过tracker服务器。
该系统有以下优秀策略,将尝试在后续的代码分析中体现出来
1.一个group内文件互为备份,即镜像服务器,上传/下载文件轮询策略,指定特定storage服务器上传/下载策略。上传后,同group的服务器互相备份数据。
2.多个group存储策略可配置,有轮询策略,剩余空间大优先等策略。
3.小文件合并存储功能(将多个小文件合并成一个大文件存储,主要应对小文件inode限制导致inode资源不够)
4.后续使用中发现的其他功能。
由于本教程仅作个人学习分析,没有实际生产环境的支持,未免有失偏颇。还望同行不吝赐教。
参考资料:
http://bbs.chinaunix.net/thread-1920470-1-1.html FastDFS FAQ
https://blog.csdn.net/kyriehe/article/details/52431495 分布式存储fastDFS
FastDFS源码学习(一)FastDFS介绍及源码编译安装的更多相关文章
- SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的
系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...
- Dubbo源码学习之-SPI介绍
前言 学习之路还是要戒骄戒躁,一以贯之的积累前行.之前的公司部门技术达人少,自己总向往那些技术牛人多的团队,想象自己进去之后能跟别人学到多少东西.如今进到一个这样的团队之后,却发现之前自己的想法过于幼 ...
- spring源码学习(三)--spring循环引用源码学习
在spring中,是支持单实例bean的循环引用(循环依赖)的,循环依赖,简单而言,就是A类中注入了B类,B类中注入了A类,首先贴出我的代码示例 @Component public class Add ...
- 【RocketMQ源码学习】- 4. Client 事务消息源码解析
介绍 > 基于4.5.2版本的源码 1. RocketMQ是从4.3.0版本开始支持事务消息的. 2. RocketMQ的消息队列能够保证生产端,执行数据和发送MQ消息事务一致性,而消费端的事务 ...
- Mybatis源码学习第七天(插件源码分析)
为了不把开发和源码分析混淆,决定分开写; 接下来分析一下插件的源码,说道这里老套路先说一个设计模式,他就是责任链模式 责任链模式:就是把一件工作分别经过链上的各个节点,让这些节点依次处理这个工作,和装 ...
- AJ学IOS 之二维码学习,快速生成二维码
AJ分享,必须精品 二维码是一项项目中可能会用到的,iOS打开相机索取二维码的速度可不是Android能比的...(Android扫描二维码要来回来回晃...) 简单不多说,如何把一段资料(网址呀,字 ...
- Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...
- 【目录】Spring 源码学习
[目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...
- Netty 源码学习——EventLoop
Netty 源码学习--EventLoop 在前面 Netty 源码学习--客户端流程分析中我们已经知道了一个 EventLoop 大概的流程,这一章我们来详细的看一看. NioEventLoopGr ...
- Dubbo源码学习文章目录
目录 Dubbo源码学习--服务是如何发布的 Dubbo源码学习--服务是如何引用的 Dubbo源码学习--注册中心分析 Dubbo源码学习--集群负载均衡算法的实现
随机推荐
- Oracle 11g 静默安装过程(centos7)
开启机器,本次实例分配的ip是:192.168.3.197(Xshell ssh连接) 2 安装unzip 工具.vim编辑器(个人习惯,vi也可以) 3 在/etc/hosts文件中添加本机IP跟主 ...
- Java基础 带你深刻理解自动装箱,拆箱含义
1.什么是装箱,什么是拆箱装箱:把基本数据类型转换为包装类.拆箱:把包装类转换为基本数据类型.基本数据类型所对应的包装类:int(几个字节4)- Integerbyte(1)- Byteshort(2 ...
- Qt unsigned char *与QString之间的相互转换
//unsiged char *转QString unsigned char *str = "fdd" ; char *str1 = (char *)str; QString s ...
- marry|psych up|make it|Fireworks|be to blame for|
同位语从句 ADJ 结婚的;已婚的If you are married, you have a husband or wife. We have been married for 14 years.. ...
- stress命令安装
一.stress(cpu) stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 下载地址http://people.seas.harvar ...
- Struts2开发基本步骤
1 加载jar文件 commons-fileupload.jar commons-io.jar commons-lang.jar freemaker.jar ognl.jar ...
- 挑战中英实时语音翻译——Skype Translator 中文预览版登陆中国
Translator 中文预览版登陆中国" title="挑战中英实时语音翻译--Skype Translator 中文预览版登陆中国"> 今天,我们正式宣布在中国 ...
- ASP.NET MVC4网站搭建与发布【最新】
ASP.NET MVC4网站搭建与发布 一些往事 2015年,仅仅大二的我怀着一颗创业之心,加入了常熟派英特,成为阳光职场平台的创始之一,并肩负了公司技术部的大梁,当时阳光职场正在从线下服务向互联网化 ...
- tips [ 18870 ]
Created at 2017-08-23 Updated at 2018-01-31 Category 东方大陆 Tag 东方大陆 上面有编辑时间的,别吐槽说什么过期内容了使用 lightPIC图床 ...
- 4-CSS规范
4.1 命名规范:4.1.1 css文件命名 reset.css 重置样式,重置元素默认样式,使得页面在所有浏览器中有统一的外观 global.css 全局样式,全站公用,定义页面基础样式(常见的公共 ...