1 说明
今天部门举行了技术交流会,让我给部门同事讲点儿东西,我就把这段时间做的文件服务给同事们做了分享,其中文件服务用到了Fast DFS作为中小文件的存储介质。对它产生了一些思考,就把我当时讲的东西回忆如下。
2 Fast DFS简介
Fast DFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储、文件同步和文件访问以及高容量和负载均衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < 文件大小 < 500MB)为载体的在线服务。
Fast DFS系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的Storage Server和group,每个Storage在启动后会连接Tracker,告知自己所属group等信息,并保持周期性心跳。
Storage Server: 存储服务器,主要提供容量和备份服务;以group为单位,每个group内可以有多态Storage Server,数据互为备份。
Client: 客户端,上传下载数据的服务器,也就是我们自己的项目部署所在的服务器。
3 Fast DFS存储策略
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。个人理解在Fast DFS中每一个group为一个卷,group里面有多个storage作为该卷的冗余备份,这一点从上传完文件返回的fileId就可以看得出来。例如:group1/M00/00/02/wKjhyGBN9CqAV5O4ACAYotDQDEc559.jpg
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。 只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。对于Fast DFS来说就是添加一个新的group。
4 Fast DFS上传过程
FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。
Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。
当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。 当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。
其具体的时序图如下:
5 Fast DFS下载过程
客户上传文件成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。
跟上传文件一样,在下载文件时客户端可以选择任意Tracker server。Tracker发送download请求给某个tracker,必须带上文件名信息,tracker从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。
其具体的时序图如下:
6 Fast DFS文件同步
写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。
每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。
storage的同步进度会作为元数据的一部分汇报到tracker上,tracker在选择读storage的时候会以同步进度作为参考
7 选择Fast DFS的技术考量
优点:
- 系统无需支持POSIX(可移植操作系统),降低了系统的复杂度,处理效率更高
- 支持在线扩容机制,增强系统的可扩展性
- 实现了软RAID,增强系统的并发处理能力及数据容错恢复能力
- 支持主从文件,支持自定义扩展名
- 主备Tracker服务,增强系统的可用性
缺点: - 不支持断点续传,对大文件将是噩梦(Fast DFS不适合大文件存储)
- 不支持POSIX通用接口访问,通用性较低
- 对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略
- 同步机制不支持文件正确性校验,降低了系统的可用性
- 通过API下载,存在单点的性能瓶颈
8 问题 Fast DFS不适合大文件存储
文件服务解决方案:
1、引入大文件服务器安装Samba,将文件存至Samba中。
2、将大文件切分为小文件存储至Fast DFS中,下载时将小文件合并下载以获得完整数据文件。
3、当大文件数量不多时,将直接落地硬盘。
目前文件服务正在测试三种方案哪个更适合、更经济。
最后
以上就是大力鼠标最近收集整理的关于对Fast DFS的一些思考1 说明2 Fast DFS简介3 Fast DFS存储策略4 Fast DFS上传过程5 Fast DFS下载过程6 Fast DFS文件同步7 选择Fast DFS的技术考量8 问题 Fast DFS不适合大文件存储的全部内容,更多相关对Fast内容请搜索靠谱客的其他文章。
发表评论 取消回复