fastDFS原理及环境搭建
1. fastDSF介绍
FastDFS是用c语言编写的一款开源的分布式文件系统,它是由淘宝资深架构师余庆编写并开源。FastDFS专为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
为什么要使用fastDFS呢?
上边介绍的NFS、GFS都是通用的分布式文件系统,通用的分布式文件系统的优点的是开发体验好,但是系统复杂性高、性能一般,而专用的分布式文件系统虽然开发体验性差,但是系统复杂性低并且性能高。fastDFS非常适合存储图片等那些小文件,fastDFS不对文件进行分块,所以它就没有分块合并的开销,fastDFS网络通信采用socket,通信速度很快。
2. fastDSF工作原理
2.1 fastDSF架构
FastDFS架构包括 Tracker server和Storageserver。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
如下图:
1)Tracker
Tracker Server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
2)Storage
Storage Server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是使用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内的存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
3)Storage状态收集
Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
2.2 文件上传流程
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
- 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
- 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
- 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
- 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
2.3 文件下载流程
tracker根据请求的文件路径即文件ID 来快速定义文件。
比如请求下边的文件:
1.通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
2.存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。
3.fastDFS安装
如果想自己尝试安装fastDSF也可以按照文档一步一步安装。
tracker和storage使用相同的安装包,fastDFS的下载地址在:https://github.com/happyfish100/FastDFS
本教程下载安装包:FastDFS_v5.05.tar.gz
FastDFS是C语言开发,建议在linux上运行,本教程使用CentOS7作为安装环境。
安装细节请参考 “fastDFS安装教程.doc”。
3.1 Tracker配置
本小节介绍Tracker的配置文件内容。
fastDFS的配置文件目录 :/etc/fdfs
主要的配置文件:/etc/fdfs/tracker.conf (tracker配置文件 );storage.conf(storage配置文件)
tracker.conf配置内容如下:
端口:port=22122
存储策略:store_lookup=
取值范围:0(轮询向storage存储文件)、1(指定具体的group)、2负载均衡,选择空闲的storage存储
指定具体的group:store_group= 如果store_lookup设置为1则这里必须指定一个具体的group。
tracker 基础目录:base_path=/home/fastdfs,tracker在运行时会向此目录存储storage的管理数据。
3.2 storage配置
本小节介绍storage的配置文件内容。
storage.conf配置 内容如下:
组名:group_name=group1
端口:port=23000
向tracker心跳间隔(秒):heart_beat_interval=30
storage基础目录:base_path=/home/fastdfs
磁盘存储目录,可定义多个store_path:
store_path0=/home/fastdfs/fdfs_storage 此目录下存储上传的文件,在/home/fastdfs/fdfs_storage/data下
store_path1=...
...
上报tracker的地址:tracker_server=192.168.101.64:22122
如果有多个tracker则配置多个tracker,比如:
tracker_server=192.168.101.64:22122
tracker_server=192.168.101.65:22122
....
3.3 启动停止
fastDFS启动/停止脚本目录:
fdfs_trackerd:tracker脚本,通过此脚本对 tracker进行启动和停止
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged:storage脚本,通过此脚本对 storage进行启动和停止
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
转载于:https://my.oschina.net/wuaiting/blog/3059697
fastDFS原理及环境搭建相关推荐
- sturst2的原理及环境搭建
一.struts原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这 ...
- SQL手工注入原理(含环境搭建) ─=≡Σ(((つ•̀ω•́)つ 知己知彼百战百胜 web安全
文章目录 SQL测试环境环境搭建 下载与安装环境 开启与使用环境 sqli-labs环境部署 dvwa环境部署 SQL手动注入 SQL注入原理 SQL注入分类 SQL注入手段 寻找注点 利用注点 ge ...
- Appium - 自动化测试框架 - 工作原理、环境搭建
前言 Appium是移动端的UI自动化测试框架,基于C/S模式,特点是支持跨平台(安卓,ios),支持多语言(对java,python都有支持的API).本文系博主对于该框架的部分学习记录. 一.什么 ...
- FastDFS集群环境搭建
注:生产环境亲身实践,可复用 参考资料:https://blog.csdn.net/weixin_45422648/article/details/120308274 https://blog.csd ...
- 在线引流工具Tcpcopy原理、环境搭建、使用、采坑
Tcpcopy 0. 手把手教你做中间件.高性能服务器.分布式存储技术交流群 手把手教你做中间件.高性能服务器.分布式存储等(redis.memcache.nginx.大容量redis pika.ro ...
- FastDFS文件系统单机环境搭建
1,FastDFS基本介绍:FastDFS 系统有三个角色,跟踪服务器(Tracker Server).存储服务器(Storage Server)和客户端(Client). Tracker Serve ...
- Soul源码学习(一)——soul原理及环境搭建
概述 Soul 是基于 WebFlux实现的响应式的 API 网关,具有异步.高性能.跨语言等特点. 作者:我希望能够有一样东西像灵魂一样,保护您的微服务.在参考了 Kong.Spring Cloud ...
- FastDFS集群环境搭建(五)FastDFS监控器fdfs_monitor
文章目录 FastDFS七种状态 增加Storage节点 删除Storage节点 增加tracker节点 FastDFS七种状态 标识 含义 INIT 初始化,尚未得到同步已有数据的源服务器 WAIT ...
- Dubbo 专题(基础篇):Dubbo 介绍、环境搭建与实践
前几天复习了 Dubbo 相关的技术点,趁热打铁记录一下,本篇博客属于 Dubbo 的入门基础篇,内容主要包括 Dubbo 概念,Dubbo 特点,Dubbo 基本工作原理,Dubbo 环境搭建,Du ...
- SpringBoot热部署环境搭建和原理分析
SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...
最新文章
- pytorch中查看gpu信息
- Uber将动态调价机制引入其外卖服务UberEats
- spark hive udf java_【填坑六】 spark-sql无法加载Hive UDF的jar
- 算法时间复杂度lg是多少_算法时间复杂度空间复杂度(附github)
- Lua 生成凌晨与午夜时间戳的函数
- 推荐《求医不如求己》,实用
- 开源视觉salm算法介绍
- 经典MapReduce作业和Yarn上MapReduce作业运行机制
- 机器学习入门:多变量线性回归
- c语言bim的题目,BIM考试选择题精选
- [iOS 逆向 2] 越狱介绍
- cs局域网服务器未响应,电子竞技CS满十开打IP列表
- 各代iphone尺寸_历代iPhone尺寸对比,你最喜欢哪一代?
- 冲刺大厂每日算法面试题,动态规划21天——第七天
- Coloring Contention
- Base64在线转换工具(详解)
- HMAC-SHA1加密算法c++与java的实现
- 胃溃疡 ---- 四药同治(丽珠得乐、奥美拉唑、阿莫西林 + 克林霉素)
- 人工智能技术与专利技术变革
- linux命令之jq