整理《CDN技术详解》一书中重要的内容。
互联网与万维网
广义的互联网,由两层组成:一层是以TCP/IP为代表的网络层;另一层是以万维网WWW为代表的应用层。辨识互联网和万维网的区别,是认识CDN的基础。
互联网(网络层)
以TCP/IP为核心的狭义的互联网,实际上是广义互联网的下层,是网络基础。更一般地说就是TCP/IP网络。这一层的主要作用是通过计算机之间的互联,将各种信息的数据报文以极低的成本进行传输,俗称“管道”,所有信息和内容在这个管道里进行传送。
互联网的设计理念是:
- 网络是中立和无控制的,任何人都没有决定权
- 网络是应用无关的,它的任务就是如何更好地将数据包进行端到端传输
万维网(应用层)
以万维网WWW为代表的应用层,是广义互联网的上层。这一层包括很多种类型的流量和应用,邮件、软件、在线影院、游戏、电子商务、移动应用等,所有SP(service Provider,服务提供商)提供的都是这些用户看得见、摸得着的应用。构成了我们常说的互联网业务和信息经济。
总结:互联网就是铁路轨道和信息系统。万维网则是铁路上运行的列车之一。
CDN出现的背景
在互联网这个铁路网中,有四个地方会造成列车拥塞。
- “第一公里:网站的出口带宽,这个带宽决定了网站能为用户提供的访问速度和并发访问量。用户请求数据量超过出口带宽,就会在出口形成拥塞。就像节假日,出城的高速出口,比平时更多人通过,但是出口只有两三个,所以造成拥塞。
- “最后一公里”:万维网流量向用户传递的最后一段接入链路,即用户接入带宽。用户的平均接入带宽,是影响互联网上层应用发展的决定性因素之一。通过ADSL,丰富的接入手段(光纤入户,WiFi,3G/4G/5G)等手段,最后一公里问题基本上已经得到解决。
- “对等互联关口”:不同基础运营商支架的互联互通,一般两个运营商之间只有两三个互联互通点。这里通常是互联网传输的拥堵点。
- “长途骨干传输”:首先是长距离传输时延的问题,从服务器到用户之间要经过很长的距离,这是互联网本身无法解决的问题。其次是骨干网拥塞问题。互联网上绝大部分流量都要经过骨干网络进行传输,骨干网的承载能力成为影响互联网性能的瓶颈。
应用层,最值得关注的是服务响应时间。服务响应时间基本是由服务器响应时间和网络时延组成的。影响服务器响应时间的因素包括协议处理时间、程序性能优化、内容读取速度等方面。网络时延则由数据报文在网络传送中被各个路由器、交换机转发发生的时延长总和。
CDN的工作过程
互联网用户服务访问流程
- 用户在浏览器中输入要访问的网站域名
- 浏览器向本地DNS服务器请求对该域名的解析
- 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求
- 本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器
- 浏览器得到域名解析结果,就是该域名相应的服务器设备的IP地址
- 浏览器向服务器请求内容
- 服务器将用户请求内容传送给浏览器
带有CDN的服务访问过程
- 用户点击网站页面上的URL,经过本地DNS系统解析,DNS系统会将最终将域名的解析权交给CNAME指向的CDN专用DNS服务器
- CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回给用户
- 用户向CDN的全局负载均衡设备发起内容URL访问请求
- CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择依据:
- 根据用户IP地址判断距离用户最近的服务器;
- 根据资源URL判断哪台服务器上有所需资源;
- 查询各个服务器当前的负载情况,判断哪台服务器尚有服务能力。
- 全局负载均衡设备把服务器的IP地址返回给用户
- 用户向缓存服务器发起请求,缓存服务器响应用户的请求。如果这台服务器没有用户需要的内容,但是区域负载均衡设备依然将它分配给了用户,就向这台服务器的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉取到本地。
CDN架构
功能架构
典型的CDN系统由分发服务系统、负载均衡系统和运营管理系统三大部分组成。
分发服务系统,主要实现将内容从内容源中心向边缘的推送和存储。基本工作单元是许许多多的Cache设备(缓存服务器),Cache负责使用缓存响应最终用户的访问请求。Cache还负责源站点进行内容同步。
一般根据内容类型和服务种类的不同,分发系统分为多个子系统,如上图中的静态内容激素,动态内容加速等等。
负载均衡系统:CDN系统的中枢神经。负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。
一般负载均衡都是分级实现的,两级分为全局负载均衡(GSLB)和本地负载均衡(SLB)。
运营管理系统:分为运营管理和网络管理两个子系统。运行管理包含客户管理、产品管理、计费管理、统计分析等。网络管理实现对CDN系统的网络设备管理、拓扑管理、链路监控和故障管理,为管理员提供管理操作界面。
部署架构
下面是一个典型的三级部署示意图。
边缘层:为用户提供内容服务的Cache设备部署在网络边缘位置。
中心层:保存最多的内容副本,当边缘未命中时,会向中心层请求。如果中心层也未命中,需要中心层向源站回源。
区域层:减轻中心层压力,负责一个区域的控制和管理,也保存部分副本供边缘层访问。
POP:point-of-presence,边缘节点,直接为用户提供服务。
骨干点:中心和区域的节点。
CDN系统分类
web系统分层架构
表现层:接收用户的请求以及业务逻辑层吹结构的返回以及展示
业务逻辑层:处理具体业务逻辑,根据表现层传来的用户需求向数据访问层发出数据查询要求并将查询结果进行整合,返回给表现层
数据访问层:对原始数据进行保存和管理,并为业务层或者表现层提供数据查询服务
基于内容类型分类
- 网页加速(静态网页和动态网页):缓存网页
- 流媒体加速:缓存流媒体
- 文件传输加速:缓存文件
- 应用协议加速
- 广域网应用加速
- SSL应用加速:CDN提供SSL加速硬件完成加密解密工作
- 网页压缩:CDN对网页内容进行压缩,提供给用户,加速传输速度
基于内容生成机制分类
CDN实现网页加速本质上就是将Web源站各个层次的功能转移到CDN边缘cache上完成。
- 表现层复制
- 全站复制
静态内容只需要CDN提供表现层复制的功能。目前大多CDN都是只处理静态内容请求的网络加速。
动态内容需要在CDN上复制和缓存业务逻辑层以及后台数据访问层,从而在CDN边缘节点承担处理用户请求、应用数据计算、动态内容生成等工作。这种方案实现的关键是保持源站以及副本之间的一致性。