1. 简介
- 概念
- FastDFS是阿里巴巴开源的一套轻量级的分布式文件系统,它对文件进行管理
- FastDFS的源代码由C语言开发,目前可运行在Linux,FreeBSD,Unix等类操作系统上
- 使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
- 解决问题
- FastDFS解决了大数据量文件存储和读写分离,备份容错,负载均衡,动态扩容等问题
- 功能
- 文件存储、文件同步、文件访问(文件上传、文件下载)等
- 适用场景
- 特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
2. FastDFS主要特性
- 为互联网量身定制,海量数据文件存储。
- 高可用(同组备份机制)。
- FastDFS不是通用的文件系统,只能通过api来访问,目前提供c,java,php客户端。phtyon由第三方开发者提供。
- FastDFS可以看作是基于key/value pair存储系统,也许称为分布式文件存储服务更合适。
- 支持高并发
3. FastDFS提供的功能
upload
:上传文件upload_appender
:上传appender文件,后续可已对其进行append操作upload_slave
:上传从文件download
: 下载文件delete
:删除文件append
:在已有文件后追加内容set_metadata
:设置文件附加属性get_metadata
:获取文件附加属性
4. FastDFS的特点
- 分组存储、灵活简洁
- 对等结构、不存在单点
- 文件ID有FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server
- 和流行的web server无缝连接,FastDFS已提供apache和nginx扩展模块
- 大、中、小文件均可以很好支持,支持海量小文件存储
- 支持多块磁盘,支持但盘数据恢复
- 支持相同文件内容只保存一份,节省存储空间
- 存储服务器上可以保存文件附加属性
- 下载文件支持多线程方式、支持断点续传
5. 工作原理
- FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
- Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
- Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
- 每个 tracker 节点地位平等,收集 Storage 集群的状态。
- Storage 分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有主从的概念。
6. 文件的上传 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2a79a58f1d1aa5aee7520160b7663ea3.png)
- 客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
7. 文件的下载 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a5f38d1a57cdb2efe44627ca87b41c44.png)
- 客户端下载请求到Tracker服务,Tracker返回给客户端storage的信息,客户端根据这些信息进行请求storage获取到文件。
8. 基本使用
- 在linux中通过docker搭建FastDFS环境,下面是通过Java程序来使用FastDFS
- 引入依赖