热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CDN总结之一

前言:一直想做一个CDN的全面总结,虽然没有做出什么东西,但是要做到知其所以然。辛苦总结,请尊重作者。PDF版本已经上传ht

前言:一直想做一个CDN的全面总结,虽然没有做出什么东西,但是要做到知其所以然。辛苦总结,请尊重作者。


PDF版本 已经上传http://ishare.iask.sina.com.cn/f/25611471.html

----------------------------------------------------------------------------------------------

1什么是CDN


1.2 背景

互联网已成成为人们生活不可或缺的部分。互联网应用的快速发展,应用转变趋势为:强调互操作性、以用户为中心的设计、在线服务、允许多终端多网络的接入,互联网也相应的从一个基于内容的通信架构(content-based communication)成为了一个基于社会的组织网络(social-based community network)。新的应用不仅仅要求网络的简单性与扩展性,还包括对可用性、可靠性、可扩展性,以及具体服务的其他特性要求,为了克服目前网络的缺点、满足未来应用的使用,CDN是一个重要的手段。[1]


1.2.1 应用转变趋势

Higher Scalability(高可扩展性):最新的数据(June, 2011)显示,互联网用户已经达到了6.9billion,而且这一数字持续增长。[2]同时,不同的电子终端也接入到网络。这些需要网络以低成本、高效率的方式分发和处理内容。

Higher Capability(高能力性):互联网上数据类型的增多以及其大小的大幅增加,要求网络有更高的处理、存储和通信能力。

Higher quality of service(QoS):目前流行的流媒体应用和SNS应用,都需要有较高的QoS保证,例如:快速启动(lower startup delay,即用户从发出请求到被相应的时间间隔)、低时延、高连接性等。

Stronger interactivity(更高的交互性):互联网已成为一个社区性网络,内容的提供不再是单靠以往从单一数据源获得数据,现在人人都可以成为内容的创建者和发送者,即除了以往从client到central server的模式,增加了users-to-users的模式。

Heterogeneity(异构性):重点体现在两个方面:设备与网络,即异构的设备终端和接入网络。

安全性:不同的应用对网络安全要求具有差异性。


1.2.2 IP网络的局限性

自从DARPA网络和Galactic Network概念[3](由J.C.R. Licklider提出,允许用户在世界的任意地方搜集数据、处理程序)在1962年产生以来,互联网改变了计算机和通信世界。其主要目的就是为了资源的共享。

基于包交换(packet-switched)的IP网络采用端到端的原理[4],其设计原理可以概括为:分层、基于包交换、合作网络、端到端。[5]


基于TCP/IP协议簇的网络分层

从上图可以看到基于TCP/IP协议的网络分层结构,主要特点:

①一个漏斗状的模型,用最简单的中间网络层支持复杂多样的传输层和链路层,漏斗的中间是整个网络的关键,极小的限制上层和下层。

②端到端。将网络功能尽量精简,可以变相的认为是将应用特定的功能移出了网络核心中,只是提供通用的服务,这样的好处有:减少核心网络的复杂性、网络通用性、应用不依赖于网络的操作,增加了可靠性。[4]

③尽最大努力的传输、无状态,保证了效率。

其主要的缺点:

a.               可用性。网络上应用的数据种类丰富、数据量巨大,导致带宽消耗迅速,需要保证数据和相关应用服务的可用性。

b.               安全性。只能提供端到端的保证,不能满足各异的应用安全要求,例如:内容私密性、完整性、攻击时的服务可用性等。

c.                其他:目前的应用与服务在功能、速率、效率、成本方面要求多样化,对网络也有相应的能力要求。


1.2.3 解决的思路

虽然IP网络简单、可扩展,但是缺少QoS保证、通信控制和监控管理机制。为了克服上述缺点,有两个思路:

a.     增加新的设计:即在现有的网络结构基础上,增加新的组件或功能。

b.     采用全新的设计:摒弃原有设计,针对新出现的要求进行设计。

(CDN思路)在通用IP网络之上建立虚拟的覆盖网,从而在IP中添加额外的功能,包括安全性、弹性、资源的控制性,此外还有对异构网络的兼容性。


1.3 概念

CDN通过利用内容副本达到最大化网络带宽、改进访问性和内容正确性的效果。[6]

CDN是由分散的主机组成,通过维护数据副本使得在用户从网络获得数据时达到带宽最大化。[1]

CDN通过提供服务来改进网络性能,包括带宽最大化(maximizing bandwidth)、改进可用性(improving accessibility)、通过副本保证数据正确性。通过将内容发送到靠近用户的缓存或边缘服务器,提供快速可靠的应用和服务。[7]


1.3.1 典型组成

一系列代理服务器(surrogate servers):分布式的、存储源服务器内容;

路由器和网络设备:发送内容请求到最合适的地方和代理服务器;

统计机制:源服务的日志和信息


1.3.2 两个信息流

    客户端和代理服务器之间;代理服务器和源服务器之间


1.3.3 逻辑组件

CDN逻辑上有内容交付(content-delivery)、请求重路由、内容分布(distribution)和计费组件构成。

内容交付组件包含了一系列的服务器用来向用户分发数据副本。

请求重路由组件负责将用户的请求转发到合适的边缘服务器。同时请求路由组件还和内容分发组件进行通信,从而保证CDN缓存内容的有效性。

内容分布组件将源服务器的内容存储到边缘服务器并保证缓存一致性。

计费组件记录用户访问信息和服务器使用信息。该信息被用来进行通信监控和用户付费。


1.4 历史

在过去几十年的发展中,随着因特网的成长和成熟,网络通信量剧增,主要是访问量的增加、系统复杂性的提高和内容的丰富。[8]

在CDN尚未出现的十年中,互联网上的内容主要是小规模的文本和图片。为了更加高效的传输这些内容,早期的CDN提供者通常采用高度分布式的CDN。这种CDN被描述为深入到ISP中(deep into ISPs)[9],主要部署在接入网中(Point of Presence)。其重要思想就是把内容放到离用户更近的地方,来提升用户访问的性能和吞吐量。具体实施的主要方式有:增加或者改进硬件(高快的处理器、更大的内存和硬盘、更高的带宽)、缓存代理(靠近用户)。使用缓存代理时,用户可以通过设置浏览器,将其请求发送到缓存服务器而不是源服务器;同时缓存的级别也有所不同,例如有本地缓存、区域缓存、全球性缓存。

随着应用的增长和访问速度的加快,多媒体数据分发成为用户的宠儿。基于CDN建立大规模数据中心成为保证大规模多媒体数据分发高效性的有力工具。这个方法可以定义为将ISPs带到了家庭[9],即在有限的地点,部署用高速网络连接的内容存储服务器,从而建立大型数据中心。采用这种方式的CDN,实际中包含了一系列服务器,每个服务器承担了一部分对同一站点请求访问的负载。[10]具备一定的可扩展性和容错性,如何减少配置开销和加快部署速度成为主要问题。

将P2P技术融入到CDN中。P2P技术是利用最终用户的资源来解决大规模用户下对大容量数据请求的情况。P2P有效解决了扩展性的问题,能够有效的降低对服务器的要求。将P2P技术融入到CDN中,就是为了达到CDN中的可靠性和可管,与P2P的可扩展性结合的效果。

现在也有很多云服务提供商结合CDN推出了一系列的服务。在云CDN中进行内容分发,其主要目的是为了在已存在的云之间建立高速的连接,允许用户将内容的智能定位和存储。


1.5 市场

2009年CDN的增长达到两位数,利润上升了16.4%,达到了$1.37billion。[11]





市场分布图

    如上图所示,这是07年Frost&Sullivan报告中的CDN市场分布图。截止到08年,Akamai拥有40000多台服务器,部署在超过67个国家,其分发的网络流量占全球网络流量的15-20%。[12]

1998,出现第一个CDN。几家公司一事到应该建设CDN在不增加硬件成本的前提下增加可靠性和可扩展性。

1999:出现了利用提供高速、可靠web内容分发服务的几家专业盈利公司(例如Akamai和Mirror Image)。

2000:在美国,CDN成为了一个巨大市场,达到了$905million,预计在2007会达到$12billion。

2001:由于发生因大量用户同时访问网站导致的网站崩溃情况,其实就是911事件导致的访问问题,很多企业开始关注建设CDN。

2002:一些大型ISP开始建设自己的CDN。

2004:超过3000家公司使用CDN,每个月花费将近$20million。

2005:CDN依靠流媒体视频和音频的利润增长达到了40%。

 

 

 

 

 

参考文献:

[1]Y.Hao,L.Xuening, M.Geyong and L.Chuang. “Content Delivery Networks: A Bridge betweenEmerging Applications and Future IP Networks”, IEEE Network, July/August 2010.

[2] http://www.internetworldstats.com/top20.htm

[3]Licklider, J.C.R.,and Clark, W. “On-Line-Man-Computer Communication”, Aug, 1962.

[4]M.S.Blumenthaland D.D.Clark, “Rethinking the Design of the Internet: The End-to-End argumentsvs. the Brave New World”, ACM Trans. Internet Tech, vol.1, no.1, Aug.2001,pp.70-109.

[5]A. Feldmann, “InternetClean-Slate Design: What and why?” ACM SIGCOMM Comp. Commun. Rev., vol.37,no.3, July 2007, pp.59-64.

[6]Vakali, A. and Pallis, G. “Content delivery networks: Status andtrends”. IEEE Internet Computing 7,6(Nov./Dec.2003), 68-74.

[7]G. Pallis, and A. Vakali, “Insight and Perspectives for ContentDelivery Networks”, Communications of the ACM, Vol.49, No.1, ACM Press, NY,USA, pp.101-106. Jan, 2006.

[8]M. Hofmann, and L.R.Beaumont, Content Networking: Architecture,Protocols and Practice, Morgan Kaufmann Publishers, San Fransico, CA, USA,pp.129-134, 2005.

[9]C. Huang et al. “Understanding Hybrid CDDNP2P: Why Limelight Needsits Own Red Swoosh”, Proc. NOSSDAV, May 2008, pp.75-80.

[10] M. Hofmann, and L. R. Beaumont, Content Networking: Architecture,Protocols, and Practice, Morgan Kaufmann Publishers, San Francisco, CA, USA,pp. 129-134, 2005.

[11] http://www.accustreamresearch.com/cdn.html

[12] http://www.akamai.cn/enzs/html/perspectives/index.html


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 俗话说,好记性不如烂笔头,这些东西也都是我Google来的,做个笔记以后自己安装也方便些。因为官方wiki的BeginnersGuide讲的非常好,大部分步骤按照wiki一步一步来就 ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
author-avatar
yishengyishi2004929_621_834
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有