• 内容分发网络 CDN


    介绍 CDN

    内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。


    CDN 基于这样的原理:

    • 挑选最优的设备为用户提供服务;
    • 如果某个内容被很多用户所需要,那么就将它缓存到距离用户最近的节点中。

    CDN 公司在整个互联网上部署数以百计的 CDN 服务器(Cache),这些服务器通常在运营商的互联网数据中心(Internet Data Center,IDC)中,尽量靠近接入网络和用户。CDN 在 Cache 中复制内容,当内容的提供者更新内容时,CDN 向 Cache 重新分发这些被刷新的内容。

    CDN 提供一种机制,当用户请求内容时,该内容能够由以最快速度交付的 Cache 来向用户提供,这个挑选 “最优” 的过程就叫做负载均衡。被选中的最优 Cache 可能最靠近用户,或者有一条与用户之间条件最好的路径。

    CDN 的工作过程

    使用 CDN 服务的网站是如何向用户提供服务的呢?

    基于 DNS 解析的 GSLB 系统是目前 CDN 服务商采用比较多的 GSLB 方案。基于 DNS 解析的 GSLB 系统的实现又有几种不同的方式:

    • 通过 CNAME 方式实现负载均衡;
    • 负载均衡器作为权威 DNS 服务器;
    • 负载均衡器作为代理 DNS 服务器。

    其中通过 CNAME 方式实现负载均衡是目前业界使用最多的方式。


    通过 CNAME 方式实现负载均衡,一个用户的访问流程为:

    image-20230301143452601.png

    当用户在浏览器的地址栏中输入 URL 并点击回车后,浏览器首先判断 URL 中的是 IP 地址,还是域名。如果 URL 中的是域名,那么首先要做的就是域名解析。

    域名解析的过程:首先是浏览器查看浏览器的缓存。

    • 1、2、3:如果浏览器中没有该域名的缓存,那么浏览器询问【本地 DNS 解析器】,【本地 DNS 解析器】首先查看本地 DNS 缓存。如果本地 DNS 缓存中没有该域名的缓存,那么【本地 DNS 解析器】请求【本地 DNS 服务器】进行域名解析。
    • 4、5、6:如果【本地 DNS 服务器】中没有该域名的缓存,那么【本地 DNS 服务器】向 DNS 系统中的其他远程 DNS 服务器发送查询请求。

    在 domain.com 域的域名服务器中,将 host.domain.com 域名的 CNAME 记录设置为其他的域名(CDN 服务商的域名的子域名),比如设置为 host.domain.com.cdn.dnsv1.com。

    • 7:【本地 DNS 服务器】获取到 domain.com 域的域名服务器,向其发送 host.domain.com 域名解析请求, domain.com 域的域名服务器返回 CNAME 记录,该 CNAME 记录的值为 host.domain.com.cdn.dnsv1.com(CDN 服务商的域名的子域名)。
    • 8:【本地 DNS 服务器】获取到 cdn.dnsv1.com 域的域名服务器(CDN 专用的域名服务器),向其发送 host.domain.com.cdn.dnsv1.com 域名解析请求。

    这样就将网站域名的解析权交给了 CDN 专用的域名服务器,由 CDN 专用的域名服务器进行网站域名的解析。

    • 9、10:【本地 DNS 服务器】收到域名的解析结果后,【本地 DNS 服务器】缓存数据,并将解析结果返回给【本地 DNS 解析器】。【本地 DNS 解析器】缓存数据,并将解析结果返回给【客户端】。
    • 11:【客户端】缓存数据,并向缓存服务器发送请求,缓存服务器响应【客户端】的请求,将用户所需的内容返回给【客户端】。如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

    CDN 服务商的职责:CDN 专用的域名服务器将域名解析成缓存服务器的 IP 地址。

    CDN 使用者的任务:使用 CDN 服务的网站,将网站域名的解析权交给 CDN 专用的域名服务器,再将需要分发的内容注入 CDN(或者由 CDN 拉取),就可以实现内容加速了。

    CDN 的应用

    CDN 可完成:内容缓存、负载均衡、流媒体加速、动态内容加速 等任务。

    参考资料

    《CDN 技术详解》

    CDN技术详解-雷葆华著-微信读书 (qq.com)

    内容分发网络 | 凤凰架构 (icyfenix.cn)


    __EOF__

  • 本文作者: 飞鱼
  • 本文链接: https://www.cnblogs.com/feiyu2/p/CDN.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    Web服务器和PHP解释器
    私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)
    手记系列之四 ----- 关于使用MySql的经验
    数据挖掘——特征选择
    Java如何使用Hutool执行日期的加法和减法操作?
    Nginx 简单介绍(一)
    LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美
    部署Django报错-requires SQLite 3.8.3 or higher
    斗地主发牌程序的 Python 实现与解析
    低碳世界杂志低碳世界杂志社低碳世界编辑部2022年第7期目录
  • 原文地址:https://www.cnblogs.com/feiyu2/p/CDN.html