- 跟踪服务器(tracker server)
tracker server 主要负责调度服务,提供负载均衡
tracker server 将集群中所有存储组和 storage server 的状态信息等存放在内存中
tracker server 是 client 和 storage server 交互的枢纽
storage serve 在启动后会自动连接 tracker,告知自己的 group 信息并保持周期性的心跳,tracker根据 storage 的心跳信息,建立 group==>[storage server list] 的映射表
- 存储服务器(storage server)
storage 上存储了文件的元文件的信息,它直接利用 OS 的文件系统来调用或管理文件
storage 以组或卷(group或volume)来作为单位,一个 group 内包含多台storage ,数据互相备份
利用 group 可以实现数据隔离、负载均衡、应用隔离等功能
数据隔离:将不同应用的数据放在不同 group 下
负载均衡:根据应用的访问特性来将应用数据分配到不同 group 下来做负载均衡
group 内的每台 storage 都依赖于本地文件系统,storage 可以配置多个存储目录,当收到写请求时,会根据配置好的规则来选择其中一个存储目录来存储文件
为了避免单个目录下的文件数太多,在storage第一次启动时,会在每个数据存储目录里创建2级子目录,每级265个,总共65535个文件。新写的文件会以hash的方式路由到某个子目录下。然后将文件数据直接作为一个本地文件存储到该目录中
- 客户端(client)
作为业务请求发起方,通过专门接口,使用TCP/IP协议与tracker server或者storage server进行数据交互
FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用
Tracker集群
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系,同时提供服务
Trackerserver不存在单点故障。客户端请求Trackerserver采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker
Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息
Storage集群
为了支持大容量,storage server采用了分组的形式。存储系统由一个或多个group组成,group之间的文件是相互独立的,所有group内的文件容量累加就是整个存储系统中的文件容量
一个group内包含一台或多台storage server,group内的storage是平等关系,不同group内的storage不会相互通信,同group内的storage之间