zoukankan      html  css  js  c++  java
  • 如何在云开发中优雅地管控 CDN 流量?

    在社区中,有不少使用云开发的小伙伴反馈遇到了“CDN流量消耗如流水”的情况。

    有一觉醒来超额的:

    有被高质量图片的加载“吓”到不敢用的:

    那么问题来了,如何在云开发中优雅地管控 CDN 流量消耗呢?本文就来和你详细聊聊!

    01、按量付费和管道付费
    为了便于理解,先来看看云开发的流量计费模式。

    简单来说,按量计费就是:你有多少个量跑出去了,就给你算多少量;但是它并不限制你同一时间跑出去的量,也就是流量峰值不设限。

    如果你在同一时间需要跑出去100M的量,那么峰值就给你开到100M,在同一时间跑完,最后算费用是100M的钱。

    而管道付费则是限制给你开多宽的“道路”,按照这个“道路”的宽窄收费,比如你选择1M的网络道路,那就按照1M的价格来收钱;在使用时,你的量只能达到1M的速度,再也高不了了,这个最大速度就被称做带宽。

    但是即使低峰没多少量时,你还必须为这个“道路”付钱。还是上述例子,你同一时间需要跑出去100M,但是速度只能给你开到1M,那么这些量在100秒后才可以走完,最后算费用是1M的道路租金*租用时长。

    而在现实项目中,总会有业务的高峰和低峰,流量几乎不可能始终保持在一个恒定的速率,这就会造成管道计费有速度的天花板、但闲置时仍在计费的资源浪费问题。

    云开发作为 Serverless 云原生一体化后端服务,提供的流量是按量付费的,暂不支持管道付费,不限制同一时刻的流量速度,因此,如果开发者使用不合理就会导致流速过快,进而造成流量超额较快的情况。

    了解了按量付费和管道付费的区别后,咱们进入正题,说说 CDN。

    02、什么是CDN流量?
    我们在使用云开发时,几乎在各处都会看到CDN这个词。

    CDN又称内容分发网络,通俗来讲就是将你主存储(源站)中的文件,复制给各地的存储点(CDN节点),当有用户访问这个资源时,直接从就近的存储点(CDN节点)获取即可。

    云开发的云存储和静态网站托管天然支持 CDN 加速,所以你的用户通过客户端下载文件跑的流量都是 CDN 流量。

    以上 CDN 流量只适用于各种渠道走加速公网下载文件的情况,比如浏览器加载网站,客户端下载资源,外部系统请求文件,通过临时地址的各种访问打开文件都在消耗 CDN 流量。

    但是如果是内网访问文件,则不走 CDN 流量消耗,比如在云函数中通过 fileID 访问文件等。

    03、什么是CDN回源流量?
    当我们的存储中有文件更新时,存储在 CDN 节点的旧文件又该如何处理呢?在这里引入一个知识点——缓存时间。

    这里的缓存时间其实就是文件副本在各地存储点(CDN节点)的有效时间,比如默认是两小时,那么每次文件副本在各地存储点的有效时间就是两小时,超过这个时间之后再收到请求时,存储点(CDN节点)就会丢弃过期的旧文件,向主存储(源站)请求最新的文件,而这一请求所产生的流量就称为 CDN 回源流量。

    缓存时间既不能太长也不可太短,如果 CDN 缓存间隔时间过短,那么 CDN 节点上的数据会经常失效,导致频繁回源,增加了源站的负载,进而影响了整体的传输效率;如果缓存间隔时间过长,会带来数据更新不及时等严重的业务问题。

    云开发的云存储就提供了非常细微颗粒度的缓存时间设置,你可以针对一个文件、一个路径甚至是文件后缀来进行分别设置。

    另外,多个缓存规则设置中还有优先级策略,调配变得更加灵活。

    云存储是以从后到前的配置模式来做策略计算的,比如一个云存储的域名做了如下缓存配置:

    现在请求此路径下资源/test/abc.jpg,其从后到前匹配方式如下:

    匹配第一条所有文件,命中,此时缓存时间为 2 分钟。

    匹配第二条,未命中。

    匹配第三条,命中,此时缓存时间为300秒。

    匹配第四条,命中,此时缓存时间为400秒。

    匹配第五条,命中,此时缓存时间为200秒。

    04、如何合理管控CDN?
    我们需要把握一个原则:

    缩减大小,善用缓存。

    缩减大小的意思就是,我们在开发应用时,所需要的多媒体文件,如果没有特殊要求(比如摄像馆的原图发送),需要尽可能的压缩。只有减轻了业务资源的大小,才能够根本的减少流量资源的消耗。

    另外,用户在上传多媒体资源时,仍然可以使用平台或框架能力对资源进行压缩后再上传,保证资源都是经过优化后进入存储,这样在请求下载时就会减轻很多负担。

    善用缓存意思就是同一个用户、同一份资源尽可能不要请求一次以上,要合理使用客户端的本地缓存能力,将固定资源全部缓存。当用户再此进入时,直接使用缓存的资源。

    再送给大家一句云云学长的金句:缓存用的好,PV 的效果用的只是 UV 的量。

    而在具体使用时,大家还是需要根据自己的业务情况来合理把握。比如你的资源变更非常频繁,就不太适合缓存优化;而你的资源不能压缩,要保持原大小,则就不适合压缩优化。

    05、结语
    以上攻略送给各位 hold 不住 CDN 流量的小伙伴们,如果大家觉得 CDN 消耗如流水,用户活跃却没有多少起色,可能就需要好好检查一下自己哪里浪费了。勤俭节约可是中华民族的传统美德,云开发虽好,也需要节约使用哦~

    作者:云云学长

  • 相关阅读:
    17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
    17.1.2 Replication Formats
    Setting the Master Configuration on the Slave
    17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment
    17.1.1.8 Setting Up Replication with Existing Data
    17.1.1.7 Setting Up Replication with New Master and Slaves
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files
    列出display的值,并说明它们的作用
    CSS设置DIV居中
    CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?
  • 原文地址:https://www.cnblogs.com/CloudBase/p/15243716.html
Copyright © 2011-2022 走看看