分布式存储FastDFS(自用)

1 分布式存储FastDFS

1.1 什么是分布式存储

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

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

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

1.2 FastDFS

1.2.1什么是FastDFS

FastDFS是一款开源的、分布式文件系统(Distributed File System), 由淘宝开发平台部资深架构师余庆开发。它对文件进行管理,功能包括:**文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)**等,解决了大容量存储和负载均衡的问题。

1.2.2架构简析

fastdfs架构
FastDFS服务有三个⻆⾊:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)
我们可以通过 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 足够多,数据流量是足够分散的

1.2.2.1 Tracker server

Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知⾃⼰所属的group等信息,并保持周期性的⼼跳,tracker根据storage的⼼跳信息,建⽴group==>[storage server list]的映射表。

1.2.2.2 Storage server

Storage server(后简称storage)以组(卷,group或volume)为单位组织,⼀个group内包含多台storage机器,数据互为备份,存储空间以group内容量最⼩的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。以group为单位组织存储能⽅便的进⾏应⽤隔离、负载均衡、副本数定制(group内storage server数量即为该group的副本数),⽐如将不同应⽤数据存到不同的group就能隔离应⽤数据,同时还可根据应⽤的访问特性来将应⽤分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很⻓。group内每个storage的存储依赖于本地⽂件系统,storage可配置多个数据存储⽬录,⽐如有10块磁盘,分别挂载在/data/disk1-/data/disk10,则可将这10个⽬录都配置为storage的数据存储⽬录。storage接受到写⽂件请求时,会根据配置好的规则,选择其中⼀个存储⽬录来存储⽂件。为了避免单个⽬录下的⽂件数太多,在storage第⼀次启动时,会在每个数据存储⽬录⾥创建2级⼦⽬录,每级256个,总共65536个⽂件,新写的⽂件会以hash的⽅式被路由到其中某个⼦⽬录下,然后将⽂件数据直接作为⼀个本地⽂件存储到该⽬录中。

1.2.2.3 Client

FastDFS向使⽤者提供基本⽂件访问接⼝,⽐如monitor、upload、download、append、delete等,以客户端库的⽅式提供给⽤户使⽤。

1.2.3 fastdfs三个角色之间的关系

追踪器 ( Tracker ) - 管理者 - 守护进程
管理存储节点
存储节点 - storage - 守护进程
存储节点是有多个的
客户端 - 不是守护进程, 这是程序猿编写的程序
文件上传
文件下载
文件上传
在这里插入图片描述
在这里插入图片描述

文件下载
在这里插入图片描述

过程

  1. 追踪器
    最先启动追踪器
  2. 存储节点
    第二个启动的角色
    存储节点启动之后, 会单独开一个线程
    汇报当前存储节点的容量, 和剩余容量
    汇报数据的同步情况
    汇报数据被下载的次数
  3. 客户端
    最后启动
    上传
    连接追踪器, 询问存储节点的信息
    我要上传1G的文件, 询问那个存储节点有足够的容量
    追踪器查询, 得到结果
    追踪器将查到的存储节点的IP+端口发送给客户端
    通过得到IP和端口连接存储节点
    将文件内容发送给存储节点
    下载
    连接追踪器, 询问存储节点的信息
    问一下, 要下载的文件在哪一个存储节点
    追踪器查询, 得到结果
    追踪器将查到的存储节点的IP+端口发送给客户端
    通过得到IP和端口连接存储节点
    下载文件

1.2.4配置文件

  1. tracker 配置文件
    在这里插入图片描述
  2. storage 配置文件
    在这里插入图片描述
    在这里插入图片描述
  3. 客户端配置文件
    在这里插入图片描述

1.2.5 多台主机部署

在这里插入图片描述

1.2.6 上传下载实现

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值