浅析架设文件系统

    作者:课课家教育更新于: 2019-05-05 15:03:58

      通常情况下,每个团队内部不都同意使用第三方文件云存储服务,很多人想要掌握核心数据,此时,软件开发人员就只能架设文件系统。浅析架设文件系统_Linux系统编程环境_Linux编程环境_Linux系统编程视频_课课家

      app后台的文件系统,一般认为会涉及以下3个方面。

      1.分布式文件存储系统

      对于App业务来说,分布式文件存储的基本要求如下。

      扩容的时候只需要简单地添加机器就能达到扩容的效果,不需要重启整个文件系统上的机器,甚至是迁移文件。

      保证文件系统高可用、文件冗余备份,避免因某台机器宕机而造成文件服务停止。

      移动互联网时代除了视频网盘类的App外,大多数App以小文件存储为主,所以笔者觉得为解决大文件存储而设计的分片式文件系统不推荐使用,其运维和架构会变得复杂。

      笔者推荐的分布式文件存储系统是FastDFS。

      FastDFS是一个开源的轻量级分布式文件系统,其对文件管理功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。据笔者了解,FastDFS已经在UC、56、Kugou等互联网企业被广泛使用。

      FastDFS的基本原理可以类比生活中的仓库:仓库里面有很多货柜用来存放货物,怎么能保证仓库里无论增加了多少货柜,货柜都能被合理使用呢?核心是每个仓库里都有一个仓库管理员,仓库管理员知道新增了多少货柜。当工人需要向仓库里放货物时,先问仓库管理员哪个货柜有足够的空间存放货物,仓库管理员在综合考虑货物的大小和各个货柜的剩余空间后,告知工人应该把货物搬到哪个货柜。

      FastDFS就是上面例子中的仓库,FastDFS里有两大角色:跟踪器(Tracker)和存储节点(Storage)。跟踪器(Tracker)就是仓库管理员,主要做调度工作,在访问上起负载均衡的作用,存储节点(Storage)就是货柜,工人就是向FastDFS存储文件的客户端。

      存储系统由一个或多个group组成,不同的group之间文件相互独立,所有group的文件容量累加就是整个存储系统中的文件容量。一个group可以由一台或多台存储服务器组成,一个group下的存储服务器中的文件是相同的,group中的多个Storage起到了冗余备份和负载均衡的作用。

      FastDFS的架构如图3-17所示。

      2.图片水印,缩放和裁剪

      开发人员在App后台实现图片的裁切等功能,必须考虑图片操作是非常消耗CPU、内存等资源和占用大量的磁盘IO,所以选择图片处理工具要慎重!

      笔者推荐使用GraphicsMagick作为图片处理软件,其是一个久经考验的软件,支持多个平台,支持多种语言客户端,处理速度快,消耗资源少,并且规模较大的图片网站如Flickr都在使用GraphicsMagick。

      3.CDN

      CDN最大的作用是使图片、音频、视频等静态文件下载速度更快,用户体验更好。

      App后台访问量大时通过CDN,可以把图片、音频、视频等静态文件请求提前响应,不让其到达应用服务器,也是一种应付高并发的方法。

      现在除了传统的CDN服务商外,阿里云和UCloud等服务商也提供了CDN服务,同时七牛、又拍等文件云存储服务也具备了CDN的功能,上面这些服务都极大地方便开发者。

      另外很多CDN服务商都提供图片的水印、缩放和裁剪功能,开发者直接使用这些功能就不需要在图片处理上投入开发成本。

      通过初略了解App后台的文件系统后,我们可以对软件开发系统有一个更深刻的剖析和了解,同时,更为软件开发行业提供更好的技术支持。

课课家教育

未登录