CDN-内容发布网络
整理《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边缘节点承担处理用户请求、应用数据计算、动态内容生成等工作。这种方案实现的关键是保持源站以及副本之间的一致性。
CDN-内容发布网络的更多相关文章
- CDN 内容分发网络技术
1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...
- 深度剖析:CDN内容分发网络技术原理--转载
1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之CDN内容分发网络
背景分析 EasyDSS流媒体解决方案提供一站式的转码.点播.直播.录像.检索.时移回放服务,极大地简化了开发和集成的工作,并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求.其 ...
- CDN内容分发网络
CDN的全称是Content Delivery Network,即内容分发网络,其设计思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. CDN系统是在网络 ...
- 史上最全的CDN内容分发网络实战技巧(网络优化)
今天来给大家分享下关于 CDN 的东西,以及我自己的一些发现.一些个人的拙见.总共分为 3 个部分:原理.详解.各种坑. 首先说一下 CDN 的基本原理部分,主要分 4 块来描述:CDN 的由来.调度 ...
- 什么是CDN内容分发网络?【刘新宇】
CDN 使用第三方OSS服务的好处是集成了CDN服务,下面来了解一下什么是CDN. CDN 全称:Content Delivery Network或Content Distribute Network ...
- CDN 内容分发网络
第一步,HTML的文件引用:HTML的文件头(也有文件中,文件尾)那边常有其他文件引用,比如CSS以及JS的引用. 就以bootstrap常用的引用来举个栗子你常见的引用可能会是这样的: <he ...
- jquery CDN(内容分发网络)使用
jquery CDN 给开发者提供一种捷径,即不下载jquary 就通过CDN能使用各个版本的jquery. 使用方法很简单,就是在HTML 文档中引用相关版本的jquery. 例如:我用百度的CDN ...
- CDN(内容分发网络)技术原理
1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...
- [转]CDN(内容分发网络)技术原理
1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...
随机推荐
- 【遍历二叉树】10判断二叉树是否平衡【Balanced Binary Tree】
平衡的二叉树的定义都是递归的定义,所以,用递归来解决问题,还是挺容易的额. 本质上是递归的遍历二叉树. ++++++++++++++++++++++++++++++++++++++++++++++++ ...
- Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
插入代码如下: 捕获到以下异常: 2019-03-18 21:09:35.431 8272-8272/com.xxxx.xxxx E/AndroidRuntime: FATAL EXCEPTION: ...
- noip退役赛
上下午 6 题一起考 自闭了 T1 小明要参加一场比赛,赛制给你一个表格 $p$ ,$p_{(i,j)}$ 表示他在第 $i$ 场比赛前如果输了 $j$ 场,他这一场赢的概率,他也可以故意输掉任意多场 ...
- loj515贪心只能过样例
bitset练习题... 位运算真的是玄学... 一开始真的“只能过样例” 后来发现把左移写成了小于号 鬼知道我在想什么/手动微笑 loj第一题 #include<iostream> #i ...
- MySQL_西安11月销售昨日未上架的产品_20161212
#C034西安11月销售昨日未上架的产品 SELECT 城市,a.订单日期,a.客户数,a.订单数,b.产品数,a.金额,c.销售确认额,c.毛利额,c.毛利率 FROM ( SELECT 城市,订 ...
- ACM学习历程—CodeForces 601A The Two Routes(最短路)
题目链接:http://codeforces.com/problemset/problem/601/A 题目大意是有铁路和陆路两种路,而且两种方式走的交通工具不能在中途相遇. 此外,有铁路的地方肯定没 ...
- IronPython for ASP.NET 部署注意事项
用 IronPython for ASP.NET 开发的网站,在部署时,除了发布 bin 目录下的 IronPython.dll, IronMath.dll, Microsoft.Web.IronPy ...
- 时空上下文视觉跟踪(STC)算法
论文原文以及Matlab代码下载 算法概述 而STC跟踪算法基于贝叶斯框架,根据跟踪目标与周围区域形成的的时空关系,在图像低阶特征上(如图像灰度和位置)对目标与附近区域进行了统计关系建模.通过计算置信 ...
- IPC的使用
IPC,Inter-Processor Communication是SYS/BIOS处理核间通信的组件: IPC的几种应用方式: 1.最小使用(Minimal use) 这种情况是通过核间的通知机制( ...
- C/C++的区别
C和C++的关系:就像是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设 ...