
文章插图
2.1 Tracker集群FastDFS集群中的Tracker server可以有多台,Trackerserver之间是相互平等关系同时提供服务,Trackerserver不存在单点故障 。客户端请求Trackerserver采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker 。
2.2 Storage集群为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式 。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量 。一个卷由一台或多台存储服务器组成,卷内的Storage server之间是平等关系,不同卷的Storageserver之间不会相互通信,同卷内的Storageserver之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的 。一个卷的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的 。卷中的多台存储服务器起到了冗余备份和负载均衡的作用
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务 。当存储空间不足或即将耗尽时,可以动态添加卷 。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量 。
采用分组存储方式的好处是灵活、可控性较强 。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择 。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容) 。当系统容量不足时,可以增加组来扩充存储容量(横向扩容) 。
2.3 Storage状态收集Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息 。
2.4 FastDFS的上传过程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,最后根据以上的信息生成文件名存储文件 。

文章插图
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息 。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名 。
- 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存 。
- 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应 。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推 。
- 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件 。
经验总结扩展阅读
- 韭菜花怎么清洗算干净
- 月饼不放枧水会怎样
- 结婚纪念日名称
- 2023年春节是几九第几天 今年过年会不会下雪
- 黑猫奇闻社第一章怎么过
- 黑猫奇闻社第二章怎么过
- 螃蟹当天不吃怎么放到第二天
- 砂锅第一次使用怎样开锅
- 世界上第一个双奥之城是哪里
- 火影忍者向日葵打鸣人第几集?
