巧用x-cos-traffic-limit header來限制上傳下載速率

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

首先,我們測試一下我們的環境的網路狀況。

實踐環境網路狀況

通過多次測試取平均值,下載速率大約是2.7MB/s,上傳速率大約是600KB/s

我們準備了一個10MB的文件進行測試,使用java SDK進行上傳和下載。

10MB測試文件

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

測得結果,這裡看到上傳耗時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和工具的文檔說明,謝謝。

Tags: