APP開發(fā)后臺如何處理文件系統(tǒng),深圳APP開發(fā)公司(博納網(wǎng)絡(luò))工程師在項目開發(fā)中總結(jié)了以下幾點,希望能對各位APP開發(fā)愛好者以及我們的客戶在項目規(guī)劃前期能對平臺的工作流程有所了解。
現(xiàn)在App展現(xiàn)內(nèi)容的形式多種多樣:文字、圖片、聲音、視頻等,其中圖片、聲音、視頻等都是文件,由此可見文件在App中占了個很大的比重。隨著App不斷運營,文件越來越多,占用的磁盤空間也不斷增大,設(shè)計高效的文件系統(tǒng)對于整個App后臺架構(gòu)非常重要。
APP開發(fā)經(jīng)驗之文件云存儲服務(wù)的好處
深圳APP開發(fā)工程師一向推崇的創(chuàng)業(yè)公司類型的項目規(guī)劃架構(gòu)“盡量使用成熟可靠的云服務(wù)和開源軟件,自身只專注于業(yè)務(wù)邏輯”,架設(shè)文件系統(tǒng)需要牽涉到文件的分布式存儲、圖片水印、圖片縮放,還有CDN等方面,每方面都會耗費掉巨大的開發(fā)成本和運維成本。
對于中小團(tuán)隊來說,我們APP開發(fā)工程師不認(rèn)為開發(fā)人員架設(shè)的文件服務(wù)比專業(yè)的第三方文件云存儲服務(wù)好,與其在這些基礎(chǔ)設(shè)施中耗費大量的時間精力,還不如用專業(yè)的第三方云存儲服務(wù),團(tuán)隊自身只專注于業(yè)務(wù)邏輯,加快產(chǎn)品的迭代。而且APP開發(fā)工程師認(rèn)為如果計算成本,第三方云存儲服務(wù)費用比起后端人員開發(fā)和運維的成本低多了,想想開發(fā)人員鉆研和開發(fā)文件服務(wù)所需的時間就知道。
文件云存儲服務(wù)的另外一個優(yōu)勢是上傳/下載速度非???,記得我們APP開發(fā)工程師第一次使用云存儲下載文件時被嚇住了,居然達(dá)到了1OMB/s的下載速
度,各位想想這么快的下載速度是多美好的用戶體驗。
APP開發(fā)經(jīng)驗之自行架設(shè)文件系統(tǒng)
不是每個團(tuán)隊內(nèi)部都同意使用第三方文件云存儲服務(wù),不少老板的想法是必須要掌握核心數(shù)據(jù),這時研發(fā)人員就只能架設(shè)文件系統(tǒng)。
App后臺的文件系統(tǒng),博納網(wǎng)絡(luò)APP開發(fā)工程師認(rèn)為涉及以下3個方面。
1.分布式文件存儲系統(tǒng),對于App業(yè)務(wù)來說,分布式文件存儲的基本要求如下。
·擴(kuò)容的時候只需要簡單地添加機器就能達(dá)到擴(kuò)容的效果,不需要重啟整個文件系統(tǒng)上的機器,甚至是遷移文件。
·保證文件系統(tǒng)高可用、文件冗余備份,避免因某臺機器宕機而造成文件服務(wù)停止。
移動互聯(lián)網(wǎng)時代除了視頻網(wǎng)盤類的App外,大多數(shù)App以小文件存儲為主,所以博納網(wǎng)絡(luò)APP開發(fā)工程師覺得為解決大文件存儲而設(shè)計的分片式文件系統(tǒng)不推薦
使用,其運維和架構(gòu)會變得復(fù)雜。我們工程師推薦的分布式文件存儲系統(tǒng)是:FastDFS
FastDFS是個開源的輕量級分布式文件系統(tǒng),其對文件管理功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負(fù)載均衡的問題。據(jù)筆者了解,F(xiàn)astDFS已經(jīng)在uc、56、Kugou等互聯(lián)網(wǎng)企業(yè)被廣泛使用。
FastDFS的基本原理可以類比生活中的倉庫:倉庫里面有很多貨柜用來存放貨物,怎么能保證倉庫里無論增加了多少貨柜,貨柜都能被合理使用呢?核心是每個倉庫里都有個倉庫管理員.倉庫管理員知道新增了多少貨柜。當(dāng)工人需要向倉庫里放貨物時,先問倉庫管理員哪個貨柜有足夠的空間存放貨物,倉庫管理員在綜合考慮貨物的大小和各個貨柜的剩余空間后,告知工人應(yīng)該把貨物搬到哪個貨柜。
FastDFS就是上面例子中的倉庫,F(xiàn)astDFS里有兩大角色:跟蹤器主要做調(diào)度工作,在訪問上起負(fù)載均衡的作用,存儲節(jié)點(Storage),(Tracker)和存儲節(jié)點(Storage)。跟蹤器(Tracker)就是倉庫管理員就是貨柜,工人就是同F(xiàn)astDFS存儲文件的客戶端。存儲系統(tǒng)由一個或多個group組成.不同的group之間文件相互獨立,所group的文件容量累加就是整個存儲系統(tǒng)中的文件容量。一個group可以由臺或多臺存儲服務(wù)器組成,一個group下的存儲服務(wù)器中的文件是相同的.group中的多個Storage起到了冗余備份和負(fù)載均衡的作用。
FastDFS的架構(gòu)如圖3-17所示
APP開發(fā)文件系統(tǒng)處理效果圖3-17FastDFS:結(jié)構(gòu)圖
APP開發(fā)對于圖片水印,縮放和裁剪的處理
開發(fā)人員在App后臺實現(xiàn)圖片的裁剪等功能,必須考慮圖片操作是非常消耗CPU、內(nèi)存等資源和占用大量的磁盤10,所以選擇圖片處理工具要慎重!
APP開發(fā)工程師推薦使用GraphicsMagick作為圖片處理軟件,其是一個久經(jīng)考驗的軟件,支持多個平臺,支持多種語言客戶端,處理速度快,消耗資源少,并且規(guī)模較大的圖片網(wǎng)站如Flickr都在使用GraphicsMagick。
APP開發(fā)之CDN
CDN最大的作用是使圖片、音頻、視頻等靜態(tài)文件下載速度更快,用戶體驗更好
App后臺訪問量大時通過CDN,可以把圖片、音頻、視頻等靜態(tài)文件請求提前響應(yīng),不讓其到達(dá)應(yīng)用服務(wù)器,也是一種應(yīng)付高并發(fā)的方法。現(xiàn)在除了傳統(tǒng)的CDN服務(wù)商外,阿里云和UCloud等服務(wù)商岜提供了CDN服務(wù),同時七牛、又拍等文件云存儲服務(wù)電具備了CDN的功能,上面這些服務(wù)都極大地方便APP開發(fā)者。另外很多CDN服務(wù)商部提供圖片的水印、縮放和裁剪功能,開發(fā)者直接使用這些功能就不需要在圖片處理上投入開發(fā)成本。深圳APP開發(fā)工程師關(guān)于APP開發(fā)文件系統(tǒng)以及圖像、音頻的處理方法本文就介紹到這里。專業(yè)APP開發(fā)服務(wù)商-博納網(wǎng)絡(luò)編輯整理。