一、FastDFS简介
FastDFS是一款开源的轻量级分布式文件系统,最早在ali,为易道用车架构师余庆所写。它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。FastDFS为互联网应用量身定做,追求高性能和高扩展性,更适合称作应用级的分布式文件存储服务。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,通用性较低。
在语言支持方面,目前提供了C、java、php、.NET的API。
现应用在jd、taobao、58、uc、51cto。
二、FastDFS用途
1)FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。
2)FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储 ,支持存储服务器在线扩容。
3)FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)。
三、FastDFS工作机制
1. 集群架构图
FastDFS集群架构由追踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成。
tracker server:主要做调度工作,在访问中起负载均衡作用,在内存中记录集群中group和storage server的状态信息,是连接client和storage server的枢纽,因为相关信息全部在内存中,tracker server的性能非常高(它本身所需负载很小),一个较大的集群中(如上百个group)有3台就足够。
storage server:文件和文件属性(如metadata)都保存在该server上,存储服务包括文件存储,文件同步,提供文件访问接口,同时以key-value的方式管理文件的元数据。
FastDFS架构解读
- 两个角色,tracker server和storage server,不需要存储文件索引信息。
- 所有服务器都是对等的,不存在Master-Slave关系。
- 存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)。
- storage集群中,组(或叫卷)和组之间不通信是相互独立的,storage主动向tracker汇报状态,所有组的容量累加就是整个存储系统中的文件容量,一个组可由