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

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   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
说起 WordPress 优化加速来可以说是个经久不衰的话题了,包括明月自己都撰写发表了不少相关的文章。基本上到现在为止明月的 WordPress 优化方案已经固定成型了,那就是 WP Supe...【详细内容】
2021-11-02  Tags: CDN  点击:(49)  评论:(0)  加入收藏
今年 6 月 17 日下午,在线服务普遍中断。在澳大利亚,它影响了该国三大银行、国家邮政服务、国家储备银行和一家航空公司。距离澳大利亚更远的地方,停电影响了香港证券交易所和...【详细内容】
2021-07-05  Tags: CDN  点击:(87)  评论:(0)  加入收藏
对于CDN这个家伙,我们已经不陌生了。图像、文件下载、直播和点播、游戏、应用程序等等,只要是互联网上的内容,都可以通过CDN来加速,保障网络的稳定性,提升用户的体验。 CDN就像一...【详细内容】
2021-04-07  Tags: CDN  点击:(243)  评论:(0)  加入收藏
大家新年好呀,今天是辛丑年正月初七,祝福今日开工的朋友们顺顺利利!今天是CDN 3期,跟大家聊聊运用P2P技术的CDN——PCDN。当遇到视频点播、直播这些拥有较大流量的业...【详细内容】
2021-02-19  Tags: CDN  点击:(177)  评论:(0)  加入收藏
一个通用型的CDN,如果要服务广域范围内的用户,那必然要在一个广大的区域内部署服务节点。那么,一个很重要的问题就来了,就是如何将用户的访问导向到最优节点上。最优的含义有两...【详细内容】
2020-12-14  Tags: CDN  点击:(121)  评论:(0)  加入收藏
流媒体服务器的性能可以从抗抖动能力、拥塞率和卡顿率等方面进行分析。当用户访问的频率过高或者并发的数量超过流媒体服务器所能承受的范围时,必须考虑通过限流来保证接口的...【详细内容】
2020-12-09  Tags: CDN  点击:(133)  评论:(0)  加入收藏
随着近年直播、视频、游戏、电商等大流量业务的高速增长,传统CDN也面对着与日俱增的进化压力,除了最开始的“引导”、“最近邻”等基础功能,“高可用”及“智能化”也成为了CDN...【详细内容】
2020-12-07  Tags: CDN  点击:(101)  评论:(0)  加入收藏
LocalCDN是一个Web浏览器扩展,它模仿Content Delivery Networks以改善在线隐私。它拦截流量,在本地找到静态资源,然后将其注入环境。所有这些都是自动发生的,因此不需要事先配...【详细内容】
2020-10-21  Tags: CDN  点击:(129)  评论:(0)  加入收藏
由于CDN要求您通过其数据网导入所有的内容,因此一些流媒体提供商发现他们需要使用多个CDN来到达不同的地区。这意味着管理不同的系统、分散的流媒体以及添加更多的连接来传输...【详细内容】
2020-10-20  Tags: CDN  点击:(77)  评论:(0)  加入收藏
阿里云全站CDN加速是今年重磅推出的新产品,阿里云全站CDN加速融合了动态和静态资源加速技术,有效全面提升整个网站的访问速度和用户体验。如果你的网站备案了,建议你开通尝试,给...【详细内容】
2020-10-13  Tags: CDN  点击:(202)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(1)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(9)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(19)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(14)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(14)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(22)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(28)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条