
首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。FastDFS的系统结构图如下:
如上图,FastDFS的两个核心概念分别是:
Tracker(跟踪器)
Storage(存储节点)
Tracker主要做调度工作,相当于mvc中的controller的角色,在访问上起负载均衡的作用。跟踪器和存储节点都可以由一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务,其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。Tracker负责管理所有的Storage和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表,Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。
Storage采用了分卷[Volume](或分组[group])的组织方式,存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。一个卷[Volume](组[group])可以由一台或多台存储服务器组成,一个组中的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。更多原理性的内容可以参考这篇blog,介绍的很详细:分布式文件系统FastDFS设计原理
接下来就具体看一下FastDFS的整个下载安装过程~
Storage Server
存储服务器,负责文件存储,文件同步/备份,提供文件访问接口,文件元数据管理。以 group 为单位,每个 group 内可以有多台 Storage Server,数据互为备份,达到容灾的目的。每个 Storage 在启动以后会主动连接 Tracker,告知自己所属 group 等存储相关信息,并保持周期性心跳。
Group
组,也可称为 Volume 卷。同组内服务器上的文件是完全相的,同一组内的 Storage Server 之间是对等的,文件上传、删除等 *** 作可以在任意一台 Storage Server 上进行。
Metadata
文件系统中存储的数据分为数据和元数据两部分,数据是指文件中的实际数据,即文件的实际内容;而元数据是用来描述一个文件特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等。如果文件是一张,元数据就是的宽,高等等。
FastDFS 存储策略
为了支持大容量存储,Storage 存储服务器采用了分组(或分卷)的方式。存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。一个组可以由一台或多台存储服务器组成,一个组下的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用。
当组中增加了新的服务器时,系统会自动同步已有的文件,同步完成后,系统自动将新增的服务器切换至线上提供服务。
当存储空间不足时,可以动态添加组,只需要增加一台或多台服务器,并将它们配置为一个新的组,即可扩大存储系统的容量。当你的某个应用或者模块(对应的 group)的并发过高的时候,可以直接在 group 中增加若干个 Storage 来实现负载均衡。
为了避免单个目录下的文件数太多,当 Storage 第一次启动时,会在每个数据存储目录中创建 2 级子目录,每级 256 个,总共 65536 个目录,上传的文件会以 hash 的方式被路由到其中某个目录下,然后将文件数据直接作为一个本地文件存储到该目录。FastDFS本身并不支持视频预览功能,但是可以通过配合使用FFmpeg等开源工具来实现视频预览的功能。具体实现方法是在FastDFS中存储视频文件后,将其URL传递给前端页面,前端页面通过HTML5的video标签播放视频,并将视频源地址指向FastDFS的URL,同时通过FFmpeg等工具来实现视频格式转换和预览缩略图生成等功能。需要注意的是,视频预览功能的实现需要考虑到网络带宽、服务器性能、视频编码等因素,以确保视频预览的流畅和稳定。配置文件没有写全
解决方法:该报错表示没有配置(multipartResolver)Bean,检查配置文件,发现在配置文件中没有添加该配置
二:前端上传时的请求格式发送错误
解决办法:(angular写法)
文章知识点与官方知识档案匹配
Java技能树首页概览
86148 人正在系统学习中
打开CSDN,阅读体验更佳
FastDFS蛋疼的集群和负载均衡(三)之上传测试_cmazxiaoma的博客-CSDN
/usr/local/include/fastdfs修改成/usr/include/fastdfs /usr/local/include/fastcommon修改成 /usr/include/fastcommon 因为我们在安装/makesh install FastDFS的时候,安装在/usr/include/fastdfs了。fastcommon同理。 安装nginx依赖
继续访问
淘淘商城——使用FastDFS-Client客户端进行上传的测试
第二件事:在taotao-manager-web工程的src/main/resources目录下新建一个resource文件夹并在它下面创建fast_dfsconf文件,fast_dfsconf文件中输入tracker所在的设备的IP及端口,由于我的tracker是在ip为19216825133的虚拟机上,因此我这里
继续访问
搭建FastDFS文件上传测试
FastDfs环境搭建 为了测试项目的文件上传问题,搭建一个FastDFS的服务器,仅是为了测试,所以只搭建了简单的fastDFS,配置一个nginx映射到目录,能正常的读取上传文件即可。非常感谢这位老哥的文章,写的很详细。搭建过程还是中遇到一些问题,后面附上解决办法 参考博客:>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)