CDN之简介
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(浏览器-服务器)架构。
用户通过浏览器等方式访问网站的过程如下图:

- 用户在自己的浏览器中输入要访问的网站域名。
- 浏览器向本地 DNS 服务器请求对该域名进行解析。
- 本地 DNS 服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
- 本地 DNS 服务器中如果关于这个域名的解析结果的缓存,则以递归方式向整个 DNS 系统请求解析,获得应答后将结果反馈给浏览器。
- 浏览器得到域名解析结果,就是该域名相应的服务设备的 IP 地址。
- 浏览器向服务器请求内容。
- 服务器将用户请求内容传送给浏览器。
2.2 有 CDN 时
在网站和用户之间加入 CDN 后,用户不会有与原来不同的感觉。
最简单的 CDN 网络有一个 DNS 服务器和几台缓存服务器就可以了。一个典型的 CDN 用户访问调度流程如下图:

- 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,DNS 系统会最终将域名的解析全交给 CNAME 指向的 CDN 专用 DNS 服务器。
- CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
- 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
- CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局均衡设备返回一个缓存服务器的 IP 地址。
- 全局负载均衡设备把服务器的 IP 地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器 IP 地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的 GSLB 设备,将需要分发的内容注入 CDN,就可以实现内容加速了。
3. CDN 原理
- 挑选最优设备为用户提供服务;
- 如果某个内容被很多用户所需要,它就被缓存到距离用户最近的节点中。
CDN 公司在整个互联网上部署数以百计的 CDN 服务器(Cache),这些服务器通常在运营商的 IDC 中,尽量靠近接入网络和用户。CDN 在 Cache 中复制内容,当内容的提供者更新内容时,CDN 向 Cache 重新分发这些被刷新的内容。CDN 提供一种机制,当用户请求内容时,该内容能够由以最快速度交付 Cache 来向用户提供,这个挑选 "最优" 的过程就叫做负载均衡。被选中的最优 Cache 可能最靠近用户,或者有一条与用户之间条件最好的路径。
CDN之简介的更多相关文章
- 3.CDN加速简介
什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问 ...
- CDN概念+作用+特点+原理
CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...
- 第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 递归查询和迭代查询 ...
- PHP 面试知识点整理归纳
基础篇了解大部分数组处理函数 array_chunk — 将一个数组分割成多个 array_column — 返回数组中指定的一列 array_combine — 创建一个数组,用一个数组 ...
- 负载均衡与CDN简介
负载均衡 负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站.应用.数据库或其他服务的性 ...
- Highchart插件简介和引入方式
一.Highchart简介: Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表. Highchart ...
- CDN服务技术架构图
前言 在博文中 解读大型网站的演变过程 浅谈 举家搬迁静态文件到CDN 博文中都有涉及CDN,这次我们来详细讲解下CDN的架构 简介 CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器 ...
- jQuery 简介
jQuery 简介 jQuery 库可以通过一行简单的标记被添加到网页中. jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML ...
- 利用IIS管理器模拟CDN
CDN(Content Delivery Network,内容分发网络).其含义,在百度百科上是这么写的:CDN 是构建在数据网络上的一种分布式的内容分发网.CDN 的作用是采用流媒体服务器集群技术, ...
随机推荐
- mysql5.7 密码字段名更改
由password更改为authentication_string update user set authentication_string=password("123456") ...
- python之如何爬取一篇小说的第一章内容
现在网上有很多小说网站,但其实,有一些小说网站是没有自己的资源的,那么这些资源是从哪里来的呢?当然是“偷取”别人的数据咯.现在的问题就是,该怎么去爬取别人的资源呢,这里便从简单的开始,爬取一篇小说的第 ...
- 进程?线程?多线程?同步?异步?守护线程?非守护线程(用户线程)?线程的几种状态?多线程中的方法join()?
1.进程?线程?多线程? 进程就是正在运行的程序,他是线程的集合. 线程是正在独立运行的一条执行路径. 多线程是为了提高程序的执行效率.2.同步?异步? 同步: 单线程 异步: 多线程 3.守护线程? ...
- spring cloud EurekaClient 多网卡 ip 配置 和 源码分析(转)
https://blog.csdn.net/qq_30062125/article/details/83856655 1.前言对于spring cloud,各个服务实例需要注册到Eureka注册中心. ...
- gradle安装教程
https://blog.csdn.net/andwey/article/details/92800650 https://www.cnblogs.com/Jimc/p/10081605.html
- impala 下的SQL操作
1.修改字段中文名称 ALTER TABLE tablename CHANGE doc_rev_ind doc_rev_ind varchar(40) comment '收取要求' 2.增加一列 A ...
- win10 增加一个新磁盘
1.右键我的电脑,选择管理 可以看到C盘的空间相比较大,拿出来250G的空间做成E盘 2.选择OS(C:),右键,压缩卷,请稍后,点击压缩 3.此刻会看到,有一块黑色区域就是新建的未分配空间,这时我们 ...
- 十六, k8s集群资源需求和限制, 以及pod驱逐策略。
目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class ...
- mysql 5.6.38 数据库编译安装
一.系统环境: # cat /etc/redhat-release CentOS release 6.9 (Final) 二.mysql 编译安装: 1.安装依赖包: yum install -y n ...
- idea仿eclipse的export导出功能
自从开发工具从eclipse切换到idea来之后,才知道什么叫做'真香'.idea强大的扩展功能极大的拓展了他的可用性,最近有个功能就是通过idea的扩展插件搞定的. 事情是这样的,朋友使用eclip ...