利用COS全球加速的高效率传输实践
介绍
腾讯云对象存储 COS 的全球加速功能,借助腾讯全局流量调度的负载均衡系统,智能路由解析用户请求,选择最优网络访问链路,实现请求就近接入。利用全球分布的云机房,可帮助全球各地用户快速访问您的存储桶,提升您的业务访问成功率,进一步保障您的业务稳定和提升您的业务体验。此外 COS 的全球加速功能还可以实现数据上传加速和下载加速。
限制
Bucket类操作无法使用全球加速域名,如GetBucket。
如果使用加速域名有列出存储桶列表的需求,还是得使用源站域名。
架构
计费方式
国内流量费用只收取外网下行流量费,而全球加速域名会在国内流量费用上增加收取上行和下行加速流量费,国内加速费用和海外加速费用各不相同,具体如下
以北京bucket桶为例
公有云外网下行流量费
公有云国内加速流量费 (上下行相同)
公有云海外加速流量费 (上下行相同)
具体参考:https://buy.cloud.tencent.com/price/cos
配置方法
这里我们设想一种场景,我们的客户遍布全球各地,我们的存储桶创建在中国大陆北京集群,那么全球的客户都要向北京存储桶内访问和请求。我们希望海外用户使用全球加速域名访问,国内用户直接访问COS北京默认域名,这样既能保证很好的海外访问体验,也在国内节省一定的加速流量费用。
配置步骤介绍
步骤1:开启存储桶全球加速
存储桶>>域名与传输管理>>全球加速
步骤2:绑定自定义域名
存储桶>>域名与传输管理>>自定义源站域名
步骤3:设置DNSPOD
DNS解析>>我的域名
步骤4:设置线路解析
设置自定义域名分别cname到国内和国外两个COS域名,例如
国内 test.xxx.com cname wainsun-1XXX5742.cos.ap-beijing.myqcloud.com
国外 test.xxx.com cname wainsun-1XXX5742.cos.accelerate.myqcloud.com
这样我们就将国内请求和海外解析进行了分离。国内直接请求到北京集群域名,海外走全球加速域名。
全球各地域名解析测试验证
源站访问的是北京集群的bucket桶。在如下地点测试访问
步骤1:从重庆访问自定义域名
看到自定义域名cname到cos.ap-beijing.myqcloud.com域名,且访问的IP为北京地域IP(120.53.196.26),说明是直接访问到北京bucket桶。
步骤2:从美国访问自定义域名
看到自定义域名cname到cos.accelerate.myqcloud.com域名,且访问的IP为美国地域IP(49.51.43.170),说明是先访问到COS美国节点,然后从美国节点走专线到北京的bucket桶。
步骤3:从日本访问自定义域名
看到自定义域名cname到cos.accelerate.myqcloud.com域名,且访问的IP为日本地域IP(150.109.201.88),说明是先访问到COS日本节点,然后从日本节点走专线到北京的bucket桶。
端调用方式
步骤1:JAVA
关键代码
//步骤1:实现 EndpointBuilder 接口中的两个函数 |
---|
SelfDefinedEndpointBuilder selfDefinedEndpointBuilder = new SelfDefinedEndpointBuilder(); ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing")); |
---|
测试效果
步骤2:C#
关键代码
CosXmlConfig config = new CosXmlConfig.Builder() |
---|
测试效果
步骤3:NodeJS
关键代码
var cos = new COS({ |
---|
注意,nodejs默认使用https请求,如果使用自定义域名的话,目前COS控制台暂不支持证书托管,所以这里需要改为http协议
测试效果
步骤4:javascript
需要在实例化COS对象的时候加入自定义域名Domain test.colasun.com,示例如下
var cos = new COS({ |
---|
测试效果,看到请求的域名已经是自定义域名的test.colasun.com
步骤5:python
在CosConfig中设置自定义域名的endpoint
secret_id = 'AKIDZ3LdvXXXXXXwEvWyFKLPUcdTZsNh' # 替换为用户的secret_id |
---|
测试效果
步骤6:PHP
$secretId = "AKIDZ3LdvEihdxxxxxxxUcdTZsNh"; //"云 API 密钥 SecretId"; |
---|
测试效果
步骤7:IOS
Objective-C
NSString *customDomain = @"test.colasun.com"; // 自定义加速域名 |
---|
Swift
let endpoint = QCloudCOSXMLEndPoint.init(literalURL: NSURL.init(string: "test.colasun.com") as URL?); |
---|
参考文档:https://cloud.tencent.com/document/product/436/47636
步骤8:Android
String region = "ap-beijing"; // 您的存储桶地域 CosXmlServiceConfig cosXmlServiceConfig = new CosXmlServiceConfig.Builder() CosXmlService cosXmlService = new CosXmlService(context, cosXmlServiceConfig, |
---|
步骤9:GO
核心代码
// 将 examplebucket-1250000000 和 COS_REGION修改为真实的信息 |
---|
工具调用方式
工具1:COSCMD
配置文件
[common] |
---|
注意:如果配置了ENDPOINT,那么region参数就会失效了
注意:如果在命令行中强行指派-r参数,那么配置文件的ENDPOINT不会生效
coscmd -b examplebucket-1250000000 -r ap-beijing upload D:/picture.jpg /
-r参数优先级会高于配置文件参数优先级
工具2:COSBrowser
登录COSBrowser后在存储桶列表页,选中对应需要使用全球加速域名的存储桶,点击传输管理,可以对上传/下载操作选择不同的域名。