【10bet】CDN原理

来源:http://www.chinese-glasses.com 作者:Web前端 人气:195 发布时间:2020-04-29
摘要:时间: 2019-09-15阅读: 108标签: CDN 一本好的入门书是带你进入陌生领域的明灯,《CDN技术详解》绝对是带你进入CDN行业的那盏最亮的明灯。因此,虽然只是纯粹的重点抄录,我也要把《C

时间: 2019-09-15阅读: 108标签: CDN

一本好的入门书是带你进入陌生领域的明灯,《CDN技术详解》绝对是带你进入CDN行业的那盏最亮的明灯。因此,虽然只是纯粹的重点抄录,我也要把《CDN技术详解》的精华放上网。公诸同好。

CDN即内容分发网络,一般包括分发服务系统,负载均衡系统和管理系统。


第一章    引言 

分发服务系统,其基本的工作单元就是各个cache服务器。负责直接响应用户请求,将内容快速分发到用户;同时还负责内容更新,保证和源站内容同步。根据内容类型和服务种类的不同,分发服务系统分为多个子服务系统,如:网页加速服务、流媒体加速服务、应用加速服务等。每个子服务系统都是一个分布式的服务集群,由功能类似、地域接近的分布部署的cache集群组成。

 

在承担内容同步、更新和响应用户请求之外,分发服务系统还需要向上层的管理调度系统反馈各个cache设备的健康状况、相应情况、内容缓存状况等,以便管理调度系统能够根据设定的策略决定由哪个cache设备来响应用户的请求。

“第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽。这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量。如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户。(还有“中间一公里” 和“最后一公里”分别代表互联网传输传输和万维网流量向用户传送的最后一段接入链路)

负载均衡系统,是整个CDN系统的中枢。负责对所有的用户请求进行调度,确定提供给用户的最终访问地址。使用分级实现。最基本的两极调度体系包括全局负载均衡(GSLB)和本地负载均衡(SLB)。

从互联网的架构来看,不同网络之间的互联互通带宽,对任何一个运营商网络的流量来说,占比都比较小,收敛比是非常高的,因此这里通常都是互联网传输中的拥堵点(运营商互联互通的问题)

GSLB根据用户地址和用户请求的内容,主要是根据就近原则,确定向用户服务的节点。一般通过DNS解析或应用层重定向(HTTP 3XX重定向)的方式实现。

其次是骨干网堵塞问题,由于互联网上的绝大部分流量都要通过骨干网络进行传输,这就要求骨干网络的承载能力必须与互联网 的应用同步发展,但实际上两者并不是同步的,当骨干网络的升级和扩容滞后于互联网之上的应用的发展时,就会阶段性地使得大型骨干网的承载能力成为影响互联 网性能的瓶颈(区域互联互通问题,骨干网带宽瓶颈)

SLB主要负责节点内部的负载均衡。当用户请求从GSLB调度到SLB时,SLB会根据节点内各个cache设备的工作情况和内容分布情况等对用户请求重定向。SLB的实现由四层调度(LVS)、七层调度(Nginx)和链路负载调度等。

在互联网领域有一个“8秒定律”,用户访问一个网站时,如果等待网页打开的时间超过8秒,会有超过30%的用户放弃等待

管理系统,分为运营管理和网络管理子系统。

使用CDN会极大简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商、跨地域的用户覆盖

运营管理是对CDN系统的业务管理,负责处理业务层与外界系统交互所必须的一些收集、整理、交付工作。包括用户管理、产品管理、计费管理、统计分析等。

对于电信运营商,CDN是真正体现管道智能化的技术

网络管理系统实现对CDN系统的设备管理】拓扑管理、链路监控和故障管理,为管理员提供对全网资源的可视化的集中管理,通常用web方式实现。

 

第二章    CDN技术概述

 

CDN关键技术:

  1. 缓存算法[Squid];2. 分发能力;3. 负载均衡[Nginx](4. 基于DNS[BIND]);5. 支持协议;

缓存算法决定命中率、源服务器压力、POP节点存储能力

分发能力取决于IDC能力和IDC策略性分布

负载均衡(智能调度)决定最佳路由、响应时间、可用性、服务质量

基于DNS的负载均衡以CNAME实现[to cluster],智取最优节点服务,

缓存点有客户端浏览器缓存、本地DNS服务器缓存

缓存内容有DNS地址缓存、客户请求内容缓存、动态内容缓存

支持协议如静动态加速(图片加速、https带证书加速)、下载加速、流媒体加速、企业应用加速、手机应用加速

 

CDN提供一种机制,当用户请求内容时,该内容能够由以最快速度交付的Cache来向用户提供,这个挑选“最优”的过程就叫做负载均衡

从功能上看,典型的CDN系统由分发服务系统,负载均衡系统和运营管理系统组成

–          分发服务系统:最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用 户。同时cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache设备的数量、规模、总服务能力是衡 量一个CDN系统服务能力的最基本的指标

–          负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本 地负载均衡(SLB)。GSLB主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。SLB主要负 责节点内部的设备负载均衡

–          运营管理系统:分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。

负责为用户提供内容服务的cache设备应部署在物理上的网络边缘位置,即CDN边缘层。CDN系统中负责全局性管理和 控制的设备组成中心层(二级缓存),中心层同时保存着最多的内容副本,当边缘层设备未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向源站 回源(如果是流媒体,代价很大)

CDN骨干点和CDN POP点在功能上不同,中心和区域节点一般称为骨干点,主要作为内容分发和边缘未命中时的服务点;边缘节点又被称为POP(point of presence)节点,CDN POP点主要作为直接向用户提供服务的节点

应用协议加速:企业应用加速主要是动态加速和SSL加速

广域网应用加速:

SSL应用加速:由于需要大量的加密解密运算,SSL应用对服务器端的资源消耗是非常巨大的。CDN提供SSL应用加速后,由CDN的专用SSL加速硬件来完成加密解密运算工作

网页压缩:HTTP1.1提出对网页压缩的支持。在服务器端可以先对网页数据进行压缩,然后将压缩后的文件提供给访问用户,最后在用户浏览器端解压显示(但要衡量加解压时间)

第三章    内容缓存工作原理

 

有CDN前的网站服务技术

–          硬件扩展:高成本,灵活性和可扩展性比较差

–          镜像技术(mirroring):镜像服务器安装有一个可以进行自动远程备份的软件,每隔一定时间,各个镜像服务器就会到网站的源服务器上去获取最新的内容

–          缓存技术(caching):缓存代理缓存被访问过的内容,后续的相同内容访问直接通过缓存代理获得服务

–          CDN:是缓存技术的基础上发展起来的,是缓存的分布式集群实现

从技术层面看,Web架构的精华有三处:

–          超文本技术HTML实现信息与信息的连接;

–          统一资源标志符URI实现全球信息的精确定位

–          应用层协议HTTP实现分布式的信息共享

TCP连接在每一次HTTP(HTTP 1.0)请求和响应完成后就关闭,如果客户端还要请求其他对象,需要重新为每个对象建立TCP连接。当一个Web页面内包含多个对象并全部显示时,客户端需要与服务器建立的TCP连接数较多,对整个时延和网络流量造成了较大的影响

HTTP1.1采用了效率更高 的持续连接机制,即客户端和服务器端建立TCP连接后,后续相关联的HTTP请求可以重复利用已经建立起来的TCP连接,不仅整个Web页面(包括基本的 HTML文件和其他对象)可以使用这个持续的TCP连接来完成HTTP请求和响应,而且同一个服务器内的多个Web页面也可以通过同一个持续TCP连接来 请求和响应。通常情况下,这个持续的TCP连接会在空闲一段特定的时间后关闭,而这个最大空闲时间时可以设置的(连接复用)。

HTTP协议中的缓存技术:新 鲜度(时间值)和验证(验证信息如ETag或last-modified)时确定内容可否直接提供服务的最重要依据。如果缓存内容足够新鲜,缓存的内容就 能直接满足HTTP访问的需求了;如果内容过期,而经源服务器验证后发现内容没有发生变化,缓存服务器也会避免将内容从源服务器重新传输一遍

如果要通过META标签来控制页面不缓存,一般情况下会在Web页面的<head>区域中增加”pragma:no-cache”

验证的目的就是检验缓存内容是否可用。当中间缓存存在一个过期的缓存内容,并且对应的访问请求到达时,缓存应该首先向源服务器或者其他保存有未过期的缓存服务器请求验证来确定本地的缓存内容是否可用。(缓存内容过期,但源服务器没有更新内容,即缓存内容仍可用)

HTTP1.1介绍了cache-control显示指令来让网站发布者可以更全面地控制他们的内容,并对过期时间进行限制(控制是否缓存,怎么缓存)

HTTP gzip压缩:大多数情况需要压缩的文件时网页中出现最频繁的HTML、CSS、javascript、XML等文件,这类本身是没有经过压缩的文本文件,可以取得较好的压缩效果

Web缓存代理软件:Squid

负载均衡软件:Nginx

DNS服务器软件:BIND

第四章 集群服务与负载均衡

 

WEB 集群与负载均衡(一)基本概念-上

    Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器一样,这多台服务器共同来为客户提供更高性能的服务。集群更标准的定 义是:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理,此单一系统为客户工作站提供高可靠性的服务。
    而负载均衡的任务就是负责多个服务器之 间(集群内)实现合理的任务分配,使这些服务器(集群)不会出现因某一台超负荷、而其他的服务器却没有充分发挥处理能力的情况。负载均衡有两个方面的含 义:首先,把大量的并发访问或数据流量分担到多台节点上分别处理,减少用户等待响应的时间;其次,单个高负载的运算分担到多台节点上做并行处理,每个节点 设备处理结束后,将结果汇总,再返回给用户,使得信息系统处理能力可以得到大幅度提高
    因此可以看出,集群和负载均衡有本质上的不同,它们是解决两方面问题的不同方案,不要混淆。
    集群技术可以分为三大类:
    1、高性能性集群(HPC Cluster)
    2、高可用性集群(HA Cluster)
    3、高可扩展性集群
    
 一、高性能性集群(HPC Cluster)
     指以提高科学计算能力为目标的集群技术。该集群技术主要用于科学计算,这里不打算介绍,如果感兴趣可以参考相关的资料。
 二、高可用性集群(HA Cluster)
     指为了使群集的整体服务尽可能可用,减少服务宕机时间为目的的集群技术。如果高可用性集群中的某节点发生了故障,那么这段时间内将由其他节点代替它的工作。当然对于其他节点来讲,负载相应的就增加了。
    为了提高整个系统的可用性,除了提高计算机各个部件的可靠性以外,一般情况下都会采用该集群的方案。
    对于该集群方案,一般会有两种工作方式:
     ①主-主(Active-Active)工作方式
       这是最常用的集群模型,它提供了高可用性,并且在只有一个节点时也能提供可以接受的性能,该模型允许最大程度的利用硬件资源。每个节点都通过网络对客户机 提供资源,每个节点的容量被定义好,使得性能达到最优,并且每个节点都可以在故障转移时临时接管另一个节点的工作。所有的服务在故障转移后仍保持可用,但 是性能通常都会下降。
     10bet 1

       这是目前运用最为广泛的双节点双应用的Active/Active模式。

        支撑用户业务的应用程序在正常状态下分别在两台节点上运行,各自有自己的资源,比如IP地址、磁盘阵列上的卷或者文件系统。当某一方的系统或者资源出现故障时,就会将应用和相关资源切换到对方的节点上。

这种模式的最大优点是不会有服务器的“闲置”,两台服务器在正常情况下都在工作。但如果有故障发生导致切换,应用将放在同一台服务器上运行,由于服务器的处理能力有可能不能同时满足数据库和应用程序的峰值要求,这将会出现处理能力不够的情况,降低业务响应水平。

     
     ②主-从(Active-Standby)工作方式
      为了提供最大的可用性,以及对性能最小的影响,主-从工作方式需要一个在正常工作时处于备用状态的节点,主节点处理客户机的请求,而备用节点处于空闲状态,当主节点出现故障时,备用节点会接管主节点的工作,继续为客户机提供服务,并且不会有任何性能上影响。
          10bet 2   

  两节点的Active/Standby模式是HA中最简单的一种,两台服务器通过双心跳线路组成一个集群。应用Application联合各个可选的系统组件如:外置共享的磁盘阵列、文件系统和浮动IP地址等组成业务运行环境。

PCL为此环境提供了完全冗余的服务器配置。这种模式的优缺点:

  • 缺点:Node2在Node1正常工作时是处于“闲置”状态,造成服务器资源的浪费。
  • 优点:当Node1发生故障时,Node2能完全接管应用,并且能保证应用运行时的对处理能力要求。

 三、高可扩展性集群
     这里指带有负载均衡策略(算法)的服务器群集技术。带负载均衡集群为企业需求提供了更实用的方案,它使负载可以在计算机集群中尽可能平均地分摊处理。而需 要均衡的可能是应用程序处理负载或是网络流量负载。该方案非常适合于运行同一组应用程序的节点。每个节点都可以处理一部分负载,并且可以在节点之间动态分 配负载, 以实现平衡。对于网络流量也是如此。通常,单个节点对于太大的网络流量无法迅速处理,这就需要将流量发送给在其它节点。还可以根据每个节点上不同的可用资 源或网络的特殊环境来进行优化。
  负载均衡集群在多节点之间按照一定的策略(算法)分发网络或计算处理负载。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力,同时又可以避免单点故障。

 

WEB 集群与负载均衡(一)基本概念-下

 

前面已经说过负载均衡的作用是在多个节点之间按照一定的策略(算法)分发网络或计算处理负载。负载均衡可以采用软件和硬件来实现。一般的框架结构可以参考下图。
   10bet 3

 后 台的多个Web节点上面有相同的Web应用,用户的访问请求首先进入负载均衡分配节点(可能是软件或者硬件),由它根据负载均衡策略(算法)合理地分配给 某个Web应用节点。每个Web节点相同的内容做起来不难,所以选择负载均衡策略(算法)是个关键问题。下面会专门介绍均衡算法。

  web 负载均衡的作用就是把请求均匀的分配给各个节点,它是一种动态均衡,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把请求理分配出去。对于不 同的应用环境(如电子商务网站,它的计 算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。在OSI七层协 议模型中的第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算法),在数据链路层上实现负载均衡的原理是 根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch), 本身便是一种基于访问流量的控制方式,能够实现负载均衡。
   目前,基于负载均衡的算法主要有三种:轮循(Round-Robin)、最小连接数(Least Connections First),和快速响应优先(Faster Response Precedence)。
  ①轮循算法,就是将来自网络的请求依次分配给集群中的节点进行处理。
10bet,  ②最小连接数算法,就是为集群中的每台服务器设置一个记数器,记录每个服务器当前的连接数,负载均衡系统总是选择当前连接数最少的服务器分配任务。 这要比"轮循算法"好很多,因为在有些场合中,简单的轮循不能判断哪个节点的负载更低,也许新的工作又被分配给了一个已经很忙的服务器了。
  ③快速响应优先算法,是根据群集中的节点的状态(CPU、内存等主要处理部分)来分配任务。 这一点很难做到,事实上到目前为止,采用这个算法的负载均衡系统还很少。尤其对于硬件负载均衡设备来说,只能在TCP/IP协议方面做工作,几乎不可能深入到服务器的处理系统中进行监测。但是它是未来发展的方向。
 
 上面是负载均衡常用的算法,基于以上负载均衡算法的使用方式上,又分为如下几种:
  1、DNS轮询
   最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。 
   DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的 客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数 据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过 期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是 要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器
  2、反向代理服务器
    使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。 
   这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部服务器,而这种代理方式是代理多个客户访问内部服务器,因此也被称为反向代理模式。虽然实现这个任务并不算是特别复杂,然而由于要求特别高的效率,实现起来并不简单。 
   使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能。然而它本身也存在一些问题,首先就是必须为每一种服务都专门开发一个反向代理服务器,这就不是一个轻松的任务。 
   代理服务器本身虽然可以达到很高效率,但是针对每一次代理,代理服务器就必须维护两个连接,一个对外的连接,一个对内的连接,因此对于特别高的连接请求, 代理服务器的负载也就非常之大。反向代理方式下能应用优化的负载均衡策略,每次访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务 器本身的负载也变得非常大,最后反向代理服务器本身会成为服务的瓶颈。 
  3、地址转换网关
    支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。很多 硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡 策略来分配负载。由于地址转换相对来讲比较接近网络的低层,因此就有可能将它集成在硬件设备中,通常这样的硬件设备是局域网交换机。

 

第五章 全局负载均衡 (GSLB)

 

负载均衡就是智能调度

全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程,也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理。GSLB最通用的是基于DNS解析方式,还有HTTP重定向、IP路由等方法

DNS就是IP地址和网址互换

当需要访问abc.com这个站点时,实际上我们想要浏览的网页内容都存放在互联网中对应某个IP的服务器上,而浏览器的任务就是找到我们想要访问的这台服务器的IP地址,然后向它请求内容。

本地DNS服务器(local DNS server)是用户所在局域网或ISP网络中的域名服务器。当客户端在浏览器里请求abc.com时,浏览器会首先向本地DNS服务器请求将 abc.com解析成IP地址,本地DNS服务器再向整个DNS系统查询,直到找到解析结果。客户端可以配置DNS服务器或通过DHCP来分配

DNS给使用它的互联网应用带来额外的时延,有时时延还比较大,为了解决问题,需要引入“缓存”机制。缓存是指DNS查 询结果在主机(local DNS server)中缓存。在区内主机对某个域名发起第一次查询请求时,负责处理递归查询的DNS服务器要发送好几次查询(先查.root,再查.com之 类,再定位IP地址等)才能找到结果,不过在这过程中它也得到了许多信息,比如各区域权威DNS服务器(就是告诉你最终abc.com在哪里的DNS服务 器)和它们的地址、域名解析最终结果。他会把这些信息保存起来,当其他主机向它发起查询请求时,它就直接向主机返回缓存中能够找到的结果,直到数据过期。

客户端浏览器也可以缓存DNS响应信息。

Internet类资源记录分为

–          A记录(address):域名->多个IP的映射。对同一个域名,可以有多条A记录

–          NS记录(name server):指定由哪台DNS服务器来解析

–          SOA记录(start of authority):指定该区域的权威域名服务器

–          CNAME记录(canonical name):多个域名->服务器的映射

–          PTR记录(pointer record):IP->域名的映射

DNS系统本身是具备简单负载分配能力的,这是基于DNS的轮询机制。如果有多台Web服务器(多源)同时为站点 abc.com提供服务,abc.com的权威服务器可能会解析出一个或多个IP地址。权威域名服务器还可以调整响应中IP地址的排列方式,即在每次响应 中将不同的IP地址置于首位(取决于可服务能力和服务质量),通过这种方式实现对这些Web服务器的负载均衡

通过CNAME方式实现负载均衡:域名服务器获得CNAME记录后,就会用记录中的别名来替换查找的域名或主机名(实现多个域名->服务器映射)。后面会查询这个别名的A记录来获取相应的IP地址。

具体操作为:先将GSLB的主机名定义为所查询域名的权威DNS服务器的别名,然后将GSLB主机名添加多条A记录,分别对应多个服务器的IP地址。这样,本地DNS服务器会向客户端返回多个IP地址作为域名的查询结果,并且这些IP地址的排列顺序是轮换的。客户端一般会选择首个IP地址进行访问

负载均衡器作为权威DNS服务器:负载均衡器就会接收所有对这个域名的DNS请求,从而能够根据预先设置的一些策略来提 供对域名的智能DNS解析。F5的DNS具有完整的DNS功能以及增强的GSLB特性,Foundry、Nortel、Cisco和Radware的产品 能实现部分DNS功能

负载均衡作为代理DNS服务器:负载均衡器被注册为一个域名空间的权威DNS服务器,而真正的权威域名服务器则部署在负 载均衡器后面。所有的DNS请求都会先到达负载均衡器,由负载均衡器转发到真正的权威DNS服务器,然后修改权威DNS服务器返回的响应信息。真正的权威 DNS服务器正常响应浏览器的DNS请求,返回域名解析结果列表,这个响应会先发送到负载均衡器,而负载均衡器会根据自己的策略选择一个性能最好的服务器 IP并修改需要实现GSLB的域名的DNS查询响应,对其他请求透明转发,这样就不会影响整个域名空间的解析性能。

在基于DNS方式下无论采用何 种工作方式,都会有一些请求不会到达GSLB,这是DNS系统本身的缓存机制在起作用。当用户请求的域名在本地DNS或本机(客户端浏览器)得到了解析结 果,这些请求就不会达到GSLB。Cache更新时间越短,用户请求达到GSLB的几率越大。由于DNS的缓存机制屏蔽掉相当一部分用户请求,从而大大减 轻了GSLB处理压力,使得系统抗流量冲击能力显著提升,这也是很多商业CDN选择DNS机制做全局负载均衡的原因之一。但弊端在于,如果在DNS缓存刷 新间隔之内系统发生影响用户服务的变化,比如某个节点故障,某个链路拥塞等,用户依然会被调度到故障部位去

智能DNS功能,它在向本地DNS返回应答之前会先根据一些静态或动态策略进行智能计算。

–          服务器的“健康状况”

–          地理区域距离

–          会话保持

–          响应时间

–          IP地址权重

–          会话能力阈值

–          往返时间(TTL)

–          其他信息,包括服务器当前可用会话数、最少选择次数、轮询等

关于GSLB的部署问题

关于内容的缓存问题(如何智能调度最有效)和配置

在有些CDN中(用于视频网站加速的情况较多),网站需要加速的内容全部先缓存在OCS(内容中心),然后再将一部分 (通常是热门的内容)分发到个POP节点(Cache边缘集群),所以POP节点在某些时候会出现本地不命中而需要回OCS取内容或者从其他POP节点取 内容的情况

纯粹基于DNS方式的GSLB只能完成就近性判断。为实现智能调度,大多数解决方案需要在GSLB设备附近以旁路的方式 部署一台辅助设备(为方便描述,我们可称之为GRM——全局资源管理设备),用以实现和各POP节点的本地资源管理设备进行通信,完成CDN对各POP节 点的状态检查,并根据POP节点的状态和流量情况,重新制订用户调度策略,将策略实时发送到GSLB中去执行

因为DNS服务采用以UDP为基础的、默认无连接的访问方式,给分布式攻击(DDoS)带来了更大的便利。(有DNSSEC可以提供某程度的DDoS攻擊保護)

隐藏节点的存在很大程度上可以避免GSLB被攻击致瘫痪的机会,实际隐藏节点的实现方法就是在实际组网时除了部署正常工作的GSLB以外,再部署一台备份的GSLB设备,并将这一备份GSLB设备隐藏起来,不对外公布。

HTTP重定向(CDN GSLB用302重定向):在HTTP协议中,有三类重定向状态吗:301永久性转移(permanently moved)、302暂时转移(temporarily moved)、meta fresh在特定时间后重定向到新的网页

HTTP重定向只适用于HTTP应用,不适用于任何其他应用。比如微软的MMS协议,RTSP协议,就不能使用这种方式 进行重定向。其次,由于HTTP重定向过程需要额外解析域名URL,还需要与URL建立TCP连接并且发送HTTP请求,使得响应时间加长。第三,不同于 DNS方式,没有任何用户请求能被外部系统终结(不能缓存),所有请求都必须进入GSLB系统,这将成为性能和可靠性的瓶颈。(流媒体用的比较多)

基于IP路由的GSLB

基于路由协议算法选择一条路由到达这两个本地均衡器中的一个。因为每次访问请求的终端IP地址不同,路由条件也不同,所以在多个路由器上优选的路由不同,从统计复用的角度来看基本是在负载均衡器1和2之间均匀分布的。

IP路由在多个POP点之间实现的负载均衡是一种概率上的均衡,而不是真正的均衡(没做智能调度)。

比较项

基于DNS解析方式

基于HTTP重定向方式

基于IP路由方式

性能

本地DNS服务器和用户终端DNS缓存能力使GSLB的负载得到有效分担

GSLB处理压力大,容易成为系统性能的瓶颈

借助IP网络设备完成负载均衡,没有单点性能瓶颈

准确度

定位准确度取决于本地DNS覆盖范围,本地DNS设置错误会造成定位不准确

在对用户IP地址数据进行有效维护的前提下,定位准确且精度高

就近性调度准确,但对设备健康性等动态信息响应会有延迟

效率

效率约等于DNS系统本身处理效率

依靠服务器做处理,对硬件资源的要求高

效率约等于IP设备本身效率

扩展性

扩展性和通用性好

扩展性较差,需对各种应用协议进行定制开发

通用性好,但适用范围有限

商用性

在Web加速领域使用较多

国内流媒体CDN应用较多

尚无商用案例

 

第六章 流媒体CDN系统的组成

 

流媒体业务是一种对实时性、连续性、时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,对best-effort的IP网络都是一个不小的冲击

–          高带宽要求

–          高QoS要求

–          组播、广播要求(目前IP网络无法实现端到端的组播业务)

播放一个视频分为以下四个步骤

–          Access

–          Demux(音视频分离)

–          Decode(解码解压缩)

–          Output

RTP、RTCP、RTSP、RTMP的关系:RTSP协议用来实现远程播放控制,RTP用来提供时间信息和实现流同步,RTCP协助RTP完成传输质量控制<=(播放控制),

本文由10bet发布于Web前端,转载请注明出处:【10bet】CDN原理

关键词:

最火资讯