[转帖]一文带你搞懂 CDN 的技术原理

一文,搞懂,cdn,技术,原理 · 浏览次数 : 0

小编点评

**全称:** Content Delivery Network **简介:** CDN 是一个内容分发网络,它可以将网站内容缓存到离用户更近的节点上,提高用户访问网站的响应速度。 **工作原理:** 1. 用户输入访问的域名。 2. 操作系统向 LocalDns 查询域名的 IP 地址。 3. LocalDns 向 ROOT DNS 查询域名的授权服务器 (这里假设 LocalDns缓存过期)。 4. ROOT DNS 将域名授权给 LocalDns。 5. LocalDns 将域名授权给智能调度 DNS。 6. 智能调度 DNS 根据一定的算法和策略(比如静态拓扑,容量等)将最适合的 CDN 节点 IP 地址提供给 LocalDns。 7. LocalDns 返回给用户端用户域名 IP 地址。 8. 用户访问站点服务器,CDN 节点服务器应答请求,将内容返回给客户端。 **优点:** - 缓解网络带宽小、用户访问量大、网点分布不均等等问题。 - 提高用户访问网站的速度和体验。 **关键技术:** - DNS (域名解析) - 域名授权 - 智能调度 DNS - 内容缓存 (Cache)

正文

http://blog.itpub.net/31545813/viewspace-2924432/

网络通信/物联网 编辑:李雪薇 时间:2022-11-22 09:11:41  1330  0

CDN 的全称是 Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。

简单的说,CDN 的工作原理就是将您源站的资源缓存到位于全球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。

CDN 对网络的优化作用主要体现在如下几个方面

解决服务器端的“第一公里”问题

缓解甚至消除了不同运营商之间互联的瓶颈造成的影响

减轻了各省的出口带宽压力

缓解了骨干网的压力

优化了网上热点内容的分布

传统访问过程

由上图可见,用户访问未使用CDN缓存网站的过程为:

用户输入访问的域名,操作系统向 LocalDns 查询域名的 ip 地址

LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)

ROOT DNS将域名授权 dns记录回应给 LocalDns

LocalDns 得到域名的授权 dns 记录后,继续向域名授权 dns 查询域名的 ip 地址

域名授权 dns 查询域名记录后,回应给 LocalDns

LocalDns 将得到的域名ip地址,回应给 用户端

用户得到域名 ip 地址后,访问站点服务器

站点服务器应答请求,将内容返回给客户端

通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.

LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)

ROOT DNS将域名授权dns记录回应给 LocalDns

LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址

域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns

LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址

智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns

LocalDns 将得到的域名ip地址,回应给 用户端

用户得到域名ip地址后,访问站点服务器

CDN 节点服务器应答请求,将内容返回给客户端。(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用 DNS(域名解析)来引导用户来访问 Cache 服务器,以实现透明的加速服务。由于用户访问网站的第一步就是域名解析,所以通过修改dns来引导用户访问是最简单有效的方式。

CDN网络的组成要素

对于普通的 Internet 用户,每个 CDN 节点就相当于一个放置在它周围的网站服务器。

通过对 DNS 的接管,用户的请求被透明地指向离他最近的节点,节点中 CDN 服务器会像网站的原始服务器一样,响应用户的请求。 由于它离用户更近,因而响应时间必然更快。

从上面图中虚线圈起来的那块,就是 CDN 层,这层是位于用户端和站点服务器之间。

智能调度 DNS(比如 f5 的 3DNS)

智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析请求将最终由 “智能调度DNS”负责处理。

它通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户可以得到快速的服务。

同时它需要与分布在各地的CDN节点保持通信,跟踪各节点的健康状态、容量等信息,确保将用户的请求分配到就近可用的节点上.

缓存功能服务

负载均衡设备(如lvs,F5的BIG/IP)

内容Cache服务器(如squid)

共享存储

CNAME记录(CNAME record)

CNAME即别名( Canonical Name );可以用来把一个域名解析到另一个域名,当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。

例如,你有一台服务器上存放了很多资料,你使用docs.example.com去访问这些资源,但又希望通过documents.example.com也能访问到这些资源,那么你就可以在您的DNS解析服务商添加一条CNAME记录,将documents.example.com指向docs.example.com,添加该条CNAME记录后,所有访问documents.example.com的请求都会被转到docs.example.com,获得相同的内容。

CNAME域名

接入CDN时,在CDN提供商控制台添加完加速域名后,您会得到一个CDN给您分配的CNAME域名, 您需要在您的DNS解析服务商添加CNAME记录,将自己的加速域名指向这个CNAME域名,这样该域名所有的请求才会都将转向CDN的节点,达到加速效果。

DNS

DNS 即 Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的 IP 地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。比如:上网时输入的 会自动转换成为 220.181.112.143。

常见的DNS解析服务商有:阿里云解析,万网解析,DNSPod,新网解析,Route53(AWS),Dyn,Cloudflare等。

回源 host

回源host:回源 host 决定回源请求访问到源站上的具体某个站点。

例子1:源站是域名源站为,回源host为那么实际回源是请求到`解析到的IP,对应的主机上的站点

例子2:源站是IP源站为1.1.1.1, 回源host为那么实际回源的是1.1.1.1对应的主机上的站点

协议回源

指回源时使用的协议和客户端访问资源时的协议保持一致,即如果客户端使用 HTTPS 方式请求资源,当CDN节点上未缓存该资源时,节点会使用相同的 HTTPS 方式回源获取资源;同理如果客户端使用 HTTP 协议的请求,CDN节点回源时也使用HTTP协议。

与[转帖]一文带你搞懂 CDN 的技术原理相似的内容:

[转帖]一文带你搞懂 CDN 的技术原理

http://blog.itpub.net/31545813/viewspace-2924432/ 网络通信/物联网 编辑:李雪薇 时间:2022-11-22 09:11:41 1330 0 CDN 的全称是 Content Delivery Network,即内容分发网络。其目的是通过在现有的In

[转帖]一文带你搞懂xxl-job(分布式任务调度平台)

https://zhuanlan.zhihu.com/p/625060354 前言 本篇文章主要记录项目中遇到的 xxl-job 的实战,希望能通过这篇文章告诉读者们什么是 xxl-job 以及怎么使用 xxl-job 并分享一个实战案例。 那么下面先说明什么是 xxl-job 以及为什么要使用它。

[转帖]图文结合带你搞懂 MySQL 日志之 Slow Query Log(慢查询日志)

https://my.oschina.net/GreatSQL/blog/5719211 GreatSQL 社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL 是 MySQL 的国产分支版本,使用上与 MySQL 一致。 作者:KAiTO 文章来源:GreatSQL 社区

[转帖]13 个 QA 带你了解线上压测的知识点

https://my.oschina.net/u/4526289/blog/5586897 摘要:设计一个线上压测系统能让我们学习到多少东西?这 13 个问题看你能否搞定。 本文分享自华为云社区《设计一个线上压测系统能让我们学习到多少东西?13 个问题看你能否搞定》,作者:breakDawn。 Q:

[转帖]一文带你掌握 Redis

https://www.bbsmax.com/A/8Bz8AKGkJx/ 一、摘要 谈起 Redis,相信大家都不会陌生,做过云平台开发的程序员多多少少会接触到它,Redis 英文全称:Remote Dictionary Server,也被称之为远程字典服务。 从官方的定义看,Redis 是一款开源

[转帖]一文带你玩转 Redis 的 RESP 协议 !

https://zhuanlan.zhihu.com/p/384251739 RESP 是 Redis 客户端与 Redis 服务器相互通信时使用的一个协议, 全称 REdis Serialization Protocol ,即 redis 串行协议,通俗易懂,也表明了 redis 的特点,串行化(

[转帖]一文带你了解mysql sql model的only_full_group_by模式

https://zhuanlan.zhihu.com/p/368440685 Mysql only_full_group_by与Error 1055问题分析 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 问题描述 ERROR

[转帖]一文了解 Java 中的构造器

https://my.oschina.net/u/4526289/blog/5577621 摘要:Java 也采用了构造器,并且还提供了一个垃圾收集器(garbage collector),当不再使用内存资源的时候,垃圾收集器会自动将其释放。 本文分享自华为云社区《一文带你了解 Java 中的构造器

[转帖]一代更比一代强!一文带你回顾DDR内存的前世今生

根据冯诺·依曼结构,计算机中要有存储器。所以直到今天,内存和硬盘仍然在电脑中占有非常重要的地位。与大容量的硬盘不同,内存在存取速度上有着非常惊人的表现,但是断电后又不能保存存入的信息。因此在电脑硬件长期的发展过程中,内存一直扮演着中转站的角色。和其他硬件一样,内存遵循着摩根定律,从最远古的SIMM到

[转帖]shell脚本之awk命令——按列求平均值、最大值、最小值

文章目录 写在前面awk求平均值awk求最大值awk求最小值awk求极值、均值的实际应用 写在前面 awk命令求极值和均值需要熟悉该命令的基本用法,如果你不熟悉该命令,请先阅读shell脚本之awk命令——分隔符介绍一文。本篇博文带你熟悉求平均值、最大值、最小值的方法,并以实际的应用带你进一步掌握a