CDN(Content Delivery Network或Content Ddistribute Network):内容分发网络也称为内容传送网络。 是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、影片、 应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。 这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。 为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供 服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的 网络覆盖层,因此被形象地称为“网络加速器”。
- 举个栗子:
大学的时候宿舍里面有一个同学A翻墙去东京看一个比较热的电影,日本人访问那个网站的时候,速度就会很快。 但是我在中国,当我去访问网站的时候速度就会很慢。这是由于地域的限制,中间隔了很多很多的网络, 导致我访问很慢。所有同学A想要把这个电影下载下来再看。结果宿舍内的其他同学BCD发现这个电影挺好看, 他也想看这个电影,如果同学BCD直接去该网站上下载这个电影,那速度肯定是奇慢无比。 但是如果同学A先把这个电影缓存下来,然后同学BCD可以直接通过内网来从同学A缓存的电影进行下载, 这样既不占用访问外网的带宽,也对目标网站的服务器压力小了很多,同时也大大的提高了速度。
这种把一个视频从比较远的服务器中,缓存下来,放到离用户比较近的地方,让他们可以就近获取, 更快速,这就是CDN,那个缓存视频的同学A就是一个CDN节点。
还有一个现实中的例子,我感觉是对CDN原理的最佳应用:
打个比方我想买一个手表,我先去淘宝上找了一个第三方的卖家,看了下价格,问了一下从哪发货啊,
是什么快递啊,他告诉我从深圳发货。到你那三天,因为他这个发货地点一般就是一个。
而我在京东上面的话,京东在全国各地都有仓库,他会根据你的位置,在全国范围内找离你最近、
送达最快的仓库,京东的这种仓储系统,就是类似CDN的作用。
CDN网络中包含的功能实体包括以下部分:
- 内容缓存:CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态Web内容和流媒 体内容,实现内容的边缘传播和存储,以便用户的就近访问。它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处。 内容分发包含从内容源到CDN边缘的Cache的过程。从实现上,有两种主流的内容分发技术:PUSH和PULL。 PUSH是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中心媒体资源库分发到各边缘的Cache节点。分发的协议可以采用Http/ftp等。通过PUSH分发的内容一般是比较热点的内容, 这些内容通过PUSH方式预分发到边缘Cache,可以实现有针对的内容提供。 对于PUSH分发需要考虑的主要问题是分发策略,即在什么时候分发什么内容。一般来说, 内容分发可以由CP(内容提供商)或者CDN内容管理员人工确定,也可以通过智能的方式决定, 即所谓的智能分发,它根据用户访问的统计信息,以及预定义的内容分发的规则,确定内容分发的过程。PULL是一种被动的分发技术,PULL分发通常由用户请求驱动。当用户请求的内容在本地的边缘 Cache上不存在(未命中)时,Cache启动PULL方法从内容源或者其他CDN节点实时获取内容。在PULL方式下,内容的分发是按需的。
- 内容交换机:处于用户接入集中点,可以均衡单点多个内容缓存设备的负载,并对内容进行缓存负载平衡及访问控制。
- 内容路由器:负责将用户的请求调度到适当的设备上。它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求, 以使用户请求得到最近内容源的响应。CDN负载均衡系统实现CDN的内容路由功能。它的作用是将用户的请求导向 整个CDN网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。 负载均衡系统是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。 通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。全局负载均衡主要的目的是在整 个网络范围内将用户的请求定向到最近的节点(或者区域)。因此,就近性判断是全局负载均衡的主要功能。 本地负载均衡一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务, 因此,CDN节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。
- 内容管理系统:负责整个CDN的管理,它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的 端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。内容管理在 广义上涵盖了从内容的发布、注入、分发、调整、传递等一系列过程。在这里,内容管理重点强调内容进人Cache 点后的内容管理,称其为本地内容管理。本地内容管理主要针对一个CDN节点(有多个CDN Cache设备和一个 SLB设备构成)进行。本地内容管理的主要目标是提高内容服务的效率,提高本地节点的存储利用率。 通过本地内容管理,可以在CDN节点实现基于内容感知的调度,通过内容感知的调度,可以避免将用户重定向到没有 该内容的 Cache设备上,从而提高负载均衡的效率。通过本地内容管理还可以有效实现在CDN节点内容的存储共享, 提高存储空间的利用率。
使用CDN的第一个也是最重要的原因:加速网站的访问。
对于TCP传输而言,TCP的速度会受到延迟时间与数据包漏失率影响。为了改善这些负面因素, 内容分发网络通常会指派较近、较顺畅的服务器节点将数据传输给用户。虽然距离并不是绝对因素, 但这么做可以尽可能提高性能,用户将会觉得比较顺畅。这使得一些比较高带宽的应用(传输高清影片)更容易推动。
归纳起来,CDN具有以下主要功能:
- 实现跨运营商、跨地域的全网覆盖
互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。 CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点上,合理部署CDN边缘 分发存储节点,充分利用带宽资源,平衡源站流量,这样可以节省骨干网带宽,减少带宽需求量并能 解决由于用户访问量大造成的服务器过载问题。 - 保障网站安全
CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞, 应对绝大部分的互联网攻击事件。防攻击系统也能避免网站遭到恶意攻击。 - 为了异地备援
当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性, 这就让你的网站可以做到永不宕机。 - 为了节约成本投入
使用CDN加速可以实现网站的全国铺设,你根本不用考虑购买服务器与后续的托管运维,服务器之间镜像同步, 也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力。
- 本地Cache加速:提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度, 并大大提高以上性质站点的稳定性。
- 镜像服务:消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户 都能得到良好的访问质量。
- 远程加速:远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器, 加快远程访问的速度。
- 带宽优化:自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据, 减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。
- 集群抗攻击:广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各 种D.D.o.S攻击对网站的影响,同时保证较好的服务质量。
CDN的工作原理就是将您源站的资源缓存到位于全国各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、分担源站压力,保证用户访问资源的速度和体验。
上面图中在使用CDN时,server-isp-DNS服务器不是直接把域名做A记录映射到源站,而是CNAME记录到调度中心,调度中心根据用户请求的来源,选择一个最近的CDN节点,主要的流程如下:
- 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
- CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
- 用户向CDN的全局负载均衡设备发起内容URL访问请求。
- CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址, 判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后, 区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
- 全局负载均衡设备把服务器的IP地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
使用CDN的方法很简单,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。
用户访问未使用CDN缓存资源的过程为:
- 浏览器通过前面提到的过程对域名进行解析,以得到此域名对应的IP地址;
- 浏览器使用所得到的IP地址,向域名的服务主机发出数据访问请求;
- 服务器向浏览器返回响应数据
使用CDN后:
-
当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
-
CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
-
用户向CDN的全局负载均衡设备发起内容URL访问请求。
-
CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
-
区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
-
全局负载均衡设备把服务器的IP地址返回给用户
-
用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
上面的字太多,有点绕?通俗点就是用户访问的资源原本是存放在你自己的服务器,通过修改DNS让用户根据IP等情况来选择合适的CDN缓存服务器来获取资源。
PCDN:(P2P技术和CDN的融合创新),下面是阿里云PCDN 的介绍:P2P内容分发网络(英文名:P2P CDN,简称PCDN)是以P2P技术为基础,通过挖掘利用电信边缘网络 海量碎片化闲置资源而构建的低成本高品质内容分发网络服务。客户通过集成PCDN SDK接入该服务后能获得等 同(或略高于)CDN的分发质量,同时显著降低分发成本。适用于视频点播、直播、大文件下载等业务场景。
我们知道,在移动终端上,通常上传流量会带来很多负面影响,比如消耗用户流量、更加耗电、频繁读写T卡/ROM影响硬件设备寿命等。阿里云PCDN利用海量的P2P节点资源,使终端能做到只下载而不用上传,大大扩展了P2P CDN的使用范围,这个优势已明显领先于那些完全依靠客户端上传流量而获得P2P效率的P2P产品。
P2P节点布局中有路由器、运营商接入层/汇聚层节点等二级节点可以为客户APP提供P2P带宽,不强制要求客户APP上传流量,所以移动端不需要上传流量也可以使用PCDN。
另外,PCDN针对各类业务场景做了进一步优化,使之对各场景的支持更加完善,给客户提供了更多差异化价值。在下载业务方面,支持下载速率控制(限速)。在带宽峰期对下载速度进行限制,可以有效控制带宽峰值。对于一些不追求下载速度的后台下载场景,同样可以对下载速度进行控制,使后台下载不至于影响前台的游戏、视频等网络体验。在安全方面,支持https,防止内容被篡改。并且集成了httpdns,保证了调度精准性,同时有效避免了域名劫持的发生。在防盗链的处理上,PCDN除了继承CDN的referer、鉴权策略、IP黑名单等防盗链机制,还从云+端的角度,使SDK跟本地业务结合,实现鉴权逻辑、DRM等,弥补了单纯靠云端鉴权的不足,使防盗链机制更加完善。
传统的CDN技术虽然可以在一定程度上加速流媒体,实现下载、直播和点播。但是其核心仍然是基于 集中服务器的结构,跟地域化管制紧密相连,很难降低其扩展的成本。另外,传统CDN技术在高峰时期 对突发流量的适应性,容错性等方面仍然存在一定缺陷。随着用户规模的迅速增加,对CDN应用发展提出了较大挑战。因部署或租用机房带来的多方面高昂成本和管理压力,学界和业界也研究了将P2P技术融入CDN部署和管理的技术,以降低运营成本和通信时延。迅雷、优酷、百度、阿里巴巴等公司就在2010年代多次试水用户端运行的P2P众包类CDN服务、专用设备,模式为用户自愿以PC或专用设备利用闲置上行带宽充当CDN缓存节点, 提供服务并赚取积分,而积分可兑换现金红包、特定商品或服务。
P2P技术则是打破了传统的Client/Server模式,是一种基于对等节点非中心化服务的平台方案。 P2P技术发展迅猛,迅速改变了整个互联网传统秩序。“去中性化”符合WEB2.0技术潮流。特别在流媒体领域, 由于采用Peer之间对等计算的模式,大大提高了资源共享的利用率,能在较低的成本下,充分利用空闲时间分 发数据,避免拥塞,提供具备高实时性,和容错性能的流服务。为流媒体服务开辟了一条崭新的道路。
PCDN的基础架构
关键组件
-
index服务:全局调度,把用户请求调度到最佳的机房
-
ZooKeeper (Global&Local):服务活动情况汇报给调度服务,动态配置更新
-
Nignx Proxy:支持私有协议的Nginx代理服务,针对不同文件一致性Hash到不同的Channel服务
-
Channel服务:记录文件和拥有文件的端点地址信息,为下载提供就近的端点地址
-
Realy服务:服务P2P建立连接和通讯
-
Hot服务:hot文件发现和推送
PCDN架构图:
P2P(Peer to Peer):点对点通信或称为对等联网。每个用户既下载数据,又作为服务器存储数据 并供其他用户下载。他的本质,是一种硬盘的共享,是把每个人电脑上的一部分硬盘,拿出来与其他人共享。
然而目前单纯的P2P应用亦存在它的问题,P2P业务的盛行会带来网络流量风暴;新闻监管缺失, 内容版权管理真空,盗版盛行;可能导致恶性病毒;给电信运营商以及产业链造成损害。此外,层出不穷的p2P 产品采用的拓扑结构、算法模型不尽相同,缺乏标准体系,应用模式也不清晰。这些问题都阻碍了P2P技术 进一步发展成为运营商级别的可靠技术平台。
早期的P2P技术,称为1.0版本,这个版本主要是依靠P2P尽力而为的提供服务,没有服务质量保障。像2000年前后出现的迅雷、BT、电驴等2C的应用。这类应用是互联网上内容传播分享的工具,并没有严谨的服务质量保证,而且从技术层面来说,这样的应用都是基于终端流量的上传,需要同时读写电脑本地的磁盘。
经过几年的发展,到2005年左右,发展到P2P的2.0版本,这个版本的主要特征是P2P+CDN,有了一定的服务质量保障。像风行、PPlive、PPS、优酷等视频网站,把P2P和CDN相结合,做了自建的技术方案。但是从技术实现上来讲,还是基于终端的流量互传,主要是PC客户端和Flash这两种形态。
到2014年以后,P2P技术发展到了3.0版本,这个版本的特征就是CDN+P2P技术+P2P节点资源,能提供全面的服务质量保障,性能不低于CDN。这个时期有优酷路由宝和迅雷赚钱宝等智能硬件产品面世,吸纳用户家庭和商业场所中闲散的带宽资源,打包成P2P的分发服务。P2P节点自此发展成了共享经济的模型。技术上,使用了智能硬件产品,客户端APP不再需要终端上传和读写磁盘。在业务场景上也支持的比较全面,长视频/短视频点播、大型赛事直播、秀场直播、大文件下载等都能完美支持。质量好,价格低,并且业务场景支持全面,这些因素促成了P2P CDN产品的不断发展,这个阶段积累了较大规模的商业化案例。
CDN对外服务是单节点、单链路的方式,这要求CDN节点有很高的稳定性。一旦CDN节点出现故障或者链路出现抖动、拥塞等,将势必影响服务质量。而PCDN对外服务是多点对单点、多链路的方式,这种特性使PCDN能够有效避免节点故障、链路网络问题带来的影响,使整个传输更加稳定。
PCDN对外服务时,CDN将被当做超级种子,同时也有很多P2P节点提供服务。虽然单个P2P节点的能力弱于CDN,但依赖数量众多的P2P节点和优良的调度算法,可以很好的保证整网的可靠性。CDN在节点水位问题、稳定性、网络波动等问题将要发生之前,P2P调度会尽可能从P2P节点把用户所要的内容返回给SDK,来抑制缓冲和卡顿的情况。所以PCDN相对于CDN,服务质量有所优化。
有数据显示,以视频点播业务为例,PCDN的首播时间等同于CDN,流畅性同比CDN平均提升1~3%。在下载业务方面,PCDN的下载速度、下载完成率等指标全面领先CDN。
PCDN的带宽分为一、二、三级节点带宽,一级节点带宽为CDN带宽;二级节点带宽为分布全国各地P2P节点提供的带宽,包含接入层节点、路由器等提供的运营商/家庭出口带宽;三级带宽为客户端之间互相分享的带宽。如下图所示,各级节点能力不同,从一级CDN节点到三级客户端节点,根据其自身能力,按网络质量、存储容量、稳定性、计算能力、节点数量、可控性六个基本维度进行划分。其中,CDN各方面能力是最强的,但是节点数量是最少的,成本是最高的。逐一往右推移,网络质量和存储能力、计算能力在不同程度的下降,但是节点数量在提升,成本在降低。
所以,PCDN在对外提供服务时,调度系统根据质量优先、兼顾成本的原则,对各级节点进行合理配比。以视频点播的业务为例,当播放器开始播放的时候,无论从用户还是从业务角度,都希望尽快拿到数据,不愿意缓冲和等待,这个时候PCDN默认CDN的响应是比较及时,调度系统首先从CDN上拿数据,即首帧时间与CDN等效。在正常播放过程中,播放器预缓冲时,播放器对数据的请求不是很着急,这时优先使用低成本的P2P,如果P2P没有命中或者调度系统评估要很慢才能回传,再回源CDN。通过这样的方法,能有效减少高成本的CDN用量。
通过这种方式,根据业务场景和使用量,PCDN的价格一般比CDN降低30%~50%。目前支持按日峰值带宽、月95峰值带宽和日流量三种计费方式。从客户的时间使用情况看,对于一个峰值带宽30G左右的业务,使用PCDN一年相比CDN可以节省至少100万。对于带宽峰值超过100G的业务,成本节省效果将更加可观。
PCDN目前已支持视频点播、视频直播、大文件下载各类典型的业务场景,包括但不限于长视频点播、短视频点播、互动娱乐直播、晚会赛事直播、应用市场分发等各类产品,全面支持Android、iOS、OTT、Flash、PC-Client等各种主流平台和主流协议。通过在娱乐、教育、体育、广电等多个行业积累的众多成熟服务客户案例,PCDN对各业务场景的理解与服务也不断升级优化,目前已能支持更多的下载场景、提供更好的防劫持防盗链方案和更好的视频播放体验,让质量和价格不再是矛盾体,达到高质量低成本这一超高性价比的效果,鱼和熊掌兼得。PCDN,期待为您提供更好的服务。
CDN | P2P | |
---|---|---|
可扩展性 | 扩展成本较高 | 低成本扩展 |
内容版权 | 可监管 | 不可监管 |
用户管理有效性 | 可实现用户的有效管理 | 无法进行有效的用户管理 |
QoS服务 | 可保障服务 | 无法保障 |
流量有序性 | 流量区域控制 | 无序无序 |
也就是说,P2P和CDN技术在几个关键点上,完全实现互补,如果能将两种技术有效的结合起来, 必然是一种更加完美的组合。于是,一种全新的思路是在CDN网络中,引入P2P技术。通过这种模式, 可以在不增加成本的同时有效提升CDN服务能力,更有效避免了P2P应用的诸多弊端,是在当前运营商 网络状况下最理想的媒体业务承载平台方案。
PCDN的主要优势:
- 流服务能力的提高
P2P传输的内容与原CDN的内容有所不同,在核心节点根据P2P协议对内容(包括文件和流)做切片处理, P2P用户将根据这些规则来完成P2P共享。P2P在边缘层的引入大大降低了边缘服务器的压力, 提高了文件传输和流媒体传输的效率。P2P技术充分利用了用户的闲置上行带宽,这样运营商可以通过更少 的边缘服务器,提供更多的业务量为更多的用户服务,以较低成本代价应对迅猛增长的客户规模带来的挑战。 - 可管理的P2P+CDN网络
为了避免骨干网上的流量对冲,通过集中的分布式架构,将P2P的流量严格限制在同一边缘节点的区域内。 这样就继承了P2P和CDN的优点,同时摒弃双方的缺点,避免电信骨干网上的流量无序性和风暴, 增强了网络的可管理性和服务高的可靠性。通过客户端,可以实现对用户的监控,流量的监管。 - 客户体验的改善
一方面,P2P+CDN结合的方式,使得有限的服务能力可以为更多的用户提供流媒体服务。超级种子的存在保证了 服务质量。另一方面,P2P技术的应用也能够更有效地防止因网络的抖动而产生对服务质量的影响。
Content Delivery Acceleration and Cost Reduction with P2P CDN (PCDN)
- 邮箱 :charon.chui@gmail.com
- Good Luck!