zoukankan      html  css  js  c++  java
  • CDN: 缓存刷新和缓存预热

     CDN—ContentDeliveryNetwork,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

     目的:解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。控制时延无疑是现代信息科技的重要指标,CDN的意图就是尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。

    CDN网络中包含的功能实体包括内容缓存设备、内容交换机、内容路由器、CDN内容管理系统等组成。 
    • 内容缓存为CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态Web内容和流媒体内容,实现内容的边缘传播和存储,以便用户的就近访问.
    • 内容交换机处于用户接入集中点,可以均衡单点多个内容缓存设备的负载,并对内容进行缓存负载平衡及访问控制.
    • 内容路由通常通过负载均衡系统来实现,动态均衡各个内容缓存站点的载荷分配,为用户的请求选择最佳的访问站点,同时提高网站的可用性。
    • 内容管理系统负责整个CDN的管理,是可选部件,作用是进行内容管理,如内容的注入和发布、内容的分发、内容的审核、内容的服务等

     流程图

    DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的全局负载均衡(GSLB)设备,将需要分发的内容注入 CDN,就可以实现内容加速了。

     https://segmentfault.com/a/1190000010631404
    1. 浏览器向 本地DNS服务器 请求对域名的解析。

    2. 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求;如果没有则递归向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。

    3. 浏览器得到域名解析结果,就是该域名相应的服务设备的 IP地址 。

    4. 浏览器向服务器请求内容。

    5. 服务器将用户请求内容传送给浏览器。



     
    1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN专用DNS服务器。

    2. CDN的DN 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。

    3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。

    4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

    5. 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:

      • 根据用户 IP 地址,判断哪一台服务器距用户最近;

      • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;

      • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

    6. 全局负载均衡设备把服务器的 IP 地址返回给用户。

    7. 用户向缓存服务器发起请求。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

     

    CDN节点的缓存内容不实时更新,只有当缓存内容到期后才能回源拉取最新的内容。当您的源站内容更新后,如果希望用户可以获取到最新内容,您可以通过缓存刷新功能将CDN缓存强制过期;如果CDN边缘节点需要及时更新此内容,先将此内容刷新,再将此内容预热到CDN节点。

    缓存刷新:提交缓存刷新请求后,CDN节点的缓存内容将会被强制过期。当用户向CDN节点请求资源时,CDN会直接回源站拉取对应的资源返回给用户,并将其缓存。

    缓存预热:提交缓存预热请求后,源站将会主动将对应的资源缓存到CDN节点。当用户首次请求时,就能直接从CDN节点缓存中获取到最新的请求资源,无需再回源站拉取。

         优点:将需要预热的资源推送到CDN边缘节点,用户访问时将不需要再回源站,可以直接命中缓存。这样可加快资源的首次访问,同时缓解突增回源流量给源站造成的压力。

    金山云:https://www.ksyun.com/developer/article/6938.html

    1:什么是刷新?淘汰cdn节点上的旧文件,重新获取文件的新版本。

          什么是预热?首次发布的文件,主动从源站推送到CDN,让用户访问到CDN时不用回客户的源站命中。

    2:为什么要刷新?
    CDN节点缓存的资源没有过期,但是基于客户的业务要求,需要更新CDN节点上缓存资源,刷新就是强制删除CDN节点缓存内容。用户请求这些资源时,CDN节点需要重新回源拉取资源,保证响应的资源与源站一致。
    常见的场景:比如A公司游戏包发布后,发现有bug需要修复,为了降低影响,需要把CDN节点上缓存的旧游戏安装包都删除。

    刷新类型分为目录刷新和URL刷新。URL刷新是直接将节点上缓存的资源删除。对于目录刷新,会将节点上的文件资源过期,会同源站对比Last-Modified时间,比如节点上的目录文件的Last-Modified为:Mon, 26 Dec 2018 11:11:00 GMT ,源站文件的Last-Modified为Mon, 28 Dec 2018 11:11:00 GMT.则此时源站会告诉节点:你的文件比我的文件老,我已经更新文件了,快来取最新的资源吧,此时会将源站新的资源更新到节点上,否则,源站返回304,告诉节点,你节点上的资源已经和我源站上的资源是一致,为最新的了,无需更新。

    3:为什么要预热?
       主动从源站推送到CDN,让用户访问到CDN时不用回客户的源站命中。
    xx游戏在9月12日首次开发,游戏玩家抢着开服的时候赶紧下载游戏客户端(3GB)。如果没有预热,第一批玩家在访问官网下载时,官网CNME记录解析到CDN。由于是第一次访问,CDN中缓存也没有,因此需要回源站去获取游戏客户端(3GB)。

    影响:
    首批下载的用户体验很差,因为都集中访问源站主机,源站主机的CPU利用率和带宽会跑的很高。第一批玩家下载完成后,CDN中也能够缓存了一份,第二批玩家下载就直接在CDN中命中,速度比第一批快得多。

    但是等CDN缓存好完整一份游戏客户端,可能半天到1天的时间就过去了。因为第一批下载时,源站压力非常大,CDN回源的带宽可能只有几KB,几KB的速度下载2GB的文件,可能要好几天了。那么游戏开服的头几天连游戏客户端都下载不了。
    在开服前,通过预热功能,将游戏安装包(3GB)从源站推送到各CDN节点,提前先缓存起来。等开服的时候,第一个玩家也能从CDN中快速获取到游戏安装包。

    CDN 常用的防盗链方式包含IP黑白名单、Referer、时间戳以及中心鉴权进行防盗链等方式。

    一、IP黑白名单:

    这个比较简单,直接配置请求者的IP黑白名单,设置黑名单之后,除了黑名单的用户都能访问;反之设置了白名单,只有白名单的用户都可以访问。这个方法直接有效,但必须知道请求者的具体IP信息,所以适用的场景比较有限。

    二、Referer防盗链:

    在http请求时,Referer里记录的是请求的来路,所以通过设置Referer黑白名单,可以控制哪个页面或者域名过来的请求是可以访问的。这个方法比较简单,因为你很清楚想让哪个网站或者不想让哪个网站访问,但是缺点就是Referer信息可以伪造。

    三、时间戳防盗链:

    时间戳防盗链主要是在url请求里,通过增加时间戳的信息来对url加上时间的因素,盗链者如果不及时更新url,那么就会无法访问。这个比较常见,但是如果盗链者定期的过来更新url,这种方法也会失效。

    四、中心鉴权

    中心鉴权的方式等于在源站增加一层验证,这个方法会对防盗链有效,但会增加请求的时间成本,一般用于有对内容进行完全保护的,比如有些视频网站,需要会员身份才能看的内容,对于这些网站,一般都会做中心鉴权。 

    CDN常用调度类型

    1、DNS调度:智能计算,就近最佳节点为网民提供服务。

    2、httpdns:客户端直接调用HttpDNS接口获取缓存服务器IP组,再择优向IP组中的缓存服务器发送请求,替代常规DNS调度策略,适用于客户端,且客户端需稍作修改进行HttpDNS接口调用。

    3、边缘302调度:针对因用户LocalDNS配置错误引起的解析错误,缓存服务器可根据终端IP进行判断,并通过302方式响应终端最优缓存服务器IP供终端访问。适用于大文件下载(因多一次302跳转网络延时,对小文件下载不适用)

    4、中央302调度:调度服务器接受终端Http请求,可根据终端IP及url请求热度,将用户请求通过302方式调度至最优的缓存服务器上进行响应。适用于大文件下载(因多一次302跳转的网络延时,对小文件不适用),且需与一致性hash、冷热分离配合使用。

    注:一致性hash、冷热分离:指同一地区多节点情况下,对文件进行一致性hash,可以将冷文件hash至一个节点集中访问,提高命中率,将热文件hash至各个节点,进行热度均摊。其中,冷热文件可按比例设置。

  • 相关阅读:
    Rocky Linux8国内镜像源
    强制缓存和协商缓存的区别
    从源码来看VUE的执行流程
    plugin
    判断数据类型的方法
    获取函数参数
    BFC
    VUE的$nextTick
    HTTP
    JavaScript创建和触发自定义事件
  • 原文地址:https://www.cnblogs.com/bsszds930/p/12779546.html
Copyright © 2011-2022 走看看