Flask HDFS雲盤系統設計

2021-09-12 02:38:17 字數 2007 閱讀 9792

前端:bootstrap jquery sweetalert(彈窗外掛程式) datatables(**外掛程式) webuploader(上傳外掛程式)

後端:flask

資料庫: sqlalchemy

檔案儲存:hadoop

部署:nginx+uwsgi+supervisor

資料庫設計:資料庫設計採用sqlalchemy進行模型設計,用熟了之後相比原生的sql語句還是比較方便的,整個雲盤分為四張表,分別為檔案表,使用者表,分享表,刪除表。er圖如下:

管理員後台:檢視使用者個人資訊、鎖定普通使用者、修改使用者密碼 (後台功能比較渣)

使用者登入退出:

pip install hdfs

from hdfs import client

hdfs_client = client("")

上傳檔案時,前端通過webuploader外掛程式實現,後台接受到檔案後先將檔案屬性存入資料庫,再將檔案通過io流傳入hadoop中,上傳流程圖如下:

):# 根據檔案id獲取檔案物件

fileobj = filetable.query.filter_by(file_id=

id, user_id=current_user.get_id(

), is_recycle=

false

).first_or_404(

) path = fileobj.hdfs_path + fileobj.hdfs_filename

# 得到檔案真實路徑

filename = fileobj.filename

# 讀取檔案內容

with hdfs_client.read(path)

as reader:

buf = reader.read(

) response = make_response(buf)

response.headers.add(

'content-disposition'

,'attachment'

, filename=filename.encode())

return response

檔案刪除:

刪除檔案會先將檔案移動到**站,主要是根據hadoop**站機制,在hdfs裡,刪除檔案時,會先將檔案移動到**站,而不會真的刪除,**站中的檔案可以還原,同時會在配置檔案中設定乙個時間長度,當超過這個時間長度後,hdfs會自動清除檔案。

檔案分享:

檔案分享分為公開分享和密碼分享。檔案分享鏈結是根據檔案id,hdfs檔名,unxi時間戳生成的md5值作為唯一鏈結,密碼分享時同時會生成隨機4位密碼作為分享密碼。當訪問檔案時,會檢查分享型別,如果是密碼分享就需要輸入正確密碼。公開分享可以直接訪問。

由於資源有限,整個系統是安裝在一台伺服器上的,hadoop採用偽分布式安裝,使用python3開發,部署方案採用nginx+uwsgi+supervisor。簡單的來說就是最外層使用nginx伺服器,中間使用uwsgi作為wsgi介面,最後是flask應用。

而supervisor作為程序管理工具用來啟動,重啟,關閉整個服務。關於這方面的部署都可以在網上搜得到。

系統首頁

檔案詳細頁

上傳頁

開源系統搭建私有雲盤,育網校園雲盤系統

三 精準校園檔案管理服務 1 專業的教育資源管理雲盤 2 logo按學校需求進行私人定製的私有雲盤 3 海量使用者實踐驗證,本地部署超級穩定 6 私有雲盤空間自定義大小,公共盤精準許可權控制,公共盤秒變教學平台。8 內建國家基礎教育資源聯盟精品課程,海量檔案推送到電腦桌面端。9 斷點繼傳秒傳等,為您...

雲盤系統 填坑

使用快取流輸入一段資料後需要flush到記憶體中,對方才可以讀取。問題一 子執行緒無法進行鍵盤輸入 解決方法 建立乙個main方法,執行客戶端的操作 問題二 鍵盤輸入只有第二個生效了,第乙個被跳過了,檢視位元組碼檔案發現,如圖所示,第一反應是指令重排序,導致兩個輸出都在下面。但是檢視位元組碼檔案,發...

育網教育雲盤,校園雲盤企業雲盤。

育網雲盤區縣級應用指南 雲盤最大的特點,可以進行大檔案的搬運和海量檔案的儲存,教育雲盤如果乙個區域內6000 9000個教師的資料都儲存在教育局,每人分配100g,總共需要 600 900t,還不算公共儲存部分,所以區域集中儲存是不明智的選擇,當然,如果購買回去不去,又另當別論了,我們建議採用分布式...