第1课:邂逅分布式文件系统

在互联网行业里,文件系统地位是如此重要
拿google来说,GFS,MapReduce,BigTable并称为谷歌技术"三宝", GFS就是一个分布式文件系统
作为一个互联网公司,你可以没有IM功能,可以不用视频编解码技术,但是你一定会有文件的存取,比如头像的上传获取,文档的上传获取,很多都是必不可收的,文件系统,是很多技术的基础,IM你也要有文字文本或者语音文件的存取,视频你也要存储视频文件

简单的文件存取,可能并不需要一个复杂的系统,但是当海量的文件存取,你就不得不考虑高并发,数据一致性与安全性等等一系列的问题。而我们要讲的就是可以解决这些问题的分布式文件系统

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。通俗的讲,就是本来文件只存放在一台机器上,但是现在因为数据库压力大,我们通过一定的规则,把数据分流到多台机器上,但是从用户角度看,和存一台在业务展示上没有差别

现在的分布式文件系统有很多,除了刚才说的google的文件系统,还有很多
mogileFS:Key-Value型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多
fastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能
ceph:支持FUSE,客户端已经进入了linux-2.6.34内核,也就是说可以像ext3/rasierFS一样,选择ceph为文件系统。彻底的分布式,没有单点依赖,用C编写,性能较好
lustre:Oracle公司的企业级产品,非常庞大,对内核和ext3深度依赖
NFS:老牌网络文件系统,甚至可以当作linux的标配,当进行磁盘共享的时候,经常会用到

而在接下来的课程中,我们来讲的是其中的fastDFS,因为他有很多优点,简单说就是短小精悍,很适合大部分公司的业务需求,虽然对大文件的处理不尽如人意,但是大部分公司也没有那么多的大文件处理,适合自己的才是最好的