文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

分布式存储FastDFS详解

2024-11-29 20:11

关注

图片

场景切入

在大型网站中由于用户数和存储内容较多,存在大容量文件存储的场景,例如图片、视频、日志、文件等。如何保证这些资源的高可用性和快速访问,从而提升用户体验和网站性能?

图片

分布式存储的由来

我们知道,根据业务体量的增大,一般分布式的设计是从单体应用演进开始的。最初,在单体项目中,

图片

早期用户量可能比较少,整个系统的一个架构:服务代码跟我们的文件资源信息都存储在了一个服务器上面。

随着用户量越来越多,那么存储文件越来越多,本身服务器可能就只有比如:100G的磁盘空间,文件服务器里面存储的东西越来越多。那么,它会影响到整个服务器的资源的一个分配。

有人想,把我们这个文件服务器单独的给拆出来,作为一个单独服务器

图片

上边实现了资源文件和代码的解耦。但是资源文件的存储量美誉得到根本性的解决。

于是,我们就需要拓宽服务器,我拓宽到10台,20台。。。其实就是要说的这个分布式文件存储系统。

图片

常见的分布式存储框架

图片

本章重点介绍FastDFS。

FastDFS 分布式存储

简介

官方介绍:

图片

FastDFS是一个开源的分布式文件系统,特别适合于大容量文件存储的场景,例如图片、视频、日志、文件等。是一个开源的高性能分布式文件系统,专为解决大容量存储和负载均衡问题而设计。

中文官网[1]英文官网[2]学习地址[3]下载地址[4]源码包[5]性能测试[6]Gitee主页[7]

它具备以下核心功能:

  1. 文件存储:能够存储大量数据文件。
  2. 文件同步:确保文件在系统内的多个副本之间保持一致。
  3. 文件访问:支持用户上传和下载文件。

FastDFS 功能特性

FastDFS 架构及工作原理

架构设计:

图片

工作原理:

  1. 文件存储:保存上传的文件数据。
  2. 文件同步:在多个存储节点之间同步文件,以保证数据一致性。
  3. 提供文件访问接口:允许用户通过API进行文件操作。
  4. 管理元数据:存储文件的相关属性,以键值对的形式,例如图像的宽度可以表示为 width=1024。

问题思考

如何上传文件?

图片

上传文件过程描述:

  1. 客户端需要上传或下载文件,向FastDFS系统发起请求。
  2. 连接到FastDFS的跟踪器服务器。跟踪器负责调度和负载均衡。
  3. 跟踪器接收到客户端的请求后,会根据当前的负载情况和存储策略,选择一个合适的存储服务器。
  4. 跟踪器将所选存储服务器的IP地址和端口号发送给客户端。
  5. 客户端根据跟踪器提供的IP地址和端口号,直接与选定的存储服务器建立连接。
  6. 客户端将文件内容和元数据发送给存储服务器。元数据可能包括文件卷名(volume)和文件名等信息。
  7. 存储服务器接收到文件后,将其保存在本地磁盘上,并根据FastDFS的配置创建多个副本,可能在同一个存储组内的其他服务器上。
  8. 文件存储完成后,存储服务器会向客户端发送响应,确认文件上传成功或提供下载链接。
  9. 客户端收到存储服务器的响应后,完成文件上传或下载操作。

如何下载文件?

图片

文件下载过程描述:

  1. 客户端想要获取存储在FastDFS系统中的文件,向系统发起下载请求。
  2. 发送请求到FastDFS的跟踪器服务器。跟踪器负责管理文件的元数据,并知道文件存储的位置。
  3. 跟踪器接收到客户端的请求后,根据文件的卷名(volume name)和文件名(filename)查找文件存储信息。
  4. 跟踪器确定文件所在的存储服务器,并将该服务器的IP地址和端口号返回给客户端。
  5. 客户端使用跟踪器返回的IP地址和端口号,直接与存储服务器建立连接。
  6. 客户端向存储服务器发送文件下载请求,包括卷名和文件名。
  7. 存储服务器接收到请求后,根据提供的卷名和文件名检索文件。
  8. 一旦找到文件,存储服务器将文件内容发送回客户端。
  9. 客户端接收到文件内容,下载流程完成。

如何保证高可用?

FastDFS设计为一个多副本分布式文件系统。多副本机制是FastDFS保证数据可靠性和容错能力的关键。

图片

几个关键点:

通过以上设计提高容错能力和单点故障问题,保证高可用。

如何解决性能瓶颈?

我们在架构图中发现,Tracker 也是分布式部署,便于扩缩容。面对访问激增的问题,可通过增加节点的方式应对。

图片

几个关键点:

  1. 通过增加Tracker服务器的数量,可以分担请求调度和负载均衡的任务,从而提高系统的整体性能。
  2. 通过增加更多的存储服务器或存储卷来扩展存储容量,减少单个服务器的负载。
  3. 根据业务需求选择合适的同步策略,权衡同步复制的性能开销和异步复制的延迟。

总结

文章主要介绍分布式存储FastDFS 结构设计和原理和使用过程中的一些问题思考。

使用过程中FastDFS几个关键特性的优缺点对比:

特性

优点

缺点

架构设计

易于扩展、负载均衡

同步延迟

冗余备份

支持在线扩容

存储空间利用率不高

高性能

C语言编写,执行效率高

单点性能瓶颈

内存管理

- 内存零拷贝,减少系统开销

- 对内存要求较高

来源:码易有道内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯