巧用x-cos-traffic-limit header来限制上传下载速率

时间:2022-07-27
本文章向大家介绍巧用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和工具的文档说明,谢谢。