AWS 中怎么实现动态CDN

CDN 不是一个新名词,这个把缓存分布到世界各地的技术起码出现了 10 年。最近又火起来,原因是用户对网络响应时间的要求深化。国内就有阿里云的 CDN, ChinaCache, Baidu+Cloudfare, UCloud, 7牛 还有很多。。。因为网络问题,很多大公司都会采用国外服务器,然后把内容通过CDN 推到国内。

技术上,我认为这么多公司一起做CDN,其中一个原因就是这东西不复杂,当然国内国外的支持还会加上一些其他问题。主流技术就是 Nginx / Varnish 作为 File Cache, 然后部署 GSLB(全局负载均衡)。 以技术角度来看,我是不会自己架一个CDN网络的,得上百节点的才算得上CDN,个人架设成本有点高。认为选择 CDN 时会考虑以下的因素

  1. 支持 Cache invalidation 

  2. Invalidation 所需要的时间与价格

  3. 流量费不要超过 USD 0.14/GB

  4. 支持动态 CDN

  5. 支持子域名 (CloudFlare / 安全宝 都需要域名切换,防DDOS)

  6. 支持 Cache Behaviour (不同的路径有不同的 cache 特性)

  7. 可以 pass through header / cookie

  8. Respect Cache-control header

  9. 最好可以直接有操作介面更改 header

  10. 支持 edge side include

相信能做到以上的,就不纯粹是个简单的CDN,是个真正的CDN。今天主要分享的是第 4)点 动态 CDN

AWS 在 2013 年开始在 Cloudfront 支持动态CDN,意思就是可以把 html 也存到 CDN 上,用户拿到 HTML 和 静态文件都在 CDN 上,不需要向服务器 (origin) 请求。原理上,这就支持无限的访问。read 请求日千万不是问题,问题去了信用卡能刷多少钱而已。

AWS 中怎么实现动态CDN

这个 Dynamic CDN 的原理是这样的 比如,以 abc.com为例子作一下说明。

  1. abc.com CNAME 去 Cloudfront 的域名 (xxxxxxxx.aws.cloudfront.com)

  2. 在 xxxxxxxx.aws.cloudfront.com 以下的 Cloudfront ID (cloudfrontID.default.cloudfront.com) 接受 abc.com 的请求

  3. xxxxxxxx.aws.cloudfront.com 指向  origin.abc.com 拿数据 (就是本服务器)

  4. 要是请求没有 cloudfront 本地 cache, 就继续,否则反回 cache

  5. 要是请求不是特定的 path ( cache behaviour),则反回

  6. cloudfrontID.default.cloudfront.com 向 web 服务器 (Origin) 请求 object (html / css / .jpg / …)

  7. 把 header (cache-header / CORs) 也记到 cache 中

  8. 把 xxx.default.cloudfront.com 的 cache 反回到 abc.com 的客户端

  9. 跟据在第 7) 点 定义的 header按时间清理缓存

  10. 跟据请求的来源IP,在世界各地每一个edge 上操作 1-9

这有点像反向代理,比如 Varnish 就在做差不多的事。只是CDN 在用 edge cache. Varnish 一般的使用情况是把文件缓存最长时间,然后根据 Origin 给的指令来更新缓存。这是客户最想要的,这样就不会有 “第一位用户变慢” 这样的问题。但要是用过好几个 CDN 的人就会发现,市面上没有CDN 支持永久缓存这回事。原因在哪?这没有官方回应,我感觉是 edge cache 是很多很多的服务器,在 AWS 上跑一次 cache invalidation 去清理所有 edge 上的 cache 要花上 20-30 分钟,要是每一次的 object 更新也得像 Varnish 去 “push” 更新,就会花上很大的成本。倒不如自动 Expire, 然后在下一位用户有需要时,才把最近那地理位置的 edge cache 上加一个 object cache. 这样就省去一笔很大的成本。

好的 CDN 得支持 Behaviour, 就是路径不同的特性,在不同的应用上,特别是已登录的用户,使用太多的 cache 会令系统出问题。得跟据路径来删除/加速 刷新。

AWS 中怎么实现动态CDN

要是支持登录用户的话, Cookie 要用客户端直接传送到 Origin, 所以得支持 (forward cookie)

AWS 中怎么实现动态CDN

每个 CDN 会有一个 Default behaviour, 就是不指定情况下,都跟据这个 behaviour 作出回应。比如我们要支持用户登录,得把 session 通过 Dynamic CDN 回传到 origin 

AWS 中怎么实现动态CDN

原创文章,作者:PMVTX,如若转载,请注明出处:http://www.wangzhanshi.com/n/13098.html

(0)
PMVTX的头像PMVTX
上一篇 2025年1月1日 17:07:22
下一篇 2025年1月1日 17:07:24

相关推荐

  • 全国cdn排行情况

    与其他CDN服务商相比,网站那些事CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,网站那些事的CDN特点是分担源站压力,避…

    2025年1月1日
  • cdn是怎么样加速的

    与其他CDN服务商相比,网站那些事CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,网站那些事的CDN特点是分担源站压力,避…

    2025年1月2日
  • CDN技术有哪些优点

    概念 CDN这个概念相信大家都比较耳熟,到底什么是CDN呢? CDN,全称为Content Delivery Network,即内容分发网络。 其基本思路是尽可能避开互联网上有可能…

    2025年1月1日
  • cdn的概念以及适用场景

    与其他CDN服务商相比,网站那些事CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,网站那些事的CDN特点是分担源站压力,避…

    2025年1月1日
  • nginx实现负载CDN加速获取端真实ip的方法

    nginx做负载CDN加速获取端真实ip在不用cdn的情况下,nginx做负载获取真实ip时,nginx配置如下:Java代码  proxy_set_header&nbs…

    CDN加速 2025年1月1日
  • CDN加速的四大解决方案

    首先在聊解决方案之前,我们需要知道CDN是什么?CDN加速是将源站内容分发至全球各地最接近用户的节点(用户可私人定制需求节点),缩短用户到节点的物理距离,使用户可就近取得所需内容,…

    CDN加速 2025年1月1日
  • cdn加速为何不是免费的

    网站那些事内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。网站那些事CDN…

    2025年1月2日
  • cdn怎么样防御ddos

    与其他CDN服务商相比,网站那些事CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,网站那些事的CDN特点是分担源站压力,避…

    2025年1月1日
  • 用Nginx如何搭建CDN服务器

    利用Nginx的proxy_cache搭建缓存服务器一:编译ngx_cache_purge 1、Nginx的Proxy_cache是根据Key值md5哈希存储缓存,支持任意的Key…

    2025年1月2日
  • cdn加速具体有哪几种方式

    与其他CDN服务商相比,网站那些事CDN的主要优势包括稳定快速、性价比高、简单易用、高效智能。比较多的用户会问到稳定快速这个优点,一般来说,网站那些事的CDN特点是分担源站压力,避…

    2025年1月2日

发表回复

登录后才能评论