当前位置: 首页 > 原理解释

fastdfs原理与过程-原理解析与过程

FDFS 这玩意儿,说白了就是咱们网页上那些动态资源站(CDN)的“大肚能容,小肚能存”的良心。它不像传统服务器如此死板,就是个有脾气的仓库管理员。 大量人第一次听,会认定它挺复杂,满脑子都是 API、put 和 get。
实际上不然,它把那个让人头疼的“分片上传”和“分布式存”给抽象出来了。你要把一个大文件扔进它怀里,它不会直接把你那份文件拷贝十万遍去各个机房里,那样硬盘和流量都得炸。它那个核心逻辑,就是把大文件切块,让不同的机器负责不同的块,最终再拼回来,这就像把一袋大米拆成小袋,分送不同的人去不同地方,有人负责东北块,有人负责山东块,最终再把小袋子塞回罐子里,人肉拼凑出整个的大袋,既省了力气,又不用每次都搬到主仓库。 想看数据?咱就把工夫轴拉出来,看看它是如何把“小文件”转成“大文件”的。 起初是上传。当你点击保存一个几 MB 的 PDF 时,FDFS 不会直接塞进一个庞大的 Object URL。它得先给你分片。
比如这个 PDF 是 40MB,它可能切成 20 个 2MB 的小片。
这时候有个事儿得注意,你上传的时候得指定分片策略,比如按顺序切,要么随机切。
要是随机切,赶明儿下载的时候你得先猜对哪几个块,这挺好办乱。但一旦切好了,上传速度往往比下载快,出于它只负责往硬盘扔东西,数据洪流经过它时,它就是个宁静的管道,不会像某些中间件那样疯狂反压。 接着是存环节。
这是它最牛的地方。它赞成分片存,你能够把 20 个分片存到不同的节点上。你存了 1 个,它可能验证通过;存了 2 个,依然通过;再存 3 个,依然通过。
这时候,FDFS 会生成一个临时的 URL,带着这些分片的哈希值。
比如"static/file123_abc123.pdf"。
这个链接就是临时链接,专用于传文件。等你上传好了,你只需求把这个 URL 发给用户,要么你自己拿去慢慢建目录。 用户来了,要下载文件。
这时候 FDFS 就要做点“工作”了。它先从对象列表里搜一下这个文件,确认它存有。
然后它得找 20 个分片,各自找一个节点,把数据拉过来拼起来。
这个过程叫“重建”。它要是连成一个链表呢?那重建就慢,出于它得一个个找块、一个个合并。
故此它赞成几种链接策略:分片顺序、分片哈希、就连线段树。分片哈希的推荐度最高,出于文件不像人肉拼的,数据分布比较散,万一某些节点挂了要么丢了,其他节点还能顶上,不好办断链。 还有个细节,就是删除。你删了文件,FDFS 得把对应的那 20 个分片从各个节点的硬盘里给抹掉。
这时候它会去查存节点,要是节点里还有那块,就删了;要是节点里没那块,说明文件早就被别的用户删了,它就把这块也识别为无效,自动删掉。
要是节点里两块都删了,那说明这块根本不存有,它也不管。 说到数据量,咱具体算笔账。假设你每天上传一个 500MB 的大文件,切成 10 个块,每个块 50MB。
这个文件得存有 10 个节点上。
要是 10 个节点各自自己存,硬盘压力那是指数级爆炸,瞬间就扛不住。但 FDFS 是分片存,只要 10 个节点的大盘加起来能装下这 500MB,整个系统就能跑。
这里有个风险点,就是要是某个节点挂了,剩下的 9 个节点还能扛住。但要是之前上传的时候节点没存,目前挂了,那这 10 个分片就全丢了,文件也就彻底没了。
这也是它为啥强调节点稳定性,要么为啥你要定期备份这些分片。 再说说扩容。
要是你把一个大文件从 10 个节点切到 20 个节点,FDFS 得重新生成 URL。它不会像别的工具那样把旧 URL 直接改成新的(那样会缓存着旧数据),而是会用到“对象缓存”要么“重建”机制。它会先尝试从现有的 10 个节点里找数据,要是找不到,就新建 10 个节点。新节点的数据上传回源节点,原来的 10 个节点数据不变,这样就避免了数据漂移。别看这样多了 10 个节点,但数据是准的,没有丢失。 最终得提一下,它不光存文件,还能存对象。
比如你存一个视频文件,它存的不是视频流本身,而是文件的元数据、缩略图、就连生成视频的指令。
这在直播弹幕系统里特别有用。弹幕来了,你存个 GIF,FDFS 存个缩略图,后端用缩略图去算下一帧去生成 GIF,既省带宽,又能快速生成。 总结下来,FDFS 就活在这套“分片、存、重建、清理”的循环里。它不是啥能瞬间传完几千兆的魔法,而是个稳重的老伙计。对于那些时常上传、时常删、又时常要扩容的大文件存场景,它比直接存对象链接要稳,比传统存要省资源。你要是认定它慢,那大约率是你上传忒多了,要么节点配置没对上,而不是它本身不中。
相关标签:

猜你喜欢

热门阅读

  • 赖柴尔定理-赖柴尔定理
  • 迪拜哪个国家的城市?-迪拜在哪国城市
  • 李毅吧番号及出处-李毅吧番号及出处
  • 贴春联的由来简介50字-春联由来简述
  • 思乡的名言和出处-思乡名言及出处

其他分站