1. 什么是 CDN?

来自 《什么是 CDN?》

CDN(内容交付网络)是一种高度分布式服务器平台,为交付 Web 应用程序、流媒体等内容专门优化。服务器网络分布于众多物理和网络位置,对最终用户的 Web 内容请求和快速安全媒体交付做出快速响应。网络在内容服务器(源站)和最终用户(客户端)间起到桥梁作用。

如果没有 CDN,内容源站服务器必须对每个最终用户请求做出响应。这一机制导致原始和随后加载的流量大幅增加,因此,如果出现极高的流量峰值或持续负载,源站出现故障的几率会增大。

CDN 在源站及接近最终用户的物理和网络位置,对最终用户的请求做出响应,从而分载内容服务器的流量,改善 Web 体验,让内容提供商及最终用户均从中获益。

CDN 主要因交付网站及其内容而出名。用户代理基本上是运行 Web 浏览器的设备,为渲染 Web 页面所需的内容(如 HTML、图像、CSS 和 JavaScript 文件) 提出请求。

对于大多数 CDN,每个内容请求会让最终用户映射到位置最优的 CDN 服务器,服务器会用已请求文件的缓存(预存储)版本予以响应。如果定位文件失败,CDN 会寻找 CDN 平台其他服务器上的内容,然后向最终用户发送响应。然而,如果内容不可用或过时,CDN 会承担源站服务器请求代理的角色,并存储获取的内容,为未来请求提供服务。

尽管 CDN 常用于交付网站内容,但 CDN 能交付的内容类型不止这一种。事实上,CDN 交付的内容类型多到难以置信,其中包括:4K 和高清内容视频;音频流;应用程序、游戏和 OS 更新等软件下载;包含医疗和财务信息的数据记录等等。只要能数字化的任何数据都能通过 CDN 交付。

CDN 提供商让公司有能力使用内容交付网络,向全球最终用户提供相关内容。

随着更多公司进军在线世界,整个世界的人们都在使用互联网购物、沟通和分享,内容提供商面临的挑战日趋增多,例如:交付不同类型的内容,根据不同的设备类型(设备检测)调整内容,保护其最终用户的数据和在线业务。考虑到内容交付网络的特性,CDN 提供商在帮助公司克服媒体交付的各种挑战方面独具优势。

2. CDN 基本工作过程

使用 CDN 会极大简化网站的系统维护工作量,网站维护人员只需将网站内容注入 CDN 的系统,通过 CDN 部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商、跨地域的用户覆盖。由于 CDN 将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨域长距离 IP 路由了。

2.1 无 CDN 时

在没有 CDN 时,一个网站是如何向用户提供服务的?

网站系统基本上都是基于 B/S 架构的,即 Browser-Server(浏览器-服务器)架构。

用户通过浏览器等方式访问网站的过程如下图:

  1. 用户在自己的浏览器中输入要访问的网站域名。
  2. 浏览器向本地 DNS 服务器请求对该域名进行解析。
  3. 本地 DNS 服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
  4. 本地 DNS 服务器中如果关于这个域名的解析结果的缓存,则以递归方式向整个 DNS 系统请求解析,获得应答后将结果反馈给浏览器。
  5. 浏览器得到域名解析结果,就是该域名相应的服务设备的 IP 地址。
  6. 浏览器向服务器请求内容。
  7. 服务器将用户请求内容传送给浏览器。

2.2 有 CDN 时

在网站和用户之间加入 CDN 后,用户不会有与原来不同的感觉。

最简单的 CDN 网络有一个 DNS 服务器和几台缓存服务器就可以了。一个典型的 CDN 用户访问调度流程如下图:

  1. 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,DNS 系统会最终将域名的解析全交给 CNAME 指向的 CDN 专用 DNS 服务器。
  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
  3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局均衡设备返回一个缓存服务器的 IP 地址。
  6. 全局负载均衡设备把服务器的 IP 地址返回给用户。
  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

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

3. CDN 原理

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

CDN 公司在整个互联网上部署数以百计的 CDN 服务器(Cache),这些服务器通常在运营商的 IDC 中,尽量靠近接入网络和用户。CDN 在 Cache 中复制内容,当内容的提供者更新内容时,CDN 向 Cache 重新分发这些被刷新的内容。CDN 提供一种机制,当用户请求内容时,该内容能够由以最快速度交付 Cache 来向用户提供,这个挑选 "最优" 的过程就叫做负载均衡。被选中的最优 Cache 可能最靠近用户,或者有一条与用户之间条件最好的路径。

CDN之简介的更多相关文章

  1. 3.CDN加速简介

    什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问 ...

  2. CDN概念+作用+特点+原理

    CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...

  3. 第7章 DNS & bind从基础到深入

    本文目录: 7.1 DNS必懂基础 7.1.1 域的分类 7.1.2 主机名.域名.FQDN 7.1.3 域的分层授权 7.1.4 DNS解析流程 7.2 DNS术语 7.2.1 递归查询和迭代查询 ...

  4. PHP 面试知识点整理归纳

    基础篇了解大部分数组处理函数 array_chunk — 将一个数组分割成多个    array_column — 返回数组中指定的一列    array_combine — 创建一个数组,用一个数组 ...

  5. 负载均衡与CDN简介

    负载均衡 负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站.应用.数据库或其他服务的性 ...

  6. Highchart插件简介和引入方式

    一.Highchart简介: Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表. Highchart ...

  7. CDN服务技术架构图

    前言 在博文中 解读大型网站的演变过程  浅谈 举家搬迁静态文件到CDN 博文中都有涉及CDN,这次我们来详细讲解下CDN的架构 简介 CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器 ...

  8. jQuery 简介

    jQuery 简介 jQuery 库可以通过一行简单的标记被添加到网页中. jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML ...

  9. 利用IIS管理器模拟CDN

    CDN(Content Delivery Network,内容分发网络).其含义,在百度百科上是这么写的:CDN 是构建在数据网络上的一种分布式的内容分发网.CDN 的作用是采用流媒体服务器集群技术, ...

随机推荐

  1. QT Creator 使用SVN的版本号做为编译的版本信息

    在使用qt Creator 开发中,如果想使用 svn 的源代码版本号来作为 build 的一个子版本号或者只是为了识别某个发布版本,与源代码的版本信息对应起来,可以方便调试对应的版本代码,我们可以通 ...

  2. 微信小程序data-传参

    <view bindtap="change" data-index="{{index}}">哈哈</view> change(event ...

  3. 5.1 Request 获取请求数据的几种方法

    //获取请求头和请求数据 //请求数据(1.通过超链接 2.通过表单) //获取请求数据的时候一般来说 都要先检查 再使用 public class RequestDemo2 extends Http ...

  4. 第五章、前端之JQuery

    目录 第五章.前端之JQuery 一.选择器 二.基本筛选器 三.样式操作 四.位置操作 五.文本操作 六.属性操作 七.文档处理 八.事件 九.动画效果 十.补充 第五章.前端之JQuery 一.选 ...

  5. Computer Vision_1_Active Appearance Models:Active Appearance Models——2001

    此为计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面. 1. Active Appearance Models 活动表观模型和活动轮廓模型基本思想来源 Snake,现在 ...

  6. 三次样条插值 cubic spline interpolation

    什么是三次样条插值 插值(interpolation)是在已知部分数据节点(knots)的情况下,求解经过这些已知点的曲线, 然后根据得到的曲线进行未知位置点函数值预测的方法(未知点在上述已知点自变量 ...

  7. 底部版权时间自动变化,网页在线qq咨询

    <p><small>© 众筹网<script>document.write(new Date().getFullYear());</script> &l ...

  8. Kotlin环境搭建---Hello World

    对于亲爹都已经宣布它的重要性了,那做为搞安卓的自己有理由去拒绝它么?当然目前国内真正在商业中去采用Kotlin去开发项目的应该不多,但是!这肯定会被普及的,所以为了走在时代的前言,接下来会从基础语法开 ...

  9. p4434 [COCI2017-2018#2] ​​Usmjeri

    思路 并查集的好题 考虑到求满足条件限制的方案数,显然观察样例可知结果就是2^x,x是互不影响的边的集合数量 然后考虑如何求互不影响的边的集合数量 可以使用并查集,用i和i+n表示这个点的父亲连向它的 ...

  10. windows下常用cmd命令

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本)1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr. ...