利用FastDFS搭建图片服务器(一)

上回我们说到,可以通过程序将图片存放到某个盘符下,然后通过配置Nginx,达到高并发访问的目的,但现在我提一个问题:

如果你把图片存入到某个盘符,这个盘满了怎么办?

怎么可能满呢?好几百G呢?在互联网项目中好几百G的图片算个啥?还不是过段时间就满的事儿?

咱不说访问,就说说存储:满了怎么办?加盘?再满了呢?你加了盘怎么访问之前的数据?

所以:没招了,那今天我们提供一种解决方案:通过FastDFS(分布式文件存储系统),听名字就老高大上了。

首先它好在哪儿?---分布式

分布式就意味着:节点是可以随意添加和减少的,是可以有容错容灾功能滴(比如盘符坏了几个,某个机房着火了,机器没了),天灾人祸的,谁也说不好。

那什么是文件系统呢?你的电脑就用了文件系统,不信你看!

算了,图片粘了好几遍都上传不了,就不让你们看了,你可以打开我的电脑,然后右键某个盘符,你看是不是有个文件系统:NTFS

一、什么是FastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

二、FastDFS架构


这个图大家一看,貌似也不明白,其实我们每个访问的客户端都是Client,后台FastDFS由两部分组成,第一部分叫做Tracker,另一部分叫做Storager,根据名字基本也明白他们的作用了,举个栗子!

你去一个古老的图书馆借书,这个图书馆有很多的藏书,都是几层楼那么高的那种。


那你要找一本你想要的书估计的猴年马月了,怎么办呢?图书馆一般的做法是:

先去查找你要的书属于哪个分类,大分类下有小分类,再分,再分。。。。。最后就可以找到你要的那本书了,像这么一个查询系统,就是Tracker,然后让Tracker去找你要的内容。

图中是一个Tracker集群,一旦有很多人过来还书或者借书,需要使用很多Tracker来完成。

Storager就好比是图中的一个个书架,书太多了就再追加一组,每一组都有一主一备(主备里面的内容是相同的,一台挂了,另一台赶紧顶上),不同的组之间内容是不同的,如果相同那还要那么多机器作甚啊。

知道这些以后就可以看看书面的内容了,本来不想粘贴的:

        FastDFS架构包括Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

        Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

        Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。

三、文件上传流程


       客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

group1/M00/00/00/wKgZgVl2Lx6AJGGNAAHY4S_5XfM096_big.jpg

组名:

      文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。

虚拟磁盘路径:

      storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。

数据两级目录:

     storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:

      与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

其实说白一下:group1/M00/00/00/  这些不就是我们图书馆的大小分类吗?

wKgZgVl2Lx6AJGGNAAHY4S_5XfM096_big.jpg 不就是我们的上传的文件名字吗?

有那么多分组是考虑到数据多了好区分,好管理,图片名字搞那么长无非是不想让名字有重复。

老师?我们上传一个图片还需要做这么多工作?No!

这些内容都是FastDFS自动生成的,无需我们管理,文件上传成功后,会返回一个链接,该链接如下:


四、文件下载流程

tracker根据请求的文件路径即文件ID来快速定义文件。

group1/M00/00/00/wKgZgVl2Lx6AJGGNAAHY4S_5XfM096_big.jpg

1.通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。

2.存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

理论部分到此为止,本来是要讲如何如何搭建的,啰嗦这就到这个点儿了,如果你发现自己被骗了,请给我点个赞,这样我就知道了,想看如何搭建的朋友,请看下一篇文章,保证不罗嗦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容