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 的作用是采用流媒体服务器集群技术, ...
随机推荐
- 学习cesium,关于图层界面的切换
最近学习cesium的3D引擎,有关图层切换的例子比较少,在官网上看见了一些例子加以自己的理解.投机了一种近似于图层切换的效果. 这种图层切换每次点击按钮时,会把其他的数据和实体给删除.然后再创建或加 ...
- C++ STL 之 函数对象
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用.注意 ...
- Marketing Cloud里取得系统contact数目的API
Marketing Cloud里的Contact标准tile(下图红色tile)上是没有当前系统contact数字显示的,请对比profile tile(下图黑色tile). 客户有需求希望在Laun ...
- Spring Data JPA 大纲归纳
第一天: springdatajpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查 ...
- TCP-HTTP ___UDP 应用场景
UDP 套接字应用之广播 import socket,threading #创建套接字 s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 设置套接 ...
- springboot无法获取证书内容
最近项目里面在接第三方验证的时候,需要用到生成的公钥和私钥证书.在demo测试的时候,发现在resources里面直接建立一个key文件夹放入证书文件,然后使用文件方式去获取,大概代码如下: File ...
- Airtest 支持的手机,系统等环境
据个人经验,Airtest 支持的以下设备会跑的比较666 Android 平台 华为荣耀9青春版 版本:8.0.0 型号:LLD-AL10 评价:自动化运行最6 华为 荣耀10青春版 版本:9.0. ...
- jQuery.trim()方法
定义和用法 $.trim() 函数用于去除字符串两端的空白字符. 注意:$.trim()函数会移除字符串开始和末尾处的所有换行符,空格(包括连续的空格)和制表符.如果这些空白字符在字符串中间时,它们将 ...
- osm3ge
https://www.acugis.com/opentileserver/ https://openmaptiles.org/docs/ https://www.maptiler.com/?_ga= ...
- 数据结构与算法——常用排序算法及其Java实现
冒泡排序 原理:依次比较相邻的两个数,将小数放在前面(左边),大数放在后面(右边),就像冒泡一样具体操作:第一趟,首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前 ...