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. 一 ArrayList 及其源码解析

    1.数组介绍 因为数组在存储数据时是按顺序存储的,存储的内存也是连续的,所以其特点是读取数据比较容易,插入删除比较困难 2.arraylist源码分析 1)构造方法(默认容量为10) 2)插入数据 扩 ...

  2. Oracle 如何查看当前的实例及切换实例

    一.Oracle查看当前实例 1.打开终端,输入命令sqlpuls / as sysdba连接到数据库 2.输入命令show parameter name便可以查看当前登录数据库的参数配置,如下可以看 ...

  3. 红黑树和AVL树

    在此之前,我没有了解过红黑树以及AVL tree,真是孤陋寡闻.如果你也在学习的话,我们一起进步. 如果,你很急,那么只看红色加粗即可. 1.红黑树(RB-tree) 红黑树是一种特殊的二叉搜索树,特 ...

  4. Java BIO、NIO、AIO 基础,应用场景

    Java对BIO.NIO.AIO的支持: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必 ...

  5. 实时跟踪之TRACA

    背景: 目前,在实时跟踪领域存在着越来越多的先进方法,同时也极大地促进了该领域的发展.主要有两种不同的基于深度学习的跟踪方法:1.由在线跟踪器组成,这些跟踪器依赖网络连续的微调来学习目标的变化外观,精 ...

  6. 一周死磕fastreport ----ASP.NET (三)

    做了一周,然而说着很快  首先拖一个WebReport 点击design report 设置模板 引入dll using引用 设置好就打印就可以了 未来几天, 然后都在设置样式 ....如何就一周过去 ...

  7. ini文件读写 保存上次存储内容

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 01 数据库sql

    1, 关于mysql,常去的地方有:https://www.yiibai.com/mysql, http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1 ...

  9. ClassLoader源码分析与实例剖析

    在之前已经对类加载器做了不少实验了,这次主要是来分析一下ClassLoader的源码,当然主要是先从理解官方给它的注释开始,为之后自定义类加载器打好坚石的基础,下面开始: 而从类的层次结构来看也能感受 ...

  10. P1361 小M的作物 最小割理解

    如果没有组合效益的存在 我们直接每个点两部分的最大值即可 换成网络流模型来看 即把S点看作是A田 把T点看作是B田 每种作物看作一个点 分别连边(S,i,A[i]) (i,T,B[i]) 最后图中所有 ...