文件系统的发展史
什么是文件系统
文件系统是用来管理和存储文件的
单机文件系统
把文件存储到本地磁盘中。但不同服务器间的数据不能进行共享。
网络文件系统
服务器间的文件可以通过网络进行数据共享。但两台服务器不能同时被访问修改,并且文件数据量的存储量有限
分布式文件存储系统
把大量文件分布到多台服务器上,通过分布式文件存储系统来进行管理
FastDFS
概念
一个轻量级开源的高性能分布式文件存储系统,解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。
架构
客户端
负责实现文件的上传和下载
服务器端
跟踪服务器:负责文件访问的调度和负载均衡(多台)
存储服务器:负责文件的存储,同步和备份
跟踪服务器通过ping-pang来判断存储服务器是否正常
组
每组的存储服务器相互备份且同组服务器的文件完全相同。如果要扩容就增加组而不要增加组内的服务器。
fastdfs文件的上传和下载
文件上传
客户端向跟踪服务器发送上传请求,跟踪服务器检查是否有可用的存储服务器,找到后选择一个合适的存储服务器进行存储,存储后存储服务器会给客户端返回文件存储路径,后客户端就可以根据这个路径找到这个文件。
文件下载
客户端发送请求给跟踪服务器,跟踪服务器查找到存储服务器地址返回给客户端,客户端拿到地址后去找到文件,存储服务器返回文件给客户端。
Nginx整合FastDFS
什么是Nginx
Nginx是一个反向代理服务器
代理
什么是代理
代理就是一个中介
正向代理
正向代理就是代理服务器代理了客户端
比如我们现在要通过谷歌访问外网是访问不到的,那么我们可以通过谷歌去访问一个代理服务器,在由这个代理服务器去访问外网,从而实现我们通过谷歌浏览外网信息。
反向代理
反向代理就是代理服务器代理了服务端
比如我们去租房,我们不需要直接去租房,可以通过找一个房屋中介,这个房屋中介有所有房子信息,从而租到我们想租的房子。
为什么要用Nginx整合FastDFS
我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者余庆为我们提供了Nginx上使用的FastDFS模块(fastdfs-nginx-module)。其使用非常简单。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了192.168.1.80,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.1.30,如果复制没有完成,客户端就用这个ID在192.168.1.30取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。