首页 > 其他分享 >CDN内容缓存

CDN内容缓存

时间:2023-09-20 21:32:49浏览次数:51  
标签:web 缓存 CDN 访问 内容 DNS 服务器

CDN 分发系统的架构。CDN 系统的缓存,也是一层一层的,能不访问后端真正的源,就不打扰它。

CDN内容缓存_CDN

在没有 CDN 的情况下,用户向浏览器输入 www.web.com 这个域名,客户端访问本地 DNS 服务器的时候,如果本地 DNS 服务器有缓存,则返回网站的地址;如果没有,递归查询到网站的权威 DNS 服务器,这个权威 DNS 服务器是负责 web.com 的,它会返回网站的 IP 地址。本地 DNS 服务器缓存下 IP 地址,将 IP 地址返回,然后客户端直接访问这个 IP 地址,就访问到了这个网站。

有了 CDN 之后,情况发生了变化。在 web.com 这个权威 DNS 服务器上,会设置一个 CNAME 别名,指向另外一个域名 www.web.cdn.com,返回给本地 DNS 服务器。

当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是 web.com 的权威 DNS 服务器了,而是 web.cdn.com 的权威 DNS 服务器,这是 CDN 自己的权威 DNS 服务器。在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也即 CDN 网络的全局负载均衡器。

本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

  • 根据用户 IP 地址,判断哪一台服务器距用户最近;
  • 用户所处的运营商;
  • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;
  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。

CDN内容缓存_CDN_02

对于流媒体 CDN 来讲,有个关键的问题是防盗链问题。因为视频是要花大价钱买版权的,为了挣点钱,收点广告费,如果流媒体被其他的网站盗走,在人家的网站播放,那损失可就大了。

最常用也最简单的方法就是 HTTP 头的 referer 字段, 当浏览器发送请求的时候,一般会带上 referer,告诉服务器是从哪个页面链接过来的,服务器基于此可以获得一些信息用于处理。如果 refer 信息不是来自本站,就阻止访问或者跳到其它链接。

referer 的机制相对比较容易攻破,所以还需要配合其他的机制。一种常用的机制是时间戳防盗链。使用 CDN 的管理员可以在配置界面上,和 CDN 厂商约定一个加密字符串。客户端取出当前的时间戳,要访问的资源及其路径,连同加密字符串进行签名算法得到一个字符串,然后生成一个下载链接,带上这个签名字符串和截止时间戳去访问 CDN。在 CDN 服务端,根据取出过期时间,和当前 CDN 节点时间进行比较,确认请求是否过期。然后 CDN 服务端有了资源及路径,时间戳,以及约定的加密字符串,根据相同的签名算法计算签名,如果匹配则一致,访问合法,才会将资源返回给客户。

动态 CDN,主要有两种模式。

  • 一种为生鲜超市模式,也即边缘计算的模式。既然数据是动态生成的,所以数据的逻辑计算和存储,也相应的放在边缘的节点。其中定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果。就像对生鲜的烹饪是动态的,没办法事先做好缓存,因而将生鲜超市放在你家旁边,既能够送货上门,也能够现场烹饪,也是边缘计算的一种体现。
  • 另一种是冷链运输模式,也即路径优化的模式。数据不是在边缘计算生成的,而是在源站生成的,但是数据的下发则可以通过 CDN 的网络,对路径进行优化。因为 CDN 节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由 CDN 来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。


标签:web,缓存,CDN,访问,内容,DNS,服务器
From: https://blog.51cto.com/key3feng/7543385

相关文章

  • 谷歌防止网站和平台存在用户生成的垃圾内容
    垃圾内容发布者通常会利用开放评论表单和其他用户生成的内容敏感未设防的网站,在网站上生成垃圾内容。托管平台可能同样面临滥用风险;垃圾内容发布者可能会创建大量不遵循网络垃圾政策的网站,并且生成对网络价值不大或毫无价值的内容。防止平台或网站上出现滥用行为通常并非易事。简单......
  • Redis学习之缓存穿透
    缓存穿透攻击者可以恶意请求数据库中不存在的数据,从而使得每次查询都要绕过缓存查数据库,增大数据库的压力。解决方案:1.缓存空值:比如塞一个空字符串。注意可以给空对象的键过期时间设置短一些,或者在新增数据时强制清除下对应缓存(防止查出来还是null)2.布隆过滤器预防做法:......
  • Redis学习之缓存实现及缓存更新
    介绍什么是缓存?缓存就是数据交换的缓冲区(称作Cache[kæʃ]),是存贮数据的临时地方,一般读写性能较高。为什么需要缓存?提前准备好数据,便于更快地读写。 缓存是把双刃剑,要权衡利弊。优点:降低后端负载提高读写效率,降低响应时间缺点:数据一致性成本代码维护成本运维......
  • Mysql中如何批量更新数据库中某个字段值中的部分内容;
    在平时的开发过程中,偶尔会遇到需要批量更新数据库中某个字段值的部分内容,比如某个字段存储的是图片的URL路径,这个路径中的域名无法访问了,需要更新为另一个ip地址。Mysql中提供了REPLACE函数:可以使用了REPLACE函数来替换原来字段中的一部分数据为新值。UPDATEcar_data_hisSETc......
  • dns缓存中毒43.227.199.x
    什么是DNS缓存中毒DNS缓存中毒是一种网络攻击,它使您的计算机误以为它会到达正确的地址,但事实并非如此。攻击者使用DNS缓存中毒来劫持互联网流量并窃取用户凭据或个人数据。DNS缓存中毒攻击也称为DNS欺骗,它试图诱骗用户将其私人数据输入不安全的网站。什么是DNS缓存在讨论攻击之......
  • dedebiz内容页面获取当前页面路径的标签
    dedebiz获取当前页面路径的标签,仅在内容页使用,栏目页没有效果的。{dede:fieldname='arcurl'/}在栏目页想获取当前栏目的路径及名称的话,就要用下面这个标签。{dede:type}<ahref="[field:typelink/]">[field:typename/]</a>{/dede:type}获取网站所有栏目名称及路径列......
  • 缓存穿透,缓存击穿,缓存雪崩区别
    缓存穿透,缓存击穿,缓存雪崩区别发现自己有时候明明已经做过了,可能是缺少回顾总结,过了几天这部分知识就会忘的一干二净,一点有记不住,还有这三个概念有时候确实不太能把他分清楚,面试的时候也有让自己说清楚,说的一塌糊涂,所以总结一下一、缓存穿透,缓存击穿,缓存雪崩简单的区别缓存......
  • ArcGIS打开mxd地图后无内容且出现红色感叹号的解决方法
      本文介绍在ArcMap软件中,导入.mxd地图文档文件后图层出现感叹号、地图显示空白等情况的解决办法。  在ArcMap软件使用过程中,我们经常会需要将包含有多个图层的.mxd地图文档文件导入软件中;例如,如下图所示,我们希望将名为测量标识1.mxd的地图文档文件导入ArcMap软件。  随后......
  • 本地缓存无冕之王Caffeine Cache
    本文已收录至GitHub,推荐阅读......
  • 详解Spring缓存注解@Cacheable、@CachePut和@CacheEvict
    详解Spring缓存注解@Cacheable、@CachePut和@CacheEvict的使用简介在大型的应用程序中,缓存是一项关键技术,用于提高系统的性能和响应速度。Spring框架提供了强大的缓存功能,通过使用缓存注解可以轻松地集成缓存机制到应用程序中。本文将详细介绍Spring框架中的@Cacheable、@CachePu......