程序員的自我救贖---11.4:FileSystem文件服務
《前言》
(一) Winner2.0 框架基礎分析
(二)PLSQL報表系統
(三)SSO單點登錄
(四) 短信中心與消息中心
(五)錢包系統
(六)GPU支付中心
(七)權限系統
(八)監控系統
(九)會員中心
(十) APP版本控制系統
(十一)Winner前端框架與RPC接口規範講解
(十二)上層應用案例
(十三)總結
《FileSystem文件服務》
前面寫了很多Winner2.0的文章,基本我都是以"首先,開始,最後" 這樣的格式體去寫,今天換種寫法從根本需求上來寫。
FileSystem文件服務,我想很多稍成熟一點互聯網公司都有這麽一個服務,專門用於上傳文件尤其是圖片,最常見的就是幹商城的。
我們從需求的角度上來說是一個循循漸進的過程:
第一階段單項目開發:
首先,我們開發一個“用戶中心”的,用戶需要上傳身份證圖片,銀行卡圖片,頭像,這裏就要開發上傳圖片。
再來,我們開發了一個“線上商城”,商家需要上傳產品圖片,這裏不但要上傳圖片還要形成縮略圖。
繼續,為了提高性能我們給“用戶中心”所在的A服務器開了CDN加速,於此同時我們也給“線上商城”所在的B服務器也開CDN。
最後,問題來了。我再增加第三個、第四個項目在文件管理這一塊是否這樣繼續下去?是否每個項目自己去做縮略圖?
如果可以共用的文件是否每個項目自己去存儲?比如Logo、JS!
從用戶角度來說,用戶壓根不會在乎這個商城是怎麽實現的。但是程序員,架構師就要考慮了。所以我們開發了FileSystem文件服務
這裏文件服務,和文件服務器是兩個相似但不同的概念。
文件服務器:Windows的服務器自身可以直接配置成“文件服務器”,等於單拿一臺服務器來做存儲,期間可以通過各種Windows賬戶配置權限。
文件服務:只是一個應用,應用的功能有需求來轉換成功能,比如根據調用方傳入的Size生成縮略圖等等。
一個是有是從物理硬件服務器的角度出發,一個是單純的軟件部署。
這時我們就來到了第二階段:
FileSystem文件服務誕生了,主要包含功能有:
1,存儲文件;
2,生成縮略圖;
3,後臺管理文件;
4,權限控制;
基本功能就這四樣,但是解決了我們每個項目去建一個UpLoad文件夾,到頭來每個項目目錄都很龐大。
另外我還見過直接以流的方式將文件存出數據庫的做法,當然這本身沒有什麽問題。只是在做數據搬遷等操作的時候就痛苦了。
其實應該應該直接進入第三階段:
采購阿裏雲的文件服務OSS,阿裏雲也有文件服務器NAS。這裏推薦使用OSS。我們公司雖然沒有買文件服務器,但實質來說
單獨拿出了一臺1TB硬盤的服務器來做文件存儲,這臺服務器上就只部署了FileSystem這一個項目,其實本質來說就是做了文件服務器。
從成本考慮,買一臺阿裏雲ECS的服務器稍微好一點的配置再加個大硬,價格就在八九千一年了。
直接買OSS或者NAS價格也便宜的多,關鍵提供的服務也很多,比如:精細化的權限控制、防盜鏈、容災安全性,其實都比自建要好。
貼一張我們FileSystem的項目解決方案圖:
這個項目是2013年開發的,所以是用Asp.net做的。這個項目由於功能簡單,我們就一直沒有去重構它,四五年這麽下來一直停好用的。
這個項目我就不提供源碼了,裏面也沒有太多思想、技術方面可以講的。
有時間如果再架構大型項目的話,我還是偏向於直接使用阿裏雲的OSS來做存儲服務。
寫到這裏吧,有興趣一起探討Winner框架的可以加我們QQ群:261083244。或者掃描左側二維碼加群。
程序員的自我救贖---11.4:FileSystem文件服務