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

业务场景

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

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

网络架构图

网络架构图

方案设计

下载方案

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

上传方案

配置步骤

  • 配置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加速更节约成本。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阿里云对象存储OSS,主要是用于存储静态资源文件,它提供了很多方便的操作图片的方法(缩放旋转水印等),在实现了OS...
    记住你姓李阅读 10,543评论 0 9
  • 一、对象存储OSS概要介绍 什么是对象存储OSS? 估算容量-数据备份-数据安全-成本控制 对象存储服务(Obje...
    拉斯5961阅读 1,642评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,590评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,795评论 1 1