58.学习心得-CDN的基本概念及工作过程

328 阅读10分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

文档参考:书名:《CDN技术详解》-雷葆华等

此前在 49.学习心得-秒杀架构 - 掘金 (juejin.cn) 章节中有提到cdn做静态资源加速。今天来学习一下具体的概念。

1. CDN的基本概念和产生背景

对于CDN这个名词,读者大可以望文生义:Content Distribute Network,直译成内容分发网络,或者也有人写成Content Delivery Network,内容交付网络。

大家常说的互联网,是广义的互联网,由两层组成:一层是以TCP/IP为代表的网络层(也是狭义互联网概念);另一层是以万维网WWW为代表的应用层。目前普遍存在一个认识误区,就是将互联网和万维网混作一谈。认清互联网的本质,辨识清楚互联网和万维网的区别,是理解整个互联网经济的关键和基础,也是认识CDN的基础。

以TCP/IP为核心的狭义的互联网(Internet),实际上是广义互联网的下层,是网络基础,更一般地说就是TCP/IP网络。这一层的主要作用是通过计算机之间的互联,将各种信息的数据报文以极低的成本进行传输,俗称“管道”,所有信息和内容在这个管道里进行传送。互联网的设计理念是:网络是中立和无控制的,任何人都没有决定权;网络是应用无关的,它的任务就是如何更好地将数据包进行端到端传输。这个设计理念从互联网诞生之初到现在从未被撼动,任何针对某种(类型的)内容对互联网进行优化的尝试其最后效果都不甚理想。因此,我们可以认为互联网不会试图对任何内容进行传输优化。

以万维网WWW为代表的应用层,是广义互联网的上层。这一层包括很多种类型的流量和应用,邮件、软件、在线影视、游戏、电子商务、移动应用等,所有SP(Service Provider,服务提供商)提供的都是这些用户看得见、摸得着的应用,它们丰富和方便了人们的生活,构成了我们常说的互联网业务和信息经济。

举个铁路的例子来解释两者的差别和关系:互联网是铁路轨道和信号系统,万维网则是在铁路上运行的列车之一。而在铁路上,除了万维网这个高速列车以外,还有慢车、通勤列车、货运列车和专业维修列车等。在互联网上,万维网是巨大的和非常重要的,但它并不是唯一。那些不使用WWW的应用同样运行在互联网上,互联网的巨大远远超过运行在其上的任何东西。

现在,我们看看网络层与应用层这上下两层的磨合中是否存在问题。从网络层面来看,在互联网这个铁路网中,有4个地方会造成列车拥堵,如图1-1所示,分别如下所述。

(1)“第一公里”,这是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽。这个带宽决定了一个网站能为用户提供的访问速度和并发访问量。 一个网站,其服务的用户越多,对其出口带宽的要求就越大,当用户请求的数据量超过网站的出口带宽,就会在出口处形成拥塞。越是业务繁忙时,用户的访问数量越多,这个拥塞就越严重,网站会在最需要向用户提供服务时失去用户。

(2)“最后一公里”,这是指万维网流量向用户传送的最后一段接入链路,即用户接入带宽。用户的平均接入带宽,是影响互联网上层应用发展的决定性因素之一。 在互联网发展的初期,用户主要通过拨号上网或ISDN等方式上网,网络接入速度很低,所以互联网内容以带宽占用非常小的文字为主,Telnet、BBS都是那时的主流应用。当万维网出现后,人机交互更加方便友好的多媒体内容开始在互联网上传播,接入带宽成为制约用户使用互联网的主要瓶颈。

(3)对等互联关口。这里的“对等互联”是指不同基础运营商之间的互联互通,一般两个运营商之间只有两三个互联互通点,可以想象这两三个点上产生多么大的流量。 当某个网站服务器部署在运营商A的IDC机房里,运营商B的用户要访问该网站,就必须经过A、B之间的互联互通点进行跨网访问。从互联网的架构来看,不同网络之间的互联互通带宽,对任何一个运营商网络的流量来说,占比都比较小,收敛比是非常高的,因此这里通常都是互联网传输中的拥堵点。

(4)长途骨干传输。首先是长距离传输时延问题,从网站服务器到用户之间要经过网站所在IDC、骨干网、用户所在城域网、用户所在接入网等,距离非常遥远,因此不可避免地带来较长的传输时延,影响用户体验,这一问题也是互联网本身无法解决的问题。其次是骨干网拥塞问题,由于互联网上的绝大部分流量都要通过骨干网络进行传输,这就要求骨干网络的承载能力必须与互联网的应用同步发展,但实际上两者并不是同步的,当骨干网络的升级和扩容滞后于互联网之上的应用的发展时,就会阶段性地使得大型骨干网的承载能力成为影响互联网性能的瓶颈。

CDN的产生与上面分析的一系列问题息息相关,如果这些问题没有手段缓解,那整个互联网将是与今天完全不同的另一番景象了。1995年,麻省理工学院教授,互联网发明者Tim Berners-Lee预见到当时互联网使用者已经习以为常的网络拥挤难题,未来会成为互联网应用的最大障碍。于是他向同事提出挑战,要发明一种全新的、从根本上解决问题的方法来推送互联网内容。他的这一提议造就了今天被大家普遍接受的互联网基础服务——CDN。

2. CDN的基本工作过程

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

CDN是如何工作的呢?让我们先看看没有CDN服务时,一个网站是如何向用户提供服务的。

今天我们看到的网站系统基本上都是基于B/S架构的。B/S架构,即Browser-Server(浏览器-服务器)架构,是对传统C/S架构的一种变化或者改进架构。在这种架构下,用户只需使用通用浏览器,主要业务逻辑在服务器端实现。B/S架构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript等)和ActiveX等技术,在通用浏览器上实现了C/S架构下需要复杂的软件才能实现的强大功能。

用户通过浏览器等方式访问网站的过程如图1-2所示。

image.png ①用户在自己的浏览器中输入要访问的网站域名。

②浏览器向本地DNS服务器请求对该域名的解析。

③本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。

本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。

⑤浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址。

⑥浏览器向服务器请求内容。⑦服务器将用户请求内容传送给浏览器。

在网站和用户之间加入CDN以后,用户不会有任何与原来不同的感觉。最简单的CDN网络有一个DNS服务器和几台缓存服务器就可以运行了。一个典型的CDN用户访问调度流程如图1-3所示。

image.png

①当用户点击网站页面上的内容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,就可以实现内容加速了。