前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
1.名词解释:
tracker服务器:中文叫做跟踪器,主要做调度工作,在访问上起负载均衡的作用。(tracker告诉WWW,与哪台Storage通讯)
storage服务器:中文叫做存储器,主要用来存储数据,它上面可以建立节点(或者叫卷,组)
tracker和storage都可以由多台服务器组成,storage的各位服务器数据都是同步的,这是实现负载均衡的前提。
2.上传流程:
FastDFS file upload 上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
FastDFS file download 下载文件交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
首先客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server (跟踪器)的指定端口来实现的,
Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server (存储器),
然后将这个Storage Server 的地址等信息返回给 client,
然后 client 再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server上。
client向tracker发一个HTTP的GET请求,并把它自己的信息放在GET的参数中;
这个请求的大致意思是:我是xxx(一个唯一的id),我想下载yyy文件,我的ip是aaa,我用的端口是bbb...
tracker对所有下载者的信息进行维护,当它收到一个请求后,首先把对方的信息记录下来
(如果已经记录在案,那么就检查是否需要更新),然后将一部分
(并非全部,根据设置的参数已经下载者的请求)参与下载同一个文件(一个tracker服务器可能同时维护多个文件的下载)的下载者的信息返回给对方。
Client在收到tracker的响应后,就能获取其它下载者的信息,那么它就可以根据这些信息,与其它下载者建立连接,从它们那里下载文件片断。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器(tracker)主要做
调度工作,就像公交车站里面的调务员一样,它负责通过负载均衡选出最优的存储节点(storage)。存储节点(storage)顾名思义就是负责存储、
数据同步、数据的操作的一个服务,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。
所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,
如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。
3.架构简析、特点
FastDFS 是包括一组 Tracker Server 和 Storage Server 的。
Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。
Storage Server 是分成多个 Group,每个 Group 中的Storage 都是互相备份的,
就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、100GB、100GB,那么 Group1 的存储能力是 100GB,
而不是 300GB,这就是互相备份的意思。
进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。
多个 Group 之间的存储方式,可以采用 round robin(轮训)、load balanced(负载均衡)或指定 Group 的方式。
FastDFS 架构中,数据最终是与一个 available (有空的、可获得的) Storage Server 进行传输的。
FastDFS的特点包括(1)高可靠性:无单点故障;(2)高吞吐量:只要 Group 足够多,数据流量是足够分散的。
(3)适用于小文件存储,因为 FastDFS 不回对文件进行分块。
因为文件比较小(比如普通级别的图片类应用,文件最大就在几个MB的量级),一来没有必要分块, 二来分块会加重服务器的工作量。
但是,如果把 FastDFS 应用于大文件存储的场景,可能这一特点就会变成缺点。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
以上讲解参考:/mr_smile/article/details/52095966
/question/9124794.html
/lori/archive//05/21/3090134.html
/p/fastdfs
/poechant/article/details/6996047
使用样例见 ;
jQuery上传插件Uploadify使用Demo、本地上传(ssm框架下)