概述
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 DFS的一些思考1 说明2 Fast DFS简介3 Fast DFS存储策略4 Fast DFS上传过程5 Fast DFS下载过程6 Fast DFS文件同步7 选择Fast DFS的技术考量8 问题 Fast DFS不适合大文件存储所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复