大型在线考试系统负载均衡算法的研究与实践

2020-08-13 07:17杨晓吟
软件 2020年6期
关键词:在线考试负载均衡算法

摘  要: 随着网络信息技术的飞速发展,在线考试系统在各大院校推广。当同时在线考试的人数达到万人以上时,服务器面临着严峻的考验。本文在分析了常用的负载均衡技术和负载均衡策略的基础上,提出了适于大型在线考试系统的应用需求和特点的负载均衡算法—TEST算法,该算法根据服务器集群中每台服务器的CPU占用率、内存的利用率、网络带宽占用率作为影响因素,计算服务器权值,并引入负载冗余参数,共同来判断服务器处理新的请求能力,通过仿真实验,TEST算法有效地提高了大型在线考试系统的响应效率。

关键词: 在线考试;负载均衡;服务器集群;算法

中图分类号: TP399    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.06.006

本文著录格式:杨晓吟. 大型在线考试系统负载均衡算法的研究与实践[J]. 软件,2020,41(06):2731

【Abstract】: With the rapid development of information technology and the continuous expansion of network applications, the online examination system has been promoted in universities and colleges. When the number of simultaneous online exams reaches more than 10,000, the server is facing a severe test. This paper is based on the analysis of common load balancing technology and strategy, and proposes a TEST algorithm which is suitable for the application requirements and characteristics of large-scale online examination systems. This algorithm takes CPU usage, memory utilization and network bandwidth occupancy as judgment factors, and calculates the server weight, and introduces parameter load redundancy to judge the servers ability to process new requests. Through simulation experiments, the result confirms that the response time using the TEST algorithm faster and more efficient improving response efficiency for large-scale online examination systems.

【Key words】: Online examination; Load balancing; Server cluster; Algorithm

0  引言

随着教育技术的不断进步,传统的纸质考试逐渐被无纸化的在线考试系统取代,为满足素质教育,题目有图像、音频、视频、动画等多媒体形式。由于在线考试中需要大量多媒体数据,并且大型在线考试系统,一般同时参加的考生数在五千人左右,甚至达到万人以上,考生需要将考试信息提交到服务器,当开始考试和结束考试的时间点里不可避免地出现系统忙碌,而在其他时间段中则比较空闲,一旦服务器在高峰期出现流量过载现象,造成服务器负载压力过大,就会导致在线考试系统的不稳定,甚至的这个考试的顺利完成造成影响。为解决这一难题,对大型在线考试系统的负载均衡算法的实现进行研究与实践。

1  常用负载均衡系统

目前的负载均衡系统主要有四类:基于DNS的负载均衡、基于反向代理的负载均衡、基于HTTP重定向的负载均衡和基于NAT的负载均衡[1]。

1.1  基于DNS的负载均衡

DNS是域名解析系统,当我们输入域名访问網站时,DNS服务器会将域名映射成IP地址,这个映射可以是一对多的,不同的IP对应不同的服务器,也就是说DNS将域名请求根据策略分配到不同的服务器上,从而达到负载均衡的目的。基于DNS的负载均衡技术比较适用于广域网的负载均衡的实现。

1.2  基于反向代理的负载均衡

基于反向代理的负载均衡系统是指使用代理服务器来接收客户端的请求,然后再将用户请求转发给其他服务器,并将服务器的结果返回给客户端,从而达到负载均衡的目的。由于反向代理服务器隔离了外部对网站服务器的攻击,所以方向代理负载均衡系统的一个显著优势是能提高网站服务器的安全性。但是每一次代理的过程都需要完成对外和对内两个连接,所以当在连接请求数量激增时,代理服务器的负载压力就双倍增加,最终导致反向代理服务器成为负载系统中的瓶颈。

1.3  基于HTTP重定向的负载均衡

在HTTP重定向的负载均衡系统中,HTTP重定向服务器根据客户端的HTTP请求以及据配置的负载均衡算法计算出真实的服务器地址,并将此服务器地址写进HTTP重定向响应中再返回客户端。客户端浏览器获得响应后,根据返回的信息,重新发送请求到新的服务器上。其的优点是实现方法简单并且自带会话保持功能,缺点是后台服务器使用的是VIP即真实IP地址,因此某些用户可能会绕过负载均衡服务器直接定位到某台服务器,降低了服务器的安全性,同时HTTP重定向负载均衡技术只能实现HTTP服务的负载均衡,在网络服务类型的选择上具有局限性。

1.4  基于NAT的负载均衡

NAT是Network Address Translation的英文单词的首字母,中文名称是网络地址转换,NAT可以将外部 IP地址与内部IP地址进行一对多的映射,客户端通过外部IP访问应用,NAT动态选择其中一个内部地址与外部地址关联,从而实现均衡的目标[2]。NAT负载均衡是一种比较成熟的负载均衡技术,既可以用软件实现也可以用硬件的方式来实现,同时负载均衡算法也比较灵活多样。

2  大型在线考试系统负载均衡算法的设计

在线考试系统的负载均衡的实现普遍采用的是基于NAT的负载均衡方案。大型在线考试系统的负载均衡系统的搭建时最核心的部分包括:负载均衡算法、会话模式的选择、应用层会话保持机制和健康检测方法的设置。下面介绍在实施大型在线考试系统所采用的技术策略。

2.1  基本工作原理

基本原理如图1所示,运行相同应用的多台服务器组成一个服务器集群,用一个VIP(Virtural IP)即实际IP来代表此服务器集群的IP,该地址也是客户端访问此服务的IP。当客户端向服务器发送请求时,负载均衡系统将根据各服务器的会话状态的情况、预先设置的负载均衡策略以及健康检测结果等参数来把客户端请求转发到合适的服务器上,最后由负载均衡系统把服务器的响应转发回给请求服务的客户端。

2.2  负载均衡策略

在负载均衡系统中,负载均衡策略将客户端请求分配到服务器集群中最合适的服务器上,通常负均衡器都支持相当丰富的负载均衡策略,主要包括:轮询和权重轮询 、最少连接数、最小反应时间、哈希法等。而在线考试系统采用最小连接数策略是最合适的,因为在线考试系统实际上就是一个Web服务,服务器性能主要受请求的客户端数量影响。在大型在线考试系统的负载均衡技术方案中,把负载均衡器的健康检测方法设置为HTTP页面,HTTP页面检查的是一个来至于后台数据库的动态页面。这样通过HTTP页面的健康检测方法同时检测了Web服务和后台数据库服务的可用性。然而,HTTP页面检测将会对服务器资源造成额外的消耗,对Web服务的性能是较大的考验,考虑到大型在线考试系统应用的特点,最小连接数加HTTP頁面健康检测的方案仍有许多不足,因此设计了一款新算法,该算法从响应客户端请求需要消耗服务器系统资源程度着手来实现系统的负载均衡。以下称该算法为TEST算法。

负载均衡器的实现负载平衡首先需要获得服务器集群中各台服务器的负载能力的信息,包括服务器CPU、内存的利用率和网络带宽占用率,根据预先设置好的算法计算得出的服务器权值并提供给负载均衡器。负载均衡器根据设定的周期获取服务器的负载能力的信息,但是请求的到达时间是不固定的,若负载均衡器更新负载能力信息不及时,可能会导致单个节点处理负载的实际情况超过其处理能力[3]。所以,引入一个新的负载能力值指标——负载冗余参数 L,利用这个参数来衡量在某时刻某服务器的负载均衡能力[4]。

2.3  改进的负载均衡TEST算法的描述

服务器的负载能力的计算主要包括CPU占用率、内存的利用率、网络带宽占用率三个参数。当负载均衡器收到这三个参数后,计算每台服务器的负载值Load(Si),并参考每台服务器的最大负载能力C(Si),计算每台服务器的当前负载比例值P(Si),负载比例值越大,说明服务器剩余的处理能力越小,因此当有新的客户端请求到达时,优先分配到负载比例值小的服务器。同时还为为负载比例值设定一个阈值,如90%,当负载比例值达到90%时,该服务器被认定为过载,用户请求不再分配到该服务器,同时为上述3个关键参数各设定一个独立的单项阈值,如果每台服务器上述3个关键参数中的任意一项参数值超过其单项阈值,用户请求将不再给这个服务器[6]。

(1)计算每台服务器最大负载能力:假设服务器集群为S={S0,S1,…,Sn–1},Si为集群中第i个服务器节点。R(Si)为集群中第i台服务器的最大负载均衡能力值,Ki为各服务器性能指标的比重系数, = 1。其中RCPU表示CPU频率,Rm表示内存总量,Rnet表示网络带宽占用率,则R(Si)的计算公式为:

R(Si)= k1*RCPU(Si)+k2*Rm(Si)+k3*Rnet(Si)(1)

F(Si)为服务器当前的负载能力值,qi为各负载能力指标的比重系数, = 1。其中 FCPU表示CPU 利用率,Fm表示内存使用率,Fnet表示网络带宽,则F(Si)的计算公式为:

F(Si)= q1*FCPU(Si)+ q2*Fm(Si)+q3*Fnet(Si) (2)

(2)CPU利用率FCPU(Si)和内存使用率Fm(Si)的计算

可以从/proc/stat文件中读取的值计算得出FCPU(Si)。获取得到的值包括:用户占用CPU的时间、系统内核占用时间和空闲进程占用时间,可通过空闲进程占用时间可以计算出CPU的未利用率,进而计算得出CPU的使用率,再设定两个时刻t1和t2,用Ii表示ti时刻的空闲进程,Ci表示ti时刻的CPU[3]。

2.4  算法的实现过程

首先负载均衡算法需要获取两个参数:一是服务器权值,二是最小负载冗余值,接着负载均衡器与服务器建立连接并监听服务器端口,再调用recvfrom()方法接收服务器发送回来的数据,根据集群中各个服务器的性能和负载能力,计算得出服务器权值和负载冗余值[5]。最后对服务器权值进行周期性更新只有,遍历获取服务器集群中的每台服务器的负载冗余值,在满足服务器的负载冗余值满足L(Si)>Lmin前提下,服务器的当前的权值和负载冗余值高的优先分配客户端请求。

2.5  TEST算法仿真实验

为了验证负载均衡改进算法—TEST算法的优越性,将最少连接数算法和TEST算法进行对比,以同样数量的客户端请求服务器集群的响应时间作为衡量标准。使用Load Runner作为测试工具。测试时,保证两个模拟客户端在单位时间里发送同样次数的请求。由8台服务器组成的服务器集群来处理请求。在服务器集群中分别使用最少连接数算法和TEST算法来响应同样数量的客户端请求,将收到服务器集群反应的时间记录并进行对比。测试结果如表1和图2所示。

由实验测试结果可以分析得出,在客户端请求数还未明显增加的情况下,NAT负载均衡方案和TEST算法的处理请求的响应时间是几乎相等的。随着客户端请求连接数量的增加,达到8000以上时,TEST算法的平均响应效率较NAT负载均衡方案中的最小连接数算法有明显的提高。

3  结束语

负载均衡系统实施方案的设计对工程师的知识面和经验要求比较高,要想针对大型在线考试系统应用设计出优秀的的负载均衡系统方案,通常需要软硬件、操作系统、网络技术、算法等多个方面的技能及相关的经验积累。通过结合大型在线考试系统的实际使用,分析了负载均衡在负载均衡策略和健康测试模块这两个方面的相关设置,并提出了一种适合大型在线考试系统实际应用的负载均衡算法,负载均衡算法是决定负载均衡系统成败的关键因素,优秀的均衡算法能充分发挥服务器集群的优势,充分利用集群的各种资源,为用户提供高质量的服务[6]。通过分析常用负载均衡算法的优缺点,提出了TEST负载均衡算法,该算法的主要特点是: 充分应用节点CPU占用率、内存的利用率、网络带宽占用率三个因素,指导任务的分配,通过负载修正保证系统的稳定性。通过实验可以发现,Test算法能显著地提高负载均衡效率,从而提高在线考试系统的稳定性。当然,提出的算法也存在不足,例如三个参数的获取给系统带来了额外的开销,使得服务端的请求有一定的延滞。另外,负载均衡系统的效率虽然有了一定的提高,但考试系统实际应用中还有实验中没有考虑周到的影响因素。在今后的实验中,将不断完善节点负载的分配和修正机制并综合考虑考试过程中的各种影响因素,进一步提高算法的均衡效率。另外,希望对大家部署在线考试系统和其他高并发系统时有所借鉴。

参考文献

[1] 刘同. 负载均衡技术在数据库集群系统中的应用与实现[D]. 国防科学技术大学, 2009.

[2] 丁逸. 基于层次策略的动态负载均衡算法研究[D]. 东南大学, 2005.

[3] 梁家君. 基于神经网络改进粒子群优化算法的负载均衡技术优化研究[D]. 广东工业大学, 2018.

[4] 杨明极, 王鹤, 赵加凤. 基于CPU和内存利用率的负载均衡算法的研究[J]. 科技通报, 2016, 32(04): 160-164.

[5] 朱莉, 沈未名, 李銳, 徐胜勇. 利用遗传算法的网络GIS集群服务器动态负载均衡算法[J]. 武汉大学学报(信息科学版), 2011, 36(06): 721-725.

[6] 庄旻轩. 服务器集群中基于动态反馈的负载均衡算法[D]. 大连理工大学, 2014.

[7] 唐俊武, 南理勇, 左强. 在线考试系统开发中的几个问题及解决方法[J]. 计算机与数字工程, 2005(08): 144-147.

[8] 王春娟, 董丽丽, 贾丽. Web集群系统的负载均衡算法[J]. 计算机工程, 2010(02): 108-110.

[9] 徐敏, 李明, 郑建忠, 等. 基于OpenStack的Swift负载均衡算法[10]. 计算机系统应用, 2018, 27(01): 127-131.

[10] 孙凌宇, 等. 云平台环境下基于禁忌搜索的负载均衡任务调度优化算法[J]. 小型微型计算机系统, 2015, 36 (09): 1948-1952.

[11] 蔡嵩, 等. 云平台环境中基于朴素贝叶斯算法的负载均衡技术[J]. 计算机应用, 2014, 34(2): 360-364.

[12] 尚永强. 计算机网络信息安全中数据加密技术的探讨[J]. 软件, 2018, 39(12): 198-201.

[13] 刘文. 基于大数据优化网络的安全性策略的研究[J]. 软件, 2018, 39(9): 205-208.

[14] 黄超, 唐子蛟. 基于云计算技术的智慧校园平台建设研究[J]. 软件, 2018, 39(5): 27-30.

[15] 吴亚熙, 岑峰. 基于卷积神经网络的多层级目标检测方法[J]. 软件, 2018, 39(4): 164-169.

[16] 孙哲, 巫中正, 李千目. 基于网络流量的安全可达性推理方法[J]. 软件, 2018, 39(4): 36-43.

[17] 李洁, 何军. 云计算操作系统网络虚拟化模块Neutron 分析研究[J]. 软件, 2016, 37(01): 21-23.

猜你喜欢
在线考试负载均衡算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
异构环境下改进的LATE调度算法
大学物理在线考试与分析系统
效率观下高校课程考试形式的改革探索
一种改进的整周模糊度去相关算法
大数据背景下在线评教与在线考试融合的思路探讨