1、1.3 系统基本结构特征1.2.1 轻量级FastDFS服务端只有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。 1.2.2 分组方式为了支持大容量,存储节点(服务器)采用了分卷(或
2、分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。1.2.3 对等结构跟踪器和存储节点都可以由一台
3、或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。1.4 FastDFS上传文件上传文件交互过程:(1) client询问tracker上传到的storage,不需要附加参数;(2) tracker返回一台可用的storage;(3) client直接和storage通讯完成文件上传。1.5 FastDFS下载文件下载文件交互过程:(1) client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);(3) client直接和storage通讯完成文件下载。1
4、.6 Http方式下载文件1.5.1 方式一tracker跳转1.5.2 方式二 非tracker跳转(1)redirect(2)proxy1.7 FastDFS文件名策略FastDFS 中的文件名是在向StorageServer 存储文件时由系统指定的,文件名中包含了VolumeID 和FileID 。也就是说,当客户要读取某个文件时,通过在客户端对文件名进行解析,就可以知道该文件存储在哪个Volume 上和它在StorageServer 中的FileID 。但是此时用户还不能读取文件,因为他不知道Volume 内各个StorageServer 的ip 地址,也不知道应该从Volume 内的
5、哪个StorageServer 中读取。所以用户需手持欲访问的文件的VolumeID 向TrackerServer 询问,TrackerServe 会均衡当前各StorageServer 的IO 负载状况,返回一个最佳的StorageServer 的ip 地址。最后用户与该StorageServer 连接,出示欲访问文件的FileID ,StorageServer 上会维持一个FileID 对应偏移量的表,从而得到欲访问文件的偏移量。文件名包含:源头storage IP地址和文件创建时间戳、文件大小、随机数、文件拓展名FastDFS 的文件名策略将文件存储位置信息隐含在文件名中,从而减少了元数
6、据量,达到了优化小文件存储性能的作用。1.8FastDFS同步机制在FastDFS的服务器端配置文件中,bind_addr这个参数用于需要绑定本机IP地址的场合。只有这个参数和主机特征相关,其余参数都是可以统一配置的。在不需要绑定本机的情况下,为了便于管理和维护,建议所有tracker server的配置文件相同,同组内的所有storage server的配置文件相同。tracker server的配置文件中没有出现storage server,而storage server的配置文件中会列举出所有的tracker server。这就决定了storage server和tracker serv
7、er之间的连接由storage server主动发起,storage server为每个tracker server启动一个线程进行连接和通讯。tracker server会在内存中保存storage分组及各个组下的storage server,并将连接过自己的storage server及其分组保存到文件中,以便下次重启服务时能直接从本地磁盘中获得storage相关信息。storage server会在内存中记录本组的所有服务器,并将服务器信息记录到文件中。tracker server和storage server之间相互同步storage server列表: 1. 如果一个组内增加了新的s
8、torage server或者storage server的状态发生了改变,tracker server都会将storage server列表同步给该组内的所有storage server。以新增storage server为例,因为新加入的storage server主动连接tracker server,tracker server发现有新的storage server加入,就会将该组内所有的storage server返回给新加入的storage server,并重新将该组的storage server列表返回给该组内的其他storage server; 2. 如果新增加一台tracker
9、 server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行。文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器。以文件上传为例,假设一个组内有3台storage server A、B和C,文件F上传到服
10、务器B,由B将文件F同步到其余的两台服务器A和C。我们不妨把文件F上传到服务器B的操作为源头操作,在服务器B上的F文件为源头数据;文件F被同步到服务器A和C的操作为备份操作,在A和C上的F文件为备份数据。同步规则总结如下: 1. 只在本组内的storage server之间进行同步; 2. 源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了; 3. 上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。storage server有7个状态,如下: # FDFS_ST
11、ORAGE_STATUS_INIT :初始化,尚未得到同步已有数据的源服务器 # FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有数据的源服务器 # FDFS_STORAGE_STATUS_SYNCING同步中 # FDFS_STORAGE_STATUS_DELETED已删除,该服务器从本组中摘除(注:本状态的功能尚未实现) # FDFS_STORAGE_STATUS_OFFLINE离线 # FDFS_STORAGE_STATUS_ONLINE在线,尚不能提供服务 # FDFS_STORAGE_STATUS_ACTIVE在线,可以提供服务当storage
12、server的状态为FDFS_STORAGE_STATUS_ONLINE时,当该storage server向tracker server发起一次heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下: 1. storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。storage server A询问追加同步
13、的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_ONLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理; 2. 假设tracker server分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了s
14、torage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据; 3. storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_ONLINE; 4 当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。2.FastDFS优缺点2.1 优点 分组存储,灵活简洁 对等结构,不存在单点 文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server 和流行的web s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1