巧用x-cos-traffic-limit header來限制上傳下載速率
- 2020 年 3 月 3 日
- 筆記
騰訊雲COS產品,本身是按照流量計費的對象存儲,默認並不限制頻寬。而在某些場景下,如共享或頻寬有限的網路中,希望能夠限制上傳和下載的速率進行限制,以便將剩餘頻寬資源用於其他應用。這個時候,我們是可以通過x-cos-traffic-limit屬性來限制上傳和下載的速率的。下面就來實踐一下。
首先,我們測試一下我們的環境的網路狀況。

通過多次測試取平均值,下載速率大約是2.7MB/s,上傳速率大約是600KB/s
我們準備了一個10MB的文件進行測試,使用java SDK進行上傳和下載。

通過在上傳動作和下載動作前後輸出時間,我們可以測試到具體耗時。

測得結果,這裡看到上傳耗時42秒 速率為243KB/s,下載耗時5秒 速率為2MB/s。

我們分別設置為上傳限速150KB/S,下載限速1MB/S,相關設置如下
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("text/html"); objectMetadata.setHeader("x-cos-traffic-limit",String.valueOf(1024*8*150));//限速設置 putObjectRequest.setMetadata(objectMetadata); PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);File downFile = new File("10MB.txt"); GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); getObjectRequest.setTrafficLimit(1024*1024*8*1);//限速設置 ObjectMetadata downObjectMeta = cosclient.getObject(getObjectRequest, downFile);執行結果看到,上傳耗時68秒,速率為150KB/S,下載耗時10秒,速率為1MB/S,與我們的設置匹配,實踐成功。

以上就是JAVA sdk中的限速用法和實踐,有需要的小夥伴,可以參照使用。單鏈接限速文檔請參考https://cloud.tencent.com/document/product/436/40140
目前COS SDK的其他語言和工具也在陸續補齊和更新中,大家可以關注每個SDK和工具的文檔說明,謝謝。

