分布式存储FastDFS介绍

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 分布式存储FastDFS介绍

分布式存储FastDFS


1 什么是分布式存储


分布式存储简单的来说,就是将数据分散存储到多个存储设备(服务器)上。


传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。


分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。


经典的分布式文件系统介绍:


http://os.51cto.com/art/201209/357433.htm


2 FastDFS


2.1 什么是FastDFS


FastDFS是一款开源的、分布式文件系统(Distributed File System), 由淘宝开发平台部资深架构师余庆开发。


它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量存储和负载均衡的问题。


FastDFS是通过纯C实现,支持Linux, FreeBSD等Unix系统类Google FS, 不是通用的文件系统,只能够通过专有API访问,目前提供了C,Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性 FastDFS可以看做是基于文件的key-value存储系统,称为分布式文件存储服务更为合适。


FastDFS相关资源:


开源项目主页:https://code.google.com/archive/p/fastdfs/


源码下载:fastdfs.sourceforge.net


ChinaUnix论坛版块:http://bbs.chinaunix.net/forum-240-1.html


2.2 架构简析



我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的基本架构:


① 首先客户端client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的;


② Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client;


③ 然后 client 再通过这些信息连接到这台Storage Server,将要上传的文件传送到给 Storage Server上。


FastDFS服务端有两个重要角色:跟踪器(tracker)和存储节点(storage):


跟踪器主要做调度工作,在访问上起负载均衡的作用


存储节点存储文件,完成文件管理的所有功能


Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。


多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。


Storage Server 是分成多个 Group(组),每个 Group 中的Storage 都是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、200GB、300GB,


那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备份的意思。


进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin( 轮训) 、load balanced( 负载均衡) 或指定 Group 的方式。


另一点相对于MS( Master-Slave) 模式的优势,不仅 master 有上面可能提到的单点故障问题,而且 client 与 master 之间可能会出现瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据最终是与一个available 的 Storage Server 进行传输的。


简单总结一下,FastDFS的特点包括:


高可靠性:无单点故障


高吞吐量:只要 Group 足够多,数据流量是足够分散的


3 FastDFS集群 - (了解内容)



简图



  1. Tracker集群


Tracker server之间是相互平等关系同时提供服务


○ Tracker server不存在单点故障。


客户端请求Tracker server采用轮询方式,如果请求的


tracker无法提供服务则换另一个tracker。


  1. Storage集群


○ Storage集群采用了分组存储方式, 由一个或多个组构成


○ 集群存储总容量为集群中所有组的存储容量之和


一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系


○不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。


○ 一个组的存储容量为该组内存储服务器容量最小的那个


  1. FastDFS的扩容分纵向扩容与横向扩容


○ 横向 扩容


增加容量


添加group组


○ 纵向扩容


数据备份


存储节点中容量最小的那个


当前组的最大容量


所有存储节点组名必须一样


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
27579 4
Hadoop入门(一篇就够了)
|
7月前
|
存储 分布式计算 负载均衡
数据分布式存储:在海量数据面前,我们如何站稳脚跟?
数据分布式存储:在海量数据面前,我们如何站稳脚跟?
1085 1
|
7月前
|
存储 数据采集 数据挖掘
《数据库数据冗余大揭秘:问题与解决方案全解析》
数据冗余是数据库管理中的常见问题,如同家中堆积的杂物,虽看似无害,却会占用存储空间、降低查询效率并增加维护难度。文章分析了数据冗余的成因,如设计不合理、业务需求变化及数据导入导出等,并提出了解决方案,包括数据库规范化设计、数据清洗整合、建立数据字典及优化业务流程。通过实际案例,展示了处理数据冗余对提升数据库性能和业务效率的重要性。重视数据冗余问题,能让数据库更高效地支持业务发展。
458 0
|
存储 网络安全 API
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
2060 2
|
存储 消息中间件 缓存
Lustre架构介绍的阅读笔记-NFS兼容性
Lustre是分布式NFS系统,融合了分布式系统和NFS特性。它支持线性扩展容量和性能,提供POSIX语义,隐藏复杂存储细节。关键技术涉及分布式计算、缓存、锁、事务、通信(RPC、消息队列、同步/异步模式)、选举、任务调度、健康检查、负载均衡、集群管理和QoS。数据一致性、复制(副本、EC)、热点管理及多种上层协议(如NFS、S3)也是重点。分布式存储通过扩容提升读写带宽和IOPS。
394 1
|
存储 负载均衡 网络协议
FastDFS——从入门到入土
FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据存储和负载均衡等问题。特别适合以中小文件为载体的在线服务,如相册网站、视频网站等等
|
JSON 安全 API
⚡什么是 OpenAPI,优势、劣势及示例
OpenAPI 是一个用于描述RESTful API的标准,它提供了一个接口,使得人和机器无需源代码或文档就能理解服务。它定义了API的结构,与语言无关,适用于REST API。OpenAPI始于Swagger项目,后来成为OpenAPI倡议的一部分,由Linux基金会管理,得到了众多公司的支持。OpenAPI流行的原因包括其语言无关性、可读性、社区支持和工具生态系统。它使用JSON格式,支持各种数据类型,并具有严格定义的结构。虽然有其他如RAML和API Blueprint的竞争格式,但OpenAPI的广泛采用使其成为行业标准。
|
存储 应用服务中间件 测试技术
fastdfs-nginx-module的安装与部署
fastdfs-nginx-module的安装与部署
1541 0
fastdfs-nginx-module的安装与部署
|
运维 监控 持续交付
微服务架构的概念、特点、优缺点以及最佳实践
微服务架构的概念、特点、优缺点以及最佳实践
5380 1