热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OSS对象存储的全球加速方案

业务场景OSS对象存储作为一种海量、安全、低成本、高持久的云存储服务,深受广大开发人员的喜爱。但是在全球化的业务场景中,不管OSS选择放于海外或者大陆地区,都会导致另外一部分用户上






业务场景

OSS对象存储作为一种海量、安全、低成本、高持久的云存储服务,深受广大开发人员的喜爱。但是在全球化的业务场景中,不管OSS选择放于海外或者大陆地区,都会导致另外一部分用户上传和访问质量不佳的问题。

本文旨在提供一种基于OSS对象存储的低成本的全球加速方案。


网络架构图

网络架构图


方案设计


下载方案



  • 使用自定义域名配置CDN加速
  • DNS解析:自定义域名CNAME解析到CDN加速域名
  • 对象访问签名调整:改用URL鉴权的方式进行签名

上传方案



  • 直接使用OSS传输加速域名 {bucket}.oss-accelerate.aliyuncs.com

配置步骤



  • 配置CDN加速


  1. 加速域名配置自定义域名,后续对象访问使用此域名。源站信息选择OSS域名, 域名类型选择自定义OSS源站,域名配置为OSS传输加速域名 {bucket}.oss-accelerate.aliyuncs.com
    配置CDN加速


  2. 创建成功后会生成一个CDN加速域名(类似xxx.com.w.cdngslb.com)
    CDN列表页


  3. 如果为私有Bucket,回源配置中需要开启阿里云OSS私有Bucket回源,访问控制-开启URL鉴权,填写主备KEY!
    URL鉴权




  • 配置DNS解析

将自定义域名CNAME解析到刚才配置后得到的CDN加速域名
DNS解析



  • 对象访问签名


/**
* CND鉴权-A方案的签名
*
* @param string $host eg. https://mall.xxx.com
* @param string $path eg. resume/110/abc.jpg
* @param string $args eg. ?x-oss-process=image%2Fauto-orient%2C1%2Fresize%2Cw_160
* @param string $key 鉴权的key
* @param int $expireAt 过期时间戳
* @return string
*/

function sign($host, $path, $args, $key, $expireAt)
{
$path = Str::startsWith($path, '/') ? $path : "/$path";
$path = implode('/', array_map('urlencode', explode('/', $path)));
$rand = '0';
$uid = '0';
$str = sprintf('%s-%s-%s-%s-%s', $path, $expireAt, $rand, $uid, $key);
$hash = md5($str);
$authKey = sprintf('%s-%s-%s-%s', $expireAt, $rand, $uid, $hash);
$symbol = $args ? '&' : '?';
return sprintf('%s%s%s%sauth_key=%s', $host, $path, $args, $symbol, $authKey);
}

对比测试

本次测试以3种方案进行对比测试,测试的图片为948KB。



  • 直接使用OSS传输加速域名方案:网络耗时不是很稳定,快的0.48s,慢的1s多

传输加速网络传输耗时



  • 使用CDN鉴权+OSS传输加速域名回源方案:命中CDN缓存的网络耗时在0.15s左右,回源的网络耗时1-2s

1.命令缓存
CDN缓存命中网络传输耗时

2.OSS传输加速域名回源
CDN传输加速回源网络传输耗时



  • 使用CDN鉴权+OSS域名回源方案:命中CDN缓存和上述方案差不多,回源的网络耗时再4-7s

OSS域名回源
CDN普通回源网络传输耗时

从上面的对比测试中,可以很明显的看出CDN缓存加速的网络传输质量会更好,相比于传输加速通过选择优质链路从OSS源站取数据,CDN在最近边缘节点的缓存更快,更稳定。

从成本上来说,传输加速1.6元/G(还不包括OSS访问的流量计费),而CDN加速的流量计费只需要0.x/G,显然CDN加速更节约成本。




phper
laravel
golang


推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 1.移除consol.log()的babel插件安装:npmibabel-plugin-transform-remove-console-D配置:babel.config.js:这 ... [详细]
  • 论坛最近流量一直很大,pv却没增长多少,纠结啊,cdn的流量太贵了,跑不起啊最近mysql经常占cpu很高,今 ... [详细]
  • 小白的Python 学习笔记(八)推导式详解
    大家好,今天我总结一下Python的推导式,首先让我们来看定义推导式(comprehensions)是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体 ... [详细]
  • 结合“性能监视器”排查、处理性能瓶颈导致应用吞吐率等指标上不去的问题
    双11备战前夕,总绕不过性能压测环节,TPS一直上不去不达标,除了代码上的问题外,服务器环境、配置、网络、磁盘、CPU亦是导致性能瓶颈的重要一环,本文旨在分享最近项目性能 ... [详细]
  • AngularJS 提交表单的方式(一)
    英文原文:SubmittingAJAXForms:TheAngularJSWay在AngularJS出现之前,很多开发者就面对了表单提交这一问题。由于提 ... [详细]
  • laravel 使用腾讯云 COS5全教程
    laravel使用腾讯云COS5全教程一下载首先第一步肯定是用composer把包安装下来,这里是laravel5.8版本的,所以我用的是cos5 ... [详细]
author-avatar
马克杯2502891103
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有