golang 實戰企業網盤

2021-09-19 05:03:45 字數 1281 閱讀 2529

1.基於golang實現分布式檔案上傳服務

2.ceph和阿里雲oss

3.支援斷點續傳和秒傳功能

4.微服務化和容器部署

redis

mysql

rabbitmq

docker部署微服務

ceph分布式儲存

阿里雲oss

檔案分塊斷點續傳/秒傳

物件從私有雲遷移到阿里雲oss的經驗

介面列表

介面描述

介面url

檔案上傳介面

post /file/upload

檔案查詢介面

get /file/query

get /file/download

檔案刪除介面

post /file/delete

檔案重新命名介面

post /file/update

這塊的命令是可以進行優化的,增刪改查是對應http restful api的

定義檔案元資訊的結構filemeta

檔案的唯一標識是什麼?可用檔案內容計算的md5值或sha1值作為檔名

1.使用者請求是http get,則返回上傳頁面

2.使用者請求是http post,則解析form資訊,生成filemeta檔案元資訊

3.真實檔案儲存到本地磁碟,檔案元資訊(如檔名稱,檔案大小,檔案sha1,儲存位置,更新時間等)儲存到mysql資料庫中

4.上傳成功後,http重定向到「上傳成功頁面」

1.解析使用者請求中的filehash值

2.根據filehash從mysql資料庫中獲取檔案元資訊

3.根據檔案元資訊中的檔案位置filelocation,讀取檔案內容返回給客戶端

從mysql資料庫獲取檔案元,以json形式返回給客戶端

更新檔案元資訊,包括更改檔名,檔案大小,檔案路徑

1.從form表單中,解析出filehash值

2.根據filehash值,獲取檔案元資訊

3.根據檔案元資訊,刪除磁碟上的真實檔案

4.從mysql資料庫中刪除該檔案的資訊

1.獲取post請求中form表單的使用者名稱和密碼

2.將密碼+固定字串經過sha1處理,加強安全性,即使資料庫洩漏了,密碼也不會洩漏

3.將使用者名稱密碼以及其他資訊都寫入到mysql資料庫中

登入功能

1.解析使用者請求中form,得到使用者名稱和密碼

2.將密碼和固定字串進行sha1運算,得出加密後的密碼

3.從mysql資料庫中獲取使用者名稱和密碼

4.兩者對比,看是否符合

Linux部署私有企業網盤

2 解壓安裝包 tar xzvf ydisks linux.tar.gz 3 安裝服務端 進入解壓後的目錄 cd ydisks linux 執行安裝指令碼 sudo setup.sh 此路徑將會作為悅庫服務端的資料儲存目錄,有以下三點需要注意 1 此路徑是實際存在的路徑 2 目錄許可權需要root使...

聯想企業網盤 心態上 我們只是初創企業

6月30日,國內一大批網盤正式關停,在所有關停網盤中,我們可以發現,這些網盤均以免費為主。實際上我們可以從這種現象中發掘出乙個客觀事實 提供網盤服務所需要的軟硬體成本和運維成本支出太大,同時,網盤資料難以實現快速分析,進而實現營銷價值。這些原因讓免費網盤收支嚴重不平衡,造成了此次大規模關停。儘管部分...

聯想企業網盤 心態上 我們只是初創企業

6月30日,國內一大批網盤正式關停,在所有關停網盤中,我們可以發現,這些網盤均以免費為主。實際上我們可以從這種現象中發掘出乙個客觀事實 提供網盤服務所需要的軟硬體成本和運維成本支出太大,同時,網盤資料難以實現快速分析,進而實現營銷價值。這些原因讓免費網盤收支嚴重不平衡,造成了此次大規模關停。儘管部分...