当前位置:网站首页>Read FastDFS in one article
Read FastDFS in one article
2022-08-03 23:51:00 【on the road of struggle】
目录
FastDFS 介绍
FastDFS 概念
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和**负载均衡**的问题.特别适合以文件为载体的在线服务,如相册网站、视频网站等等.
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、Mechanisms such as online expansion,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务.
FastDFS 作用
Suitable for storing user pictures、视频、文档等文件. 出于简洁考虑,FastDFSThere is no block storage for files,因此不太适合分布式计算场景.
FastDFS 优缺点
优点:
- Suitable for small and medium file storage(建议范围:
4KB<file_size<500MB
) - 主备Tracker服务,增强系统的可用性
- 系统不需要支持POSIX,这样的话就降低了系统的复杂度,使得处理的速度会更高
- 支持主从文件,支持自定义扩展名
- 支持在线扩容机制,增强了系统的可扩展性
- 实现了软RAID,增强了系统的并发处理能力和数据容错恢复能力
缺点:
- 直接按文件存储,The content of the file can be read directly,缺乏文件安全性
- 通过API下载,存在单点的性能瓶颈
- 不支持断点续传,对大文件将是噩梦
- 同步机制不支持文件正确性校验,降低了系统的可用性
- 不支持POSIX通用接口访问,通用性比较的低
- 对跨公网的文件同步,存在着比较大的延迟,需要应用做相应的容错策略
FastDFS 相关概念
FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client).
tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用.Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持Periodic heartbeat,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表.
storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上.Storage server直接利用OS的文件系统调用管理文件.
client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与tracker server或存储节点进行数据交互.FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用.
FastDFS 原理
FastDFS系统拓扑图
FastDFS分为Tracker、Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度.
Tracker、Storage都可以实现集群部署,Tracker的每个节点地位平等,而Storage可以分为多个组,每个组之间保存的文件是不同的,组内部分为多个成员,每个成员保存的内容是一样,组成员地位一致,没有主从概念.
使用FastDFS存储文件优点:可以应对互联网的海量文件存储,一旦文件较多,可以随时横向扩展,且集群的实现也使系统不存在单点故障问题,用户不会因为服务器宕机而无法访问文件资源.
FastDFS核心工作流程
FastDFS 文件上传
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传.
FastDFS 文件下载
Client询问tracker下载文件的storage,参数为文件标识(组名和文件名);
Tracker返回一台可用的storage;
Client直接和storage通讯完成文件下载.
Linux 环境搭建FastDFS
请参考:Centos 搭建FastDFS 分布式文件服务器搭建
Docker 环境搭建FastDFS
请参考: Docker 搭建FastDFS文件系统
SpringBoot 封装FastDFS 功能模块
边栏推荐
- Unity intercepts 3D images and the implementation of picture-in-picture PIP
- 射频芯片ATE测试从入门到放弃之参数测试
- Creo 9.0二维草图的诊断:加亮开放端点
- Zilliz 2023 Fall Campus Recruitment Officially Launched!
- C语言实验十五 文件
- [Paper Reading] TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve
- 全球首款量产,获定点最多!这家AVP Tier1如何实现领跑?
- HNUCM 您好中国
- 关于mnn模型输出的数据杂乱无章问题
- JS get parameter value of URL hyperlink
猜你喜欢
射频芯片(RFIC)的协议之5G及其调制
响应式织梦模板餐饮酒店类网站
栈的压入、弹出序列
全球首款量产,获定点最多!这家AVP Tier1如何实现领跑?
禾匠编译错误记录
POE交换机全方位解读(下)
Minimized installation of debian11
(PC+WAP)织梦模板螺钉手柄类网站
Code Casual Recording Notes_Dynamic Programming_416 Segmentation and Subsetting
Another MySQL masterpiece published by Glacier (send the book at the end of the article)!!
随机推荐
详谈RDMA技术原理和三种实现方式
The Chinese Valentine's Day event is romantically launched, don't let the Internet slow down and miss the dark time
Scala basics [regular expressions, framework development principles]
JS get parameter value of URL hyperlink
射频芯片ATE测试从入门到放弃之参数测试
- the skip/skipif Pytest learning
OPC UA 与IEC61499 深度融合(1)
【杂项】如何将指定字体装入电脑然后能在Office软件里使用该字体?
电子邮件安全或面临新威胁!
The world's first mass production, with the most fixed points!How does this AVP Tier1 lead?
Create function report error, prompting DECLARE definition syntax problem
POE交换机全方位解读(下)
Use tf.image.resize() and tf.image.resize_with_pad() to resize images
win10+cuda11.7+pytorch1.12.0安装
vscode插件设置——Golang开发环境配置
SolidEdge ST8安装教程
Deep integration of OPC UA and IEC61499 (1)
智能管理PoE交换机
使用unbound在RHEL7上搭建DNS服务
【OpenCV图像处理】 图像拼接技术