FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)中小文件(建议范围:4KB < file_size <500MB)等,解决了大容量存储和负载均衡的问题。 底层使用C语言编写。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
作用:
存储管理大量的文件
FastDFS工作流程:
FastDFS分布式文件系统分为三个部分, client客户端(我们项目), trackerService(管理端), storageServer(存储端)
client客户端: 也就是我们的项目调用管理端服务器, 管理端会给我们自动分配一个存储端的IP和端口
我们拿着这个端口去存储, 存储端会返回给我们一个存储后的路径, 文件会自动被存储端重命名. 防止文件重名.
trackerService管理端: 管理端不存储具体文件, 负责管理所有存储端机器的IP和端口以及他们是否启动的状态
一般管理端至少两台机器, 做高可用集群, 双机热备, 做心跳检测, 主机死了备机替代主机工作.
由于管理端会自动分配存储端的IP给我们使用, 所以说管理端具有负载均衡的功能, 这样fastDFS分布式文件系统
才具有负载均衡的功能, 可以承载高并发存储任务.
storageServer存储端:
存储端两台机器为一组, 可以无限扩展, 这样理论上分布式文件系统的容量就可以无限大.
两台为一组, 一台主机一台备机, 平时主机工作备机会向主机发送ping命令, 主机会给备机返回pong命令
如果备机接收到pong认为主机活着, 如果接收不到认为主机死掉会替代主机工作. 这种机制叫做心跳检测可以
保证机器的高可用, 我们向主机存储内容, 主机会将内容发送到备机, 主机和备机存储的内容是一模一样的
这叫冗余存储. 可以进行容灾.
上传交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
下载交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
优点:
1. 有承载高并发存储的功能, 使用的是管理端的负载均衡功能
2. 有高可用的特质: 不管管理端还是存储端都会用心跳检测机制, 实现高可用, 保证服务器任何时间都可以工作
3. 有容灾的特性: 因为主机和备机存储的内容是一样的, 即使主机坏了, 备机中还有一模一样的文件内容.
4. 存储容量理论上无限大, 所以有足够的可扩展性
缺点:
贵, 照比以前简单存储到应用服务器上, 结构更为复杂, 需要的机器规模数更为庞大.
所学即所用,不做无用工。。。