1 分布式存储FastDFS

1.1 什么是分布式存储

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

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

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

1.2 FastDFS

1.2.1什么是FastDFS

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

1.2.2架构简析


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 上传下载实现


分布式存储FastDFS(自用)相关推荐

  1. 分布式存储fastdfs安装使用

    1.下载地址https://github.com/happyfish100/fastdfs https://github.com/happyfish100/fastdfs/wiki安装辅助说明文档 2 ...

  2. Linux运维架构师、SRE技术图谱

    Linux运维架构师.SRE技术图谱 Web服务器: apache, tomcat, nginx, lighttpd, varnish 监控: nagios. ganglia. cacti. zabb ...

  3. Docker 搭建容器合集

    文章目录 搭建nacos(单节点) 搭建mysql 搭建分布式存储FastDFS 搭建nginx 搭建redis 搭建ES/Kibana 搭建nacos(单节点) 转载:点击此处 搭建mysql 转载 ...

  4. centos7 安装 Redis(资源)

    2019独角兽企业重金招聘Python工程师标准>>> Redis简介 Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统.可以把它作为数据库,缓存和 ...

  5. 分布式文件存储选型考虑点

    目前市面上有的开源产品包括: GridFS(MongoDB的一部分,https://docs.mongodb.com/manual/core/gridfs/) FastDFS(https://gith ...

  6. SpringBoot交友APP项目实战(详细介绍+案例源码) - 9.小视频(SpringCache缓存)

    有人相爱,有人跳海 系列文章目录 1. 项目介绍及环境配置 2. 短信验证码登录 3. 用户信息 4. MongoDB 5. 推荐好友列表/MongoDB集群/动态发布与查看 6. 圈子动态/圈子互动 ...

  7. 【DFS】先简单说说DFS分布式存储系统和fastDFS

    先简单说说DFS分布式存储系统和fastDFS 文章目录 先简单说说DFS分布式存储系统和fastDFS DFS分布式存储系统是什么? 传统方式弊端 FastDFS简介 FastDFS整体架构 DFS ...

  8. 国人之光-分布式存储框架FastDFS入门篇

    一.分布式文件存储 1.分布式文件存储的由来   在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一个服 ...

  9. Fastdfs-企业级分布式存储应用

    Fastdfs-企业级分布式存储应用 技术介绍: FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100 FastDFS是一个轻量级的开源分布式文 ...

最新文章

  1. 基于Matlab的遗传算法优化BP神经网络在非线性函数拟合中的应用
  2. [转载] 羽毛球——学打羽毛球 09 步法的基本概念
  3. class path resource [log4j.properties] cannot be resolved to URL because it does not exist
  4. 参数传递机制之JWT
  5. 计算机视觉论文-2021-07-08
  6. Posix mq和SystemV mq区别
  7. 1-22 在“终端”里,运行“top”命令
  8. [f]class获取元素函数
  9. reactos操作系统实现(109)
  10. Tasker 一个配置实现微信朗读,微信消息播报+基础版的防撤回
  11. 用瑞利散射解释天空的颜色
  12. 彻底卸载secureCRT
  13. 函数编程之Function
  14. 补码一位乘法——布斯(Booth)算法
  15. 全球主流社交媒体算法解析:Facebook、YouTube、Twitter如何利用算法推荐内容?
  16. MATLAB Simulink 替代方案 scilab
  17. 腾讯云服务器2核4G、4核8G、8核16G、16核32G配置报价表出炉
  18. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记16:第七章 专用函数2——金融函数
  19. 开始积极开发支持机器学习PC正式迈入AI世代
  20. 机器学习(三)K-means聚类(手肘法、轮廓系数、可视化代码)

热门文章

  1. 安徽省软考报名时间成绩查询安徽省教育考试院安徽省人事考试网报名入口
  2. pwn-入门系列-0
  3. 酷炫多彩的个性化词云可视化
  4. 前端做table下载excel功能
  5. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
  6. shell for循环命令行_七年老运维实战中的 Shell 开发经验总结
  7. Unity3D教程:简单的碰撞检测
  8. 高德地图实现仿qq,微信发送位置功能实现逻辑
  9. Wi-Fi 7全新升级,小米蓄势待发!
  10. 基于OpenStack Ironic与DPU的网易数帆裸金属方案实践