檔案上傳更新服務相關

來源:互聯網
上載者:User

標籤:部署   新版本   管理系   實現   發送   方法   環境   form   命令   

需求:
  用戶端向服務端發送一次請求,請求是一系列設定檔的檔案名稱、當前用戶端所持有檔案的版本號碼、期待服務端返回的資料形式(url或位元據)。當請求的設定檔有更新,服務端返回相應的url或位元據。之所以要分url和位元據,因為有的設定檔比較小且比較重要需要馬上擷取到資料;而有的設定檔稍微大一些,重要性比較低,可以在用戶端拉線程慢慢下。

最終實現:
  分為後台管理系統(負責檔案上傳)和資料更新服務。
  檔案上傳部分是用Vue.js+KOA實現。其中關於檔案上傳那塊,瀏覽器端使用Ajax發送FormData;Node那塊之前是用co-busboy模組處理檔案,body-parser模組基於co-body不支援檔案資料(TODO1:之後研究HTTP協議,需要回頭看看這塊代碼),在官方樣本中是用pipe將formData檔案流直接匯入磁碟檔案中(TODO2:出現了檔案資料成功寫入本地磁碟卻沒有存入資料庫的情況),但是當我想直接用變數儲存檔案資料時,上傳多檔案卻只能接受到一個檔案的資料(TODO3:查明原因,需要瞭解流的相關知識)。調用SQL語句儲存資料時借鑒了ORM的設計思想以及js物件導向編程的思想(TODO4:ORM實現十分粗糙,需要最佳化)。由於檔案大小有限,也沒有(TODO5)考慮斷點續傳和秒傳。
  更新服務大概思路是服務不斷的掃描資料庫,將新版本資料載入記憶體(資料總量不大),並暫時使用Nginx做檔案伺服器,後期接入CDN。達到快速響應的目的。

收穫:

  1)寫後台管理系統的時候,最初是以檔案的形式儲存在伺服器上,沒有考慮檔案備份、多機部署的問題。(TODO6:瞭解分布式檔案儲存體系統),簡單的方法就是用MYSQL儲存檔案資料,資料備份和多機部署方便,但這也只適合資料比較小的情況。最終還是要用分布式檔案儲存體。(TODO7:Redis使用hmset等命令同樣能達到目的),由於對效能要求不高,故沒有採用Redis方案。

  2)學會了使用事務來進行多表(有關聯性)操作

 

TODO:

  TODO8:之前理解的檔案服務是後端即時讀取檔案資料並返回資料,但這樣不適合生產環境。需要參考和學習Nginx檔案服務的實現機制

  TODO9:使用JS處理Pb協議

  

檔案上傳更新服務相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.