1. 程式人生 > >程序員的自我救贖---11.4:FileSystem文件服務

程序員的自我救贖---11.4:FileSystem文件服務

救贖 頭像 規範 logo 講解 調用 get bsp 後臺管理

《前言》

(一) 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文件服務