APP开发后台如何处理文件系统,深圳APP开发公司(博纳网络)工程师在项目开发中总结了以下几点,希望能对各位APP开发爱好者以及我们的客户在项目规划前期能对平台的工作流程有所了解。
现在App展现内容的形式多种多样:文字、图片、声音、视频等,其中图片、声音、视频等都是文件,由此可见文件在App中占了个很大的比重。随着App不断运营,文件越来越多,占用的磁盘空间也不断增大,设计高效的文件系统对于整个App后台架构非常重要。
APP开发经验之文件云存储服务的好处
深圳APP开发工程师一向推崇的创业公司类型的项目规划架构“尽量使用成熟可靠的云服务和开源软件,自身只专注于业务逻辑”,架设文件系统需要牵涉到文件的分布式存储、图片水印、图片缩放,还有CDN等方面,每方面都会耗费掉巨大的开发成本和运维成本。
对于中小团队来说,我们APP开发工程师不认为开发人员架设的文件服务比专业的第三方文件云存储服务好,与其在这些基础设施中耗费大量的时间精力,还不如用专业的第三方云存储服务,团队自身只专注于业务逻辑,加快产品的迭代。而且APP开发工程师认为如果计算成本,第三方云存储服务费用比起后端人员开发和运维的成本低多了,想想开发人员钻研和开发文件服务所需的时间就知道。
文件云存储服务的另外一个优势是上传/下载速度非常快,记得我们APP开发工程师第一次使用云存储下载文件时被吓住了,居然达到了1OMB/s的下载速
度,各位想想这么快的下载速度是多美好的用户体验。
APP开发经验之自行架设文件系统
不是每个团队内部都同意使用第三方文件云存储服务,不少老板的想法是必须要掌握核心数据,这时研发人员就只能架设文件系统。
App后台的文件系统,博纳网络APP开发工程师认为涉及以下3个方面。
1.分布式文件存储系统,对于App业务来说,分布式文件存储的基本要求如下。
·扩容的时候只需要简单地添加机器就能达到扩容的效果,不需要重启整个文件系统上的机器,甚至是迁移文件。
·保证文件系统高可用、文件冗余备份,避免因某台机器宕机而造成文件服务停止。
移动互联网时代除了视频网盘类的App外,大多数App以小文件存储为主,所以博纳网络APP开发工程师觉得为解决大文件存储而设计的分片式文件系统不推荐
使用,其运维和架构会变得复杂。我们工程师推荐的分布式文件存储系统是:FastDFS
FastDFS是个开源的轻量级分布式文件系统,其对文件管理功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。据笔者了解,FastDFS已经在uc、56、Kugou等互联网企业被广泛使用。
FastDFS的基本原理可以类比生活中的仓库:仓库里面有很多货柜用来存放货物,怎么能保证仓库里无论增加了多少货柜,货柜都能被合理使用呢?核心是每个仓库里都有个仓库管理员.仓库管理员知道新增了多少货柜。当工人需要向仓库里放货物时,先问仓库管理员哪个货柜有足够的空间存放货物,仓库管理员在综合考虑货物的大小和各个货柜的剩余空间后,告知工人应该把货物搬到哪个货柜。
FastDFS就是上面例子中的仓库,FastDFS里有两大角色:跟踪器主要做调度工作,在访问上起负载均衡的作用,存储节点(Storage),(Tracker)和存储节点(Storage)。跟踪器(Tracker)就是仓库管理员就是货柜,工人就是同FastDFS存储文件的客户端。存储系统由一个或多个group组成.不同的group之间文件相互独立,所group的文件容量累加就是整个存储系统中的文件容量。一个group可以由台或多台存储服务器组成,一个group下的存储服务器中的文件是相同的.group中的多个Storage起到了冗余备份和负载均衡的作用。
FastDFS的架构如图3-17所示
APP开发文件系统处理效果图3-17FastDFS:结构图
APP开发对于图片水印,缩放和裁剪的处理
开发人员在App后台实现图片的裁剪等功能,必须考虑图片操作是非常消耗CPU、内存等资源和占用大量的磁盘10,所以选择图片处理工具要慎重!
APP开发工程师推荐使用GraphicsMagick作为图片处理软件,其是一个久经考验的软件,支持多个平台,支持多种语言客户端,处理速度快,消耗资源少,并且规模较大的图片网站如Flickr都在使用GraphicsMagick。
APP开发之CDN
CDN最大的作用是使图片、音频、视频等静态文件下载速度更快,用户体验更好
App后台访问量大时通过CDN,可以把图片、音频、视频等静态文件请求提前响应,不让其到达应用服务器,也是一种应付高并发的方法。现在除了传统的CDN服务商外,阿里云和UCloud等服务商岜提供了CDN服务,同时七牛、又拍等文件云存储服务电具备了CDN的功能,上面这些服务都极大地方便APP开发者。另外很多CDN服务商部提供图片的水印、缩放和裁剪功能,开发者直接使用这些功能就不需要在图片处理上投入开发成本。深圳APP开发工程师关于APP开发文件系统以及图像、音频的处理方法本文就介绍到这里。专业APP开发服务商-博纳网络编辑整理。