您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

CDN系统调度原理与技术选型

时间:2020-12-14 14:14:19  来源:  作者:

一个通用型的CDN,如果要服务广域范围内的用户,那必然要在一个广大的区域内部署服务节点。那么,一个很重要的问题就来了,就是如何将用户的访问导向到最优节点上。

最优的含义有两层,一是访问速度最快,二是地理上最接近。从广域网络的特性上来说,一般情况下是同城同运营商的两端之间通信效果最好。

而普通用户上网,大致的过程就是终端通过http协议访问一个URL地址,然后由本地DNS解析得到服务器的IP地址。终端再向获得的IP地址发起TCP连接,收取数据。

CDN系统调度原理与技术选型

无CDN时的上网过程

上图所示是一般的访问互联网的过程。而在CDN系统里,终端要想与同城同运营商的节点服务器连接上,这就是全局调度要解决的核心问题。

在图中就是“返回服务器IP地址”这一步,最理想情况下,本地DNS返回的就是最优节点地址。接下来就说明从技术上如何实现这一步。

全局调度

基于智能DNS的调度

用户有可能在全国任何一个地点上网,不过总是要通过DNS系统解析域名而获得服务器的IP地址。如果能够从DNS处就取得最优节点,这势必能大大减少调度阶段所耗费的时间。

于是需要解决的第一个问题,就是如何判定终端所在的地域与运营商环境。可是在早期的DNS协议中,并不支持这一功能,DNS仅是在执行递归查询之后,将配置好的IP返回。

智能DNS技术为解决这个问题提供了实现方法。智能DNS的智能之处,就是它可以获得用户的IP,并对其进行分析,得到用户所在的地域和使用的运营商线路。

具备了智能DNS功能的处理过程如下图所示。

CDN系统调度原理与技术选型

智能DNS全局调度

智能DNS技术选型

对于智能DNS的搭建,可以使用开源工具BIND(Berkeley Internet Name Domain),结合EDNS协议,再加上一个存储了IP地址地理信息的数据库,就可以实现智能DNS技术。

EDNS是google提交的扩展DNS协议,它相较于普通DNS,可以获取终端真实IP地址。这样就可以在存储了IP地址地理信息的数据库中通过查询,得到终端所在的地域与所属运营商信息,从而将其导向最优节点。

IP地址地理信息库则可以使用GeoIP,从dev.maxmind.com站点可以下载源库。不过,IP地理信息是时常会变化的,地址库需要定期更新。如果在技术上要求精确,则应该考虑购买商业产品。

数据库可使用关系型的MySQL,或者缓存型的redis。无论需要支持哪种数据库,都必须在BIND的源码中打上相应的补丁,经过编译后才能使用。

技术栈:BIND(支持EDNS协议) + mysql或redis(GeoIP地理信息库)。

基于http的重定向调度

智能DNS技术的优点突出,不过也存在一些缺陷。例如URL被本地DNS解析之后,则会将IP地址缓存起来,这样其他终端就无法得到最优节点。

因此,在应用层根据访问协议,以重定向的方式将终端导向最优节点,就是一个很好的解决办法。目前应用最广泛的,则是基于http协议的302返回码进行跳转。

http是一套基于文本,且简单、清晰、易理解的应用层通信协议。它采用TCP协议进行传输,也是目前互联网上最通用的应用协议。

相较于DNS的调度方式,http的调度可以扩展多个维度。因为DNS调度中只有终端IP这一个可参考依据,只能按地域和运营商来配置最优节点。

而http调度可以将内容、终端型号、用户身份等作为参考依据,实现更加合理的调度。例如,已经缓存了内容的最优节点会被优先导向;如果是付费VIP用户,则可以给其拥有最好线路的机房节点。

对于http全局调度服务,业界一般将其称为GSLB(Global Server Load Balancing),即全局负载均衡。从技术实现上来说,GSLB一般是以WEB接口作为前端,然后各个厂家会实现自己的全局调度业务逻辑。

CDN系统调度原理与技术选型

http重定向的全局调度

目前业界使用较多的是Nginx+lua的方式实现服务调度。

本地调度

全局调度完成的工作,是将终端导向到最优的节点。而一个逻辑上的节点,在物理上可能是一个机房,内有数台至数十台的服务器。

在这些服务器上则部署着本地负载均衡服务、反向代理服务,以及内容缓存服务。而本地调度要做的工作就是在节点内部,基于负载均衡策略,为终端与缓存服务之间构建起一条数据传输通道。

本地调度技术选型

从实施上来说,可以选择硬件负载均衡设备F5。也可以采用OSPF+LVS+Keepalived的技术方案。

LVS是由章文嵩博士在1998年创立的开源软件项目。LVS是linux Virtual Server的缩写,它的目的是将若干台Linux服务器通过网络组建成高性能、高可用、可伸缩的集群。

LVS工作在网络栈的第四层,即传输层。它支持多种本地负载均衡策略,有VS/NAT,VS/TUN,VS/DR三种工作模式。目前业界较多采用VS/DR模式。

VS/DR是直接路由方式,实现方式是LVS收到用户请求后,按负载均衡策略从集群中挑选了一台服务器,然后修改请求数据包中的目标mac地址,将其转发给目标服务器进行处理。DR模式要求集群内的服务器都在同一个网段内。

基于LVS实现负载均衡的典型架构,一般是两台安装LVS的服务器作为双主双活,配置一个虚拟地址VIP。然后安装支持OSPF协议的开源路由工具:Quagga。

Quagga的作用是将LVS主机虚拟成一台路由器,这样通过OSPF协议将物理路由器与两台LVS服务器,构建出等价多路径。以此实现LVS的双主轮询工作方式。

在对节点内服务器探测方面,采用Keepalived开源工具。它最初就是为了LVS而设计的,可对集群内的服务器进行检测,并实现自动化的维护工作。

CDN系统调度原理与技术选型

LVS负载均衡实现本地调度

技术栈:LVS + Quagga + Keepalived。

结语

CDN系统的调度工作分为两个部分,一是全局调度,二是本地调度。

全局调度的目标是以最快的速度,将终端导向最优节点。最优的依据则是地理上接近、相同的运营商,节点本身缓存有请求的内容,以及节点状况良好。

基于智能DNS技术的优点是可以解决地域与运营商的匹配,而且减少了终端与节点间建立连接的时间。但缺点是无法根据内容与用户特点进行导向,难以扩展判断维度。

基于http重定向的方式,则可以拥有多维度的判断依据,而且也便于扩展。其缺点则是响应速度受限于中心服务的处理能力。

在实践中可以采用两者相结合的方式。例如DNS调度之后的节点如果不能满足要求,则可以通过http的调度再匹配最优节点。

本地调度的目标,是在机房内实现数据传输的负载均衡。使用的技术可以是硬件F5,工作在四层的LVS,或者是Nginx。

采购硬件的方式是成本高,实施快捷。使用LVS技术能够获得较快的传输效率,但配置和管理会复杂一些。而使用Nginx则配置简单,但传输效率会差一些,在吞吐量大的时候,其所在服务器可能会成为传输瓶颈。



Tags:CDN   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
一个通用型的CDN,如果要服务广域范围内的用户,那必然要在一个广大的区域内部署服务节点。那么,一个很重要的问题就来了,就是如何将用户的访问导向到最优节点上。最优的含义有两...【详细内容】
2020-12-14   CDN  点击:(0)  评论:(0)  加入收藏
流媒体服务器的性能可以从抗抖动能力、拥塞率和卡顿率等方面进行分析。当用户访问的频率过高或者并发的数量超过流媒体服务器所能承受的范围时,必须考虑通过限流来保证接口的...【详细内容】
2020-12-09   CDN  点击:(7)  评论:(0)  加入收藏
随着近年直播、视频、游戏、电商等大流量业务的高速增长,传统CDN也面对着与日俱增的进化压力,除了最开始的“引导”、“最近邻”等基础功能,“高可用”及“智能化”也成为了CDN...【详细内容】
2020-12-07   CDN  点击:(4)  评论:(0)  加入收藏
LocalCDN是一个Web浏览器扩展,它模仿Content Delivery Networks以改善在线隐私。它拦截流量,在本地找到静态资源,然后将其注入环境。所有这些都是自动发生的,因此不需要事先配...【详细内容】
2020-10-21   CDN  点击:(8)  评论:(0)  加入收藏
由于CDN要求您通过其数据网导入所有的内容,因此一些流媒体提供商发现他们需要使用多个CDN来到达不同的地区。这意味着管理不同的系统、分散的流媒体以及添加更多的连接来传输...【详细内容】
2020-10-20   CDN  点击:(8)  评论:(0)  加入收藏
阿里云全站CDN加速是今年重磅推出的新产品,阿里云全站CDN加速融合了动态和静态资源加速技术,有效全面提升整个网站的访问速度和用户体验。如果你的网站备案了,建议你开通尝试,给...【详细内容】
2020-10-13   CDN  点击:(10)  评论:(0)  加入收藏
DDoS攻击的危害:DDoS的攻击方式有很多种,最基本的DDoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的DDoS攻击一般是采用一对一方...【详细内容】
2020-09-23   CDN  点击:(8)  评论:(0)  加入收藏
马可君最近私信收到不少小伙伴问我关于CDN的问题。和大家聊下来呢,发现一个大家普遍的认知偏差问题,就是大家认为CDN=加速器。这个认知非常片面,那马可君作为IT界云上的一股清...【详细内容】
2020-07-28   CDN  点击:(4)  评论:(0)  加入收藏
DOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是...【详细内容】
2020-07-23   CDN  点击:(10)  评论:(0)  加入收藏
经济观察网记者陈伊凡/文 作为Akamai亚太区安全战略总监,Siddharth Deshpande最近很忙碌。他和他的团队接到一个诉求,是来自一家大型欧洲企业,这家企业要在两星期内,把三万名员...【详细内容】
2020-07-15   CDN  点击:(4)  评论:(0)  加入收藏
曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”下面的回答多种多样,但总结起来就是:一个高性能的web系统需要从无数个角度去考虑他,大到服务器的布...【详细内容】
2020-06-20   CDN  点击:(8)  评论:(0)  加入收藏
多接入边缘计算(Multi-access Edge Computing,MEC)是一种新型的网络架构理念,能够在蜂窝网络边缘提供云计算能力和IT服务环境,其基本思想是把云计算平台从移动网络内部迁移到移...【详细内容】
2020-06-07   CDN  点击:(33)  评论:(0)  加入收藏
CDN:CDN的全称是Content Delivery Network,即内容分发网络。基本原理是采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负...【详细内容】
2020-05-18   CDN  点击:(14)  评论:(0)  加入收藏
百度搜索,小茹博客https://www.xiaoru521.com/1、IncapsulaIncapsula节点众多,支持CNAME、绑定IP,不需更改DNS。而且亚洲节点不错,所以国内的可以将A记录设置成亚洲范围的IP就可...【详细内容】
2020-05-05   CDN  点击:(10)  评论:(0)  加入收藏
服务器带宽不够?流量有限?速度太慢?开发者或网站管理者时常会用到一些 JS库,例如最常见的 jQuery 或 CSS 框架,通常不建议自己在服务器存储这些静态文件,因为除了耗流量,也可能因此...【详细内容】
2020-04-28   CDN  点击:(12)  评论:(0)  加入收藏
阿里云CDN经过10多年的技术沉淀和实践,已经从传统的加速,逐渐构筑起一个边缘+云的安全网络立体防护体系,从全链路安全传输、常见攻击类型的边缘防御、企业级独享资源部署、运维...【详细内容】
2020-04-23   CDN  点击:(16)  评论:(0)  加入收藏
Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务IISIIS是微软公司的Web服务器。主要支持ASP语言环...【详细内容】
2020-04-18   CDN  点击:(21)  评论:(0)  加入收藏
研究表明,用户最满意的打开网页时间,是在 2 秒以下。用户能够忍受的最长等待时间在 6~8 秒之间。就是说,8 秒是一个临界值,如果你的网站打开速度在 8 秒以上,那么你将失去大部分用...【详细内容】
2020-04-04   CDN  点击:(12)  评论:(0)  加入收藏
网站卡顿,访问量大?站长对于CDN加速肯定已经不陌生了,目前CDN加速的使用率也是越来越高,那么大家在使用CDN加速的同时知道CDN加速的工作原理到底是什么吗?CDN加速究竟是怎么...【详细内容】
2020-03-28   CDN  点击:(10)  评论:(0)  加入收藏
缓存是什么缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。我们通常意义上说的缓存主要包含两部分。第一个是用户浏览器端的缓存,第...【详细内容】
2020-03-13   CDN  点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条