CDN 内容分发及负载均衡策略探讨
2020-11-25肖蓉中兴通讯股份有限公司
肖蓉 中兴通讯股份有限公司
引言
人们通过网络就可以快速地访问各类资源,但用户便捷访问的背后确是内容供应商的技术挑战在传统的模式中,供应商一般通过简单增加服务器数量来提高并发量问题,但在当前的互联网发展形势下,这种简单的处理方式显然会带来巨额的成本,并且直接导致系统的不可维护性。为了解决该问题,内容分发网络(Content Distribution Network, CDN)技术应运而生。
1 CDN 原理及架构分析
CDN 是一种分布式服务器网络系统,即组成该系统的硬件服务器可以位于全球的和个角落,只要通过网络实现互连,就可以实现将源服务器的资源按照一定的规则有选择性地复制到其它边缘服务器上,边缘服务器的选择主要依赖于先进的负载均衡技术。用户在访问网络资源时,系统会自动为用户定向到网络延迟最小的服务器上,使用户可以在最短的时间内取得所需要的资源。CDN 技术在原理上较简单,然而要实现高性能访问仍有很大难度,它涉及到负载均衡、内容分发、存储管理等许多技术难点。CDN一般按照三级架构进行部署,分别是中心层、区域层和边缘层,其中中心层和区域层又称为骨干节点,边缘层又称为边缘节点。节点是CDN 的基本单元,由缓存设备和本地主机构成。
2 内容分发技术及其负载均衡
在互联网发展的初期阶段,由于网络资源不多,用户也较少,通常只需一台或若干台服务器都可以满足访问需求。随着网络的发展,内容和用户量都在边翻增长,人们不得不提高服务器配置并增加服务器数量来应对海量的访问请求,但这又带来了网络堵塞的问题。后来提出了边缘缓存技术,将一些频繁访问的资源存储到边缘服务器上并放置到缓存空间中,可以大大提高系统的性能。
内容分发可以通过对网络内容传输的动态重构来平衡分发网络的压力,从其功能布局的角度上看,CDN 中包括初始服务器、缓存服务器、重定向服务器、内容管理服务器和内容交换服务器等,其中初始服务器是内容的初始来源,缓存服务器可以将部分内容缓起来,重定向服务器将用户的访问指向最近的服务器,内容交换服务器本身不提供任何内容,它的主要功能是控制缓存服务器之间的负载均衡。显然,在CDN 网络中,除了要对用户请求进行重定向之外,还需要在内容分发过程中进行负载均衡的控制,这是内容分发网络的重要优点,也是内容分发技术的应有之义。
3 用户请求负载均衡算法策略探讨
3.1 静态负载均衡
静态负载均衡是指不主动通过程序对请求进行分发控制,而是将请求按照顺序依次分发到每一台服务器上,不断循环,使每台服务器都有相同的机会受到访问,从而将流量分摊到每台服务器上,实现负载的均衡。显然,这种方法做了一个假设,即每台服务器的性能都是完全一致的。静态负载均衡算法虽然原理简单,实现方便,但由于每台服务器的性能不可能真的完全一致,甚至是由大量不同型号的服务器组成,请求过程中消耗的资源也是很难准确估计的,很难真正维持各服务器之间的负载平衡。为了提高这种简单的静态负载均衡的适应范围,本文提出了一种改进型的加权轮询算法。
所谓加权轮询,是指在轮询的过程中,并不按照顺序依次给每台服务器发送请求,而是根据每台服务器的性能,为其指定一个权值,服务器综合性能越好,权值就越高。在有访问请求进入时,通过查询当前空闲的服务器中权值最大的服务器,将请求转发到该服务器上。
显然,通过权值的引入,静态负载均衡算法的性能得到了明显的改善,各台服务器不再无差别地承担访问请求,而是“能者多劳”,最大程度地发挥了集群的综合性能。然而,这种算法仍然属于静态算法,每台服务器的权值是保持不变的。实际上,计算机的性能会随着使用时间的延长而下降,并且某些计算机在处理其它任务时,其执行请求的能力也会相应下降。因此,本文又继续对这种算法进行了优化,采用了一种动态负载均衡算法。
3.2 动态负载均衡
在动态负载均衡算法中,首先仍然假设每台服务器的性能都是一样的,但是将其当前活动的连接数记录下来,当有新的请求进入时,优先将该请求转发给连接数最少的服务器,同时该服务器连接数加1,以表征其负载变化水平。显然,只通过服务器的活跃连接数来选择服务器也是有缺陷的,因为没有考虑到每台服务器的性能区别。实际上,有些计算机虽然连接数不多,但由于其自身的性能比较差,因此实际上不适宜继续接受新的请求。而有些计算机虽然连接数比较大,但由于其性能较好,因此还可以继续接受更多的请求。为此,本文对该算法进行了改进,提出了一种加权动态负载均衡算法。
所谓动态负载均衡,是指在内容分发的过程中,并不仅仅按照最小连接数给每台服务器发送请求,而是综合考虑每台服务器的性能,为其指定一个权值,服务器综合性能越好,权值就越高。在有访问请求进入时,通过查询每台服务器中的权值,并与最小连接数相乘,所得的积最小者,将成为执行此次请求的服务器。
显然,通过权值的引入,动态负载均衡算法的性能得到了明显的改善,各台服务器不再只依据最小连接数来承担访问请求,而同样是“能者多劳”,最大程度地发挥了集群的综合性能。实际上,计算机的性能会随着使用时间的延长而下降,并且某些计算机在处理其它任务时,其执行请求的能力也会相应下降。因此,这种加权动态负载均衡算法仍然有很大的改进空间,本文限于篇幅不再深入探讨。
4 案例分析
为了验证本文提出的加权动态负载均衡算法的性能,本文将该算法应用于某机房的CDN 应用系统中进行测试。该CDN 系统共有1 台负载调度服务器和3 台内容服务器,通过一台普通PC 机作为客户端进行测试。其中调度服务器内运行了负载指标统计和负载调度两个子系统,实现对3 台内容服务器的高效调度。测试客户端用于模拟不同的访问压力,从而观察加权动态负载均衡算法的响应效率。
所有服务器均安装了Linux SUSE12 操作系统,具有IP 虚拟(IP Virtual Server,IPVS)服务器功能,采用直接路由模式,然后添加一个节点对其它节点进行管理。测试方案如下:首先将加权动态负载均衡算法部署到负载调度服务器上,其后在客户机上的负载均衡工具查看并记录测试数据,最后依次进行10 组测试实验,第一组的并发量为100,依次递增至1000。
实测结果表明,当并发量小于300 时,加权动态负载均衡算法的性能优势并不明显,但当并发量增加到500 以上时,该算法的优势开始显现,在1000 并发量的条件下,算法平均响应时间提高了30%。同时,该算法的平均吞吐量也明显高于静态负载均衡算法和非加权动态负载均衡算法。因此,在条件相同的情况下,并发量越高,本文提出的加权动态负载均衡算法性能优势越突出。
5 结语
随着互联网技术的继续发展,人类进入了更高程度的信息化社会,各种大型网络纷纷出现,这为CDN 技术的发展提供了良好的条件。据统计,在当今社会,全球性的大型网络系统在高峰访问期间可达亿级并发量,如果访问速度多延迟一秒,用户就会损失7%左右,这促使各大网络平台纷纷引进先进的CDN 技术,并通过负载均衡设计实现系统性能的最优化。采用CDN 技术可以实现数据的分布式存储、获得更小的负载、更高的可用性、更好的安全性、显著提高访问速度,已成为当前许多网站系统运营商的必然选择。