FastDFS(一)准备阶段

1 什么是FastDFS

  • 文件系统

2 为什么要去使用它

  • 开始我在想我们直接将文件(图片,视频,文本)直接上传到云端服务器,存放在云端的服务器上的某个文件夹下面,然后通过nginx服务器来访问静态资源不就OK了
  • 随之这个疑问的提出,我联想到了实际环境中,会出现服务器的各种异常(宕机,网络波动...),那么那个时候,可能会出现用户访问不了相关的资料以及数据资料的丢失,所以面对这样的情况,我去学习了fastDFS
  • 那么为什么是选择fastDFS呢,这个主要是看业务,如果你和我一样仅仅是存放用户上传的图片,表情包之类的小文件,那么选择fastDFS。如果你是上传大文件(电影),那么建议你使用其他的文件存储系统(googleFS和hdfs)。
  • 这个我在提一下,使用fastDFS,是不会对文件进行分块存储,减少分块合并的开销,使用了socket通信,这个就可以实现文件的快速存储以及读取(不适合大文件)。而通用文件系统NFS和GFS的系统复杂,性能一般。

3 整体架构图

在这里插入图片描述

  • 3.1 client

    • 表示客户端的访问(上传/下载/查询)
  • 3.2 tracker 集群

    • 追踪服务器或调度服务器,作用是负载均衡和调度
    • Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server 不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker
  • 3.3 storage集群

    • storage会采用分组的情况,组内的文件完全一致(就算一台服务器先开机几天,后面加入组内的服务器也会将之前的数据进行同步),不同组之间无法进行通信
    • storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和
    • 一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向 扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
    • Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步 状况、文件上传下载次数等统计信息。

4 文件上传

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

  • 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
  • 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00, 如果配置了store_path1则是M01,以此类推。
  • 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
  • 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创 建时间戳、文件大小、随机数和文件拓展名等信息。

5 文件下载

在这里插入图片描述
tracker根据请求的文件路径即文件ID 来快速定义文件。
比如请求下边的文件:
在这里插入图片描述

  • 通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客 户端访问。
  • 存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到 客户端需要访问的文件。

6 项目的实现

单体应用的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值