????????公司之前開發(fā)一個網(wǎng)盤系統(tǒng), 可以上傳文件, 打包壓縮下載文件, 但是在處理大文件的時候, 服務(wù)器遇到了性能問題, 主要是這個項目是單機部署.......(離譜),? 然后帶寬只有100M, 現(xiàn)在用戶比之前多很多, 然后所有人的壓縮下載請求都給到這一臺服務(wù)器了, 比如多個人下載的時候帶寬問題, 服務(wù)器內(nèi)存占用問題, 下載速度和沒開會員的百度云網(wǎng)盤有一拼, 用戶苦不堪言,
????????所以考慮到使用阿里的 serverless 函數(shù)計算, 把從OSS的下載和壓縮, 以及壓縮后的客戶端對文件下載, 這些壓力全給到 serverless
一.? 使用的阿里云 serverless 函數(shù)計算 FC?
阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計算服務(wù)平臺
????????使用之前我們需要開發(fā)一個傳統(tǒng)的 springboot 項目,? 代碼沒什么保密的東西, 都是抄的chatgpt, 項目地址 :? ?GitHub - canxiusi/zip-to-oos
????????拉下來就可以直接運行的那種, 需要在配置文件里補全你的OSS信息
?1. 之后我們把項目打成jar包, 并壓縮成zip
?2. 之后登錄阿里云的 serverless, 再服務(wù)列表點擊創(chuàng)建服務(wù)
3. 然后在自動彈出的頁面中點擊創(chuàng)建函數(shù)
4. 選擇第二個, 使用springboot項目, 的zip壓縮包上傳
5.? 這里一定要勾選 處理HTTP請求, 因為我們這是傳統(tǒng)的 springboot 項目, 手白了就是 controller 層要接收上游系統(tǒng)的請求
?6. 運行環(huán)境選擇 java8, 把項目的zip壓縮上傳上去, 啟動命令就是 java -jar, 注意帶上 jvm 的運行參數(shù)?
7. 高級配置這里直接把配置拉滿, 市區(qū)選擇北京/上海時間
8. 觸發(fā)器這里選擇支持的請求方式, 就是接口上 @PostMapping, @GetMapping 一類的, 簽名根據(jù)自己的需要配置
9. 在函數(shù)詳情頁面點擊測試函數(shù), 這里就是請求 controller 我們定義的接口
10. 在觸發(fā)器管理頁面, 我們可以看到函數(shù)的外網(wǎng)請求地址, 這樣我們就可以在其他項目調(diào)用接口了
11. 調(diào)用方系統(tǒng)請求serverless的部分代碼
?因為這里要壓縮的文件比較大, 所以在請求頭這里設(shè)置了異步請求
? ? ? ? 異步請求 serverless, 把OSS的文件路徑和調(diào)用方系統(tǒng)回調(diào)地址作為參數(shù)
????????后續(xù)就是等待 serverless 從OSS下載并壓縮文件后, 通過http請求, 把 zip 文件在 serverless 的臨時路徑返回給調(diào)用方系統(tǒng), 調(diào)用方系統(tǒng)進行入庫處理, (這里沒在內(nèi)存做壓縮, 因為文件過大會OOM)
? ? ? ? 調(diào)用方系統(tǒng)通過客戶端輪詢請求, 查詢臨時文件路徑存不存在, 在拿到臨時文件的路徑后, 再重定向到 serverless 直接下載文件
?????????下圖的 controller 其實就是 serverless 在處理完 zip 文件后的回調(diào)地址, 邏輯就是把 serverless 的 zip 文件的路徑入庫
? ?
?????????下圖的 downloadZipFile 就是前面的 serverless 的外網(wǎng)請求地址, 加上 serverless 部署的代碼的?controller 層, 根據(jù)文件路徑下載文件的接口路徑
????????經(jīng)過測試, serverless 的請求處理速度還是很快的, 因為和OSS對接有專網(wǎng), (這個要注意 servereless 的地域要和 OSS 的地域一樣)
????????5個gb的零零散散的文件, 有很多文件路徑,??逐個請求OSS下載, 再把文件流寫入到磁盤臨時文件, 然后返回給調(diào)用方系統(tǒng)臨時文件的路徑, 大概花費了4分多, 注意這里只是返回了在 serverless 的壓縮包的臨時文件路徑, 后續(xù)要再次通過重定向到 serverless 的下載文件接口, 下載臨時文件文章來源:http://www.zghlxwxcb.cn/news/detail-608586.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-608586.html
到了這里,關(guān)于使用serverless實現(xiàn)從oss下載文件并壓縮的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!