上一次我们采用的上面的方式进行图片存储。图片在哪个项目中上传的图片就存储到哪个项目所在的服务器。其他项目模块通过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板块版主。并且会不定期更新板块中内容。
FastDFS软件可以在sourceforge中进行下载,最新版本为5.08