上一次我们采用的上面的方式进行图片存储。图片在哪个项目中上传的图片就存储到哪个项目所在的服务器。其他项目模块通过HTTP请求进行获取图片。

虽然说可以实现不同模块之间图片的访问,但是问题也很明显,包含如下问题:

  • 图片存储过于分散。
  • 图片多的服务器压力比较大,可能会影响其他功能。
  • 存储到项目路径中,重启会丢失。存储到外部文件中,I/O操作性能低。

针对上面问题可以搭建单独的图片服务器,专门做图片存储及图片访问的。而想要搭建图片服务器就需要应用图片存储技术/工具。

 

 

二、分布式文件系统概述

1 分类

1.1 通用分布式文件系统

和传统的本地文件系统(如ext3、NTFS等)相对应。典型代表:lustre、MooseFS

1.1.1 优点

标准文件系统操作方式,对开发者门槛较低

1.1.2 缺点

系统复杂性较高,需要支持若干标准的文件操作,如:目录结构、文件读写权限、文件锁等。复杂性更高

​ 系统整体性能有所降低,因为要支持POSIX标准(表示​​可移植操作系统接口​​(Portable Operating System Interface of UNIX),POSIX标准定义了操作系统应该为应用程序提供的接口标准)

1.2 专用分布式文件系统

基于google File System的思想,文件上传后不能修改。需要使用专有API对文件进行访问,也可称作分布式文件存储服务。典型代表:MogileFS、FastDFS、TFS。

1.2.1 优点

系统复杂性较低,不需要支持若干标准的文件操作,如:目录结构、文件读写权限、文件锁等,系统比较简洁。

系统整体性能较高,因为无需支持POSIX标准,可以省去支持POSIX引入的环节,系统更加高效。

1.2.2 缺点

采用专有API,对开发者门槛较高(直接封装成工具类)

2 Google FS 体系结构

2.1 两个角色

名字服务器(索引服务器)

存储服务器

2.2 架构特点

不支持文件修改功能。

文件分块存储,需要索引服务器

一个文件可以存储多份,一个文件存储到哪些存储服务器,通常采用动态分配的方式。

三、FastDFS简介

1 简介

FastDFS是一个轻量级的开源分布式文件系统。2008年4月份开始启动。类似google FS的一个轻量级分布式文件系统,纯C实现,支持Linux、FreeBSD、AIX等UNIX系统。

主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。实现了软件方式的磁盘阵列(Redundant Arrays of Independent Drives,RAID),可以使用廉价的IDE(Integrated Drive Electronics)硬盘进行存储。并且支持存储服务器在线扩容。支持相同内容的文件只保存一份,节约磁盘空间。

FastDFS只能通过Client API访问,不支持POSIX访问方式。

FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)

2 网址

FastDFS没有官网。但是作者余庆(happy_fish100)担任chinaunix中FastDFS板块版主。并且会不定期更新板块中内容。

http://bbs.chinaunix.net/

FastDFS软件可以在sourceforge中进行下载,最新版本为5.08

https://sourceforge.net/projects/fastdfs/files/