第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍( 三 )


在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务 。当存储空间不足或即将耗尽时,可以动态添加卷 。只需要增加一台或多台服务器 , 并将它们配置为一个新的卷,这样就扩大了存储系统的容量 。
采用分组存储方式的好处是灵活、可控性较强 。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择 。一个分组的存储服务器访问压力较大时 , 可以在该组增加存储服务器来扩充服务能力(纵向扩容) 。当系统容量不足时,可以增加组来扩充存储容量(横向扩容) 。
2.3 Storage状态收集Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息 。
2.4 FastDFS的上传过程FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用 。
【第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍】Storage Server会定期的向Tracker Server发送自己的存储信息 。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的 , 所以客户端上传时可以选择任意一个Tracker 。
当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server 。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录 。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件 。

第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

文章插图
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息 。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录 , 文件名 。
  • 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存 。
  • 虚拟磁盘路径:storage配置的虚拟路径 , 与磁盘选项store_path*对应 。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推 。
  • 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件 。
  • 文件名:与文件上传时不同 。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息 。
2.5 FastDFS的文件同步写文件时,客户端将文件写至group内一个storage server即认为写文件成功 , storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server 。
每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度 , 以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录 , 所以最好能保证集群内所有server的时钟保持同步 。
storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考 。
2.6 FastDFS的文件下载客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件 。
第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

文章插图
跟upload file一样 , 在downloadfile时客户端可以选择任意tracker server 。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息 , 然后为该请求选择一个storage用来服务读请求 。tracker根据请求的文件路径即文件ID 来快速定义文件 。
比如请求下边的文件:
group1/M00/02/44/Swtdssdsdfsdf.txt
  1. 通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1 , 并选择合适的存储服务器提供客户端访问 。
  2. 存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件 。

第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

文章插图

推荐阅读