第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

目录

  • 1 背景
    • 1.1 为什么需要分布式文件服务
      • 1.1.1 单机时代
      • 1.1.2 独立文件服务器
      • 1.1.3 分布式文件系统
    • 1.2 什么是FastDFS
  • 2 系统架构
    • 2.1 Tracker集群
    • 2.2 Storage集群
    • 2.3 Storage状态收集
    • 2.4 FastDFS的上传过程
    • 2.5 FastDFS的文件同步
    • 2.6 FastDFS的文件下载
1 背景1.1 为什么需要分布式文件服务1.1.1 单机时代初创时期由于时间紧迫,在各种资源有限的情况下 , 通常就直接在项目目录下建立静态文件夹 , 用于用户存放项目中的文件资源 。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分 。例如:resources\static\file、resources\static\iamge等 。
  • 优点:这样做比较便利,项目直接引用就行,实现起来也简单,无需任何复杂技术 , 保存数据库记录和访问起来也很方便 。
  • 缺点:如果只是后台系统的使用一般也不会有什么问题,但是作为一个前端网站使用的话就会存在弊端 。一方面,文件和代码耦合在一起,文件越多存放越混乱;另一方面 , 如果流量比较大 , 静态文件访问会占据一定的资源,影响正常业务进行,不利于网站快速发展 。
1.1.2 独立文件服务器随着公司业务不断发展,将代码和文件放在同一服务器的弊端就会越来越明显 。为了解决上面的问题引入独立图片服务器,工作流程如下:项目上传文件时,首先通过ftp或者ssh将文件上传到图片服务器的某个目录下,再通过ngnix或者apache来访问此目录下的文件,返回一个独立域名的图片URL地址,前端使用文件时就通过这个URL地址读取 。
  • 优点:图片访问是很消耗服务器资源的(因为会涉及到操作系统的上下文切换和磁盘I/O操作),分离出来后,Web/App服务器可以更专注发挥动态处理的能力;独立存储,更方便做扩容、容灾和数据迁移;方便做图片访问请求的负载均衡,方便应用各种缓存策略(HTTP Header、Proxy Cache等),也更加方便迁移到CDN 。
  • 缺点:单机存在性能瓶颈,容灾、垂直扩展性稍差
1.1.3 分布式文件系统通过独立文件服务器可以解决一些问题,如果某天存储文件的那台服务突然down了怎么办?可能你会说,定时将文件系统备份,这台down机的时候 , 迅速切换到另一台就OK了,但是这样处理需要人工来干预 。另外,当存储的文件超过100T的时候怎么办?单台服务器的性能问题?这个时候我们就应该考虑分布式文件系统了 。
业务继续发展,单台服务器存储和响应也很快到达了瓶颈,新的业务需要文件访问具有高响应性、高可用性来支持系统 。分布式文件系统,一般分为三块内容来配合,服务的存储、访问的仲裁系统,文件存储系统,文件的容灾系统来构成,仲裁系统相当于文件服务器的大脑,根据一定的算法来决定文件存储的位置 , 文件存储系统负责保存文件,容灾系统负责文件系统和自己的相互备份 。
  • 优点:扩展能力: 毫无疑问,扩展能力是一个分布式文件系统最重要的特点;高可用性: 在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性;弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行
  • 缺点:系统复杂度稍高,需要更多服务器
1.2 什么是FastDFSFastDFS是一个开源的轻量级分布式文件系统 。它解决了大数据量存储和负载均衡等问题 。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等 。在UC基于FastDFS开发向用户提供了:网盘,社区 , 广告和应用下载等业务的存储服务 。
FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS , 不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适 。
FastDFS特性: