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服务器的负荷和传输距离 ...
随机推荐
- SSH Secure Shell 的使用
一,安装Secure Shell ,之后会出现SSH Secure Shell client 和SSH Secure File Transfer client 两个快捷方式. 需要服务器的IP地址,用 ...
- Git 部署 Web 网站
/*************************************************************************** * Git 部署 Web 网站 * 说明: * ...
- NYOJ-115 Dijlstra
原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 #include"iostream" #include" ...
- android SDK manager 无法获取更新版本列表【转载】
http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息: http://developer.android.c ...
- spark提交异常日志分析
java.lang.NoSuchMethodError: org.apache.spark.sql.SQLContext.sql(Ljava/lang/String;)Lorg/apache/spar ...
- 批量清除过期的binlog释放磁盘空间
方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下 1, 建立双master列表masterlist; 一个master一行. 2,远程获取master ...
- Scala总结
Scala总结 ===概述 scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala是纯粹的面向对象的语言.java虽然是面 ...
- TModJS:README
ylbtech-TModJS:README 1.返回顶部 1. TmodJS 项目已经停止维护,请使用更好的代替方案:art-template-loader TmodJS(原名 atc)是一个简单易用 ...
- 不卸载ceph重新获取一个干净的集群环境
不卸载ceph重新获取一个干净的集群环境 标签(空格分隔): ceph ceph环境搭建 运维 部署了一个ceph集群环境,由于种种原因需要回到最开始完全clean的状态,而又不想卸载ceph客户端或 ...
- 十道海量数据处理面试题 - 数据分析与数据挖掘技术-炼数成金-Dataguru专业数据分析社区
1.海量日志数据,提取出某日访问百度次数最多的那个IP. 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到IP是32位的,最多有个2^32个IP.同样可以采用映射的方法 ...