简单介绍一下FastDFS?
- 开源的分布式文件系统,主要对文件进行存储、同步、上传、下载,有自己的容灾备份、负载均衡、线性扩容机制;
- FastDFS架构主要包含Tracker(跟踪) server和Storage(组,卷) server。客户端请求Tracker server进行文件上传、下载的时候,通过Tracker server调度最终由Storage server完成文件上传和下载。
- Tracker server:跟踪器或者调度器,主要起负载均衡和调度作用。通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。
Storage server:存储服务器,作用主要是文件存储,完成文件管理的所有功能。客户端上传的文件主要保存在Storage server上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统去管理文件。
- 存储服务器采用了分组/分卷的组织方式。
- 整个系统由一个组或者多个组组成;
- 组与组之间的文件是相互独立的;
- 所有组的文件容量累加就是整个存储系统的文件容量;
- 一个组可以由多台存储服务器组成,一个组下的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用;
- 在组内增加服务器时,如果需要同步数据,则由系统本身完成,同步完成之后,系统自动将新增的服务器切换到线上提供使用;
- 当存储空间不足或者耗尽时,可以动态的添加组。只需要增加一台服务器,并为他们配置一个新的组,即扩大了存储系统的容量。
为什么要使用FastDFS作为你们的图片服务器?
首先基于fastDFS的特点:存储空间可扩展、提供了统一的访问方式、访问效率高、容灾性好 等特点,再结合我们项目中图片的容量大、并发大等特点,因此我们选择了FastDFS作为我们的图片服务器;Nginx也可以作为一台图片服务器来使用,因为nginx可以作为一台http服务器来使用,作为网页静态服务器,通过location标签配置;在公司中有的时候也用ftp作为图片服务器来使用。
FastDFS中文件上传下载的具体流程?
客户端上传文件后生成一个file_id,返回给客户端,客户端利用这个file_id结合ip地址,生成一个完成图片的url,保存在数据库中。生成的那个file_id用于以后访问该文件的索引信息。
FastDFS文件下载的流程