高校学生选课系统的性能优化研究及实践

2017-09-16 22:03滕金国李贵安
中国教育信息化·高教职教 2017年9期
关键词:负载均衡优化

滕金国++李贵安

摘 要:本文针对高校选课系统普遍存在的短时间内突发访问集中、访问量大及业务复杂的实际情况,在总结分析近年来陕西师范大学网上选课系统存在问题的基础上,提出了一个提高选课系统的高并发访问性能的方案,并取得了良好的效果。此方法在极大程度上解决了高校选课系统选课性能低下问题,同时对高校其他的信息系统解决类似问题提供了借鉴和参考。

关键词:选课系统;优化;选课性能;负载均衡;Nginx

中图分类号:TP315 文献标志码:A 文章编号:1673-8454(2017)17-0086-05

一、背景

选课是学分制管理的核心和主要特征,是教学运行的重要环节。随着信息技术的发展以及高校对教育信息化建设的重视程度逐步提高,高校选课方式早已由人工选课变为网上选课。网上选课是通过网上选课系统实现的,通常集成在大学综合教务管理系统中,是高校中普遍使用、利用率最高且不可缺少的管理信息系统之一。但时至今日,选课系统的性能问题仍然是大多数高校共同面临的难题,在学生集中选课过程中,经常出现系统瘫痪、选课失败等现象,给学生选课造成了极大不便。

陕西师范大学一贯重视教务管理信息化建设,不断提升教务管理工作质量和水平。学校新版教务系统于2005年上线运行,分别于2009年和2013年进行了两次系统版本升级。系统采用C/S和B/S相结合的架构,满足学分制培养和通识教育培养模式,支持校院两级管理模式,具有培养方案管理、教学计划管理、学籍管理、排课管理、选课管理、成绩管理等功能模块,几乎涵盖了本科教学管理的各个环节。学生通过B/S端访问系统,即访问网上选课系统,完成选课、成绩查询等操作。

二、现状与原因分析及解决方案

1.现状与原因分析

高校选课系统性能低下,究其原因,将从下述三个方面进行分析。

(1)选课系统的复杂性[1][2]

选课系统的约束条件较多。包括学分约束、门数约束、选课范围约束、学生类别约束、校区约束、人数约束等,当并发操作量较大时,这些约束条件的处理将占用大量系统资源, 降低系统运行速度。

选课系统的数据处理复杂。同一门课程可对不同年级、不同专业的学生开放,对于不同类型的学生, 将体现不同的课程性质。例如,陕西师范大学每学期会开放可跨学院跨专业进行选修的课程,同一门课程对本专业学生来说是专业必修课,而对其他专业学生来说则是通识教育选修课。

选课系统对数据的实时处理要求高。对于学生选课过程中的各种操作 ,系统必须给予快速地响应,对于不符合要求的操作, 系统必须给予实时地提示,如上课时间冲突、学分已经超过最高限定等。

选课系统的数据信息量大。例如,陕西师范大学每学期开设课程2800余门次,进行4次本科生选课活动,参加选课的学生达1.5万余人。截至2017年1月,该系统已有学生基本信息记录5万余条,每学期产生学生选课记录15.5万余条、成绩记录17万余条,选课总记录数累计255万条、成绩记录累计315万条,教学计划记录4.5万条。

选课系统的访问并发量大。选课时系统并发量大是高校选课系统面临的最大挑战,高校选课是学生必须参加的教学环节,是学生关注度和集中参与度最高的教学活动之一,学生往往在选课一开始时集中进行选课,并发访问系统。例如,陕西师范大学在选课系统刚开放时,至少有5000人在同时访问系统。

(2)教务系统的使用方式

大学综合教务管理系统是一个集各种教学管理功能为一体的大型复杂网络信息系统,设计和开发该系统需要花费大量的人力、财力以及后期维护成本,因此绝大多数高校采用购买公司软件产品的方式搭建本校综合教务管理平台[3]。软件公司开发的产品具有功能强大,系稳定性高和通用性好的特点,国内目前主流的综合教务系统研发及销售公司不超过10家,软件价格昂贵,一套产品上百万。高校一旦选定使用某一款综合教务系统,就不能轻易的更换。教务系统研发公司往往具有较多的客户,如全国有1000多所高校在使用正方软件股份有限公司研发的大学综合教务管理系统,随着客户的增多,不同高校个性化的服务需求就越难满足。教务系统体系庞大、功能复杂,应用系统及数据库的设计架构及代码优化工作无法及时跟进,导致系统版本更新和升级的周期长。另外,公司产品一般不开放源代码和数据库设计说明,高校自己无法从算法、设计和架构上对教务系统进行优化。最终,造成选课系统后期优化配置需求无法及时得的满足。

(3)高校管理模式及运维情况

高校对选课系统的管理模式主要有两种。一种模式是由教务处负责选课系统应用程序的运行維护工作,学校网络信息中心负责选课系统服务器的托管工作。另一种模式是由学校网络信息中心负责选课系统应用程序运行维护和服务器的托管工作。在第一种模式下,教务处负责选课系统应用服务器维护的工作人员对选课管理相关的业务比较熟悉,但由于时间精力和专业背景的限制,难于掌握信息系统及服务器运维相关的专业知识和技能,无法对选课系统做更深入的优化配置工作。在第二种模式下,由于工作性质和工作分工的原因,网络信息中心技术人员虽然具备相关的软件研发及服务器运维技术,但对具体教务管理业务的关心程度和理解程度不够深入,这往往也使选课系统难以达到较好的使用效果。

2.解决方法

通过以上分析,结合教务管理工作实际,提出以下几点优化选课系统的思路:

首先从管理上进行干预。合理分配学生选课时间,组织学生分阶段、分校区、分学院进行选课,管理上分散对选课系统的访问压力。例如陕西师范大学选课分成专业课阶段、通识公选课阶段、和补退选三个阶段,根据学生校区的分布,每个阶段分长安校区和雁塔校区两个阶段;选课前会提前在网上公布待选课程的相关信息,使学生提前了解课程信息,从而减少正式选课时操作系统的时间。endprint

从选课规则和选课算法上进行优化。根据学校教学实际情况设定科学合理的选课规则和算法,保证有限的教学资源被公平合理的分配,引导学生按次序进行选课,不再盲目的抢课。设定适当的选课门数和学分限制,学生选课门数已达上限将无法再选,既减少了学生操作系统的时间,也保证了所选课程的上课效果和质量。陕西师范大学选课的正选阶段安排在学期末,首先进行专业课的选课,然后进行通识课及跨学院课程选课,在新学期开学初进行补退选课,另外对每学期可选的通识教育选修课做了学分上限限制。目前常用的选课算法有直选式、抽签式和志愿式三种算法,高校可在这些算法基础上选择并优化算法,可结合使用多种算法以达到最优的效果。

对于使用自主研发教务系统的高校,可从软件设计与开发上进行改进。在系统应用程序设计上,通过科学合理的顶层设计,统一软件架构,实现各系统各功能模块之间有机高效的联系,为系统的稳定運行和持续升级奠定基础。在系统数据库设计上,采用标准规范的数据架构,使系统的功能与数据相对独立,提升数据的利用率,保证数据的准确性,提高数据交换的效率[4]。在系统的开发技术上,采用执行效率较高的程序开发语言和框架,优化编程算法,提高程序执行效率,满足复杂业务数据处理和大规模用户访问的需要。

从运维上进行优化。运维包括对计算机机房设备、网络基础设施、服务器等硬件平台的维护,也包括对应用服务器、应用系统、数据库等软件平台的维护[5]。硬件平台一般由学校层面进行统一配置管理,软件平台的维护由教务管理人员完成。提高硬件服务器的性能可以在一定程度上提高系统的性能,但是不能从根本上解决问题。由于选课系统具有高并发的特点,采用一台应用服务器加一台数据库服务器的做法会造成网络瘫痪,需要使用多台服务器共同处理并发访问任务。但增加物理服务器的方式缺乏灵活性且成本较高,而且服务器的硬件配置也不能无限制的提高。通过服务器虚拟化技术增加虚拟服务器的方式相对灵活且成本较小,可以根据需要不断增加虚拟服务器数量,目前陕西师范大学已全面使用服务器虚拟化技术为校内各单位分配部署应用的虚拟服务器。最后,通过在每台虚拟服务器上部署相同的选课应用程序,将所有虚拟服务器组建成一个服务器集群,由服务器集群来处理并发访问请求。服务器集群能否充分发挥作用、提高选课系统性能,其关键在于负载均衡的配置。本文重点从负载均衡技术在选课系统中的应用,给出一种成本较低、系统性能提升效果较好、可持续提升系统性能的系统优化配置方案和实例。

三、具体实现与效果

1.软件负载均衡技术在选课系统中的应用

(1)负载均衡介绍

负载均衡是通过某种负载分担的算法,将并发访问或数据流量分担到由多台服务器组成服务器集合上,集合中每台服务器都可以单独对外提供服务,独立地回应客户的请求,而无需其他服务器的辅助。集合中的服务器可以具有相同软硬件配置,也可以具有不同的软硬件配置,包括操作系统在内。通过负载均衡配置,管理部门利用现有低配置的服务器就可大大提升应用系统的性能,而无需购买价格昂贵的高配置服务器。

负载均衡主要分为软件负载均衡和硬件负载均衡两种方式。硬件负载均衡是利用专门的硬件设备实现多台服务器之间的负载均衡。软件负载均衡是利用专门的应用软件在多台服务器之间做负载均衡[6]。硬件负载均衡需要购买负载均衡的硬件设备,费用较高,成本较大。软件负载均衡配置简单,使用灵活,成本低廉,而且效果良好,可以满足高校的一般需求。本文主要通过对负载均衡软件的配置使用,来介绍软件负载均衡技术在选课系统性能提升中的应用与实践。

(2)负载均衡策略算法[7][8][9]

负载均衡的实现主要取决于负载均衡调度策略或算法,负载均衡算法按其分配策略大体上可分为静态负载均衡算法和动态负载均衡算法。静态或动态负载均衡算法的主要区别在于是否会根据当前所有连接状态及各节点之间当前的负载情况进行动态分配,在实际的应用过程中,可以采用动静算法相结合的方式。目前常见的负载均衡算法有以下几种:

1)轮循法:依次将请求以轮循的方式按顺序调度到不同的服务器,属于静态算法。该算法的优点是明显优点是简单易实现,适用在集群中所有服务器的处理能力大体相同的情况。

2)带权重轮循法:在轮循算法的基础上,根据服务器的处理能为每台服务器增加了一个权值,使处理能力较强的服务器可以分到相对较多的处理任务。但该算法没有考虑处理 请求的时间变化 ,可能造成服务器间负载的不均衡,属于静态算法。

3)最小连接数法:是最简单的动态算法,记录了每台服务器的连接数,新的服务请求将被分配到当前连接数最少的服务器上。缺点是当各服务器处理能力不同时,可能出现负载不均衡现象。

4)最快响应法:记录到每一个节点的网络响应时间,并将新的连接请求分配给响应时间最短的服务器。次算法可较好的反映出服务器当前的负载情况,但不能代表客户端与服务器间的响应时间。

5)持续性算法:持续性是指特定客户端的每次请求将由同一个服务器处理。持续性算法主要基于随机理论,简单高效,不管是默认客户的访问还是服务器的选择都是随机的,如可根据客户的IP地址的hash值来选择服务器,相同的IP地址的客户端将被分配到同一个服务器。在具有用户身份认证和权限控制的应用中,需要使用该算法进行会话保持。因此,本文将使用该算法实现负载均衡。

(3)软件负载均衡优点

1)成本低廉:目前使用最广泛的负载均衡软件大都是开源免费的,如Nginx、LVS和HAProxy等,与硬件负载均衡相比成本较低。

2)配置简单:负载均衡软件的安装和配置比较简单,测试比较方便。如Nginx基本能把错误用日志打印出来,方便查找问题原因。

3)使用灵活:可以对http、Email、数据库、在线聊天室等几乎所有应用进行负载均衡,而且可以配合使用多种负载均衡软件,以达到所需要的负载均衡效果。endprint

4)可扩展性:软件负载均衡的扩展能力很强,若现有服务器集合的性能不能满足需求,可以继续在服务器集合中增加新的服务器来分担负载。另外,对开源的负载均衡软件进行二次开发,以满足不同的均衡负载需求。如Tengine是由淘宝网针对网站大访问量的需求发起的Web服务器项目,在Nginx的基础上,添加了很多高级功能和特性。

5)效果良好:具有较好的稳定性,并且支持高并发连接。如官方测试Nginx可以支持5万并发连接,在实际生产环境中可支持2-4万并发连接,而且宕机的概率微乎其微[10]。另外,软件负载均衡可以对服务器和应用进行状态检查,可根据系统与应用的状况来分配负载,达到硬件均衡负载所达不到的效果。

2.选课系统服务器负载均衡配置与测试

根据陕西师范大学本科教学管理现状和校园网络建设情况,通过Nginx软件负载均衡配置,对陕西师范大学学生选课系统进行优化,并以2016-2017年春季学期两次实际选课做为选课系统优化效果的验证方法。

(1)选课系统服务器配置情况

陕西师范大学本科生的选课工作由教务处负责,选课系统服务器由学校网络与信息中心所分配并托管,教务处工作人员负责服务器的一般性维护,具体通过远程的方式对数据库及应用程序进行管理。目前学校供选课使用的服务器共20余台,均为虚拟机,成本较物理机低的多,服务器操作系统部分为Windows,部分为Linux。本次选课服务器配置情况如表1所示。

(2)负载均衡配置

1)运行Nginx软件的负载均衡服务器是一个配置相对较高的、基于windows操作系统的服务器,承担负载的服务器集群是由不同操作系统、不同硬件配置的服务器组成,如图1所示。

2)负载均衡算法:学生登录选课系统后才可进行选课,因此在选课过程中要保持学生客户端与服务器之间的会话,要求负载均衡具有会话保持功能,因此我们使用Nginx中的持续性算法ip_hash作为均衡负载算法。ip_hash的方式是根据每个访问 ip 的 hash 结果,将访问请求固定分配到的一个后端服务器,可以有效解决session保持的问题。

3)Nginx反向代理配置:反向代理的方式是以代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上请求连接的客户端,从而实现了负载均衡的效果,此时代理服务器也就是负载均衡服务器。此外,通过反向代理配置,可将客户端访问的动态内容动态服务器处理,静态内容静态服务器处理,在实现了动态分离的同时,也参与了服务器的负载均衡。本文的配置是将jsp,sevelet等动态内容交由Resin服务器处理,将js,css等静态内容交由Nginx处理。

Nginx的关键配置示例如下:

http {

upstream localhost{

###########參与负载的服务器#############

server server1;

server server2;

server server3;

########负载均衡算法ip_hash###########

ip_hash;

}

server {

listen 80;

server_name localhost;

index index.jsp index.html index.htm;

root C:\www;

###############反向代理配置##################

location / {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

proxy_pass http://localhost;

expires 3d;

}

#########动静分离配置##########

location ~ \.*\.(jsp|jspx|do)$ {

proxy_pass http://localhost;

proxy_redirect off;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $http_host;

}

location ~ .*\.(js|css)?$ {

expires 1h;

}

}

(3)选课效果

相比陕西师范大学历年的每一次选课,在2016-2017年春季学期本科生正选和补退选两次选课过程中,选课系统一直访问流畅,未出现网络中断或页面无法访问等情况出现,而且选课系统的访问效果赢得了学生的满意和肯定。

正选阶段选课开始时间为上午9点,相比补退选课阶段,正选阶段选课系统的并发访问量较大。根据教务系统后台的实时统计,在选课系统开放的前10分钟内,选课成功门次数接近10000。根据专业的网站流量分析工具“百度统计”的统计分析,在系统访问的高峰时期,同时在线的用户数接近7000,浏览量33000余次,访问次数达13500余次。图2为正选阶段选课系统访问情况的统计。

四、结束语

通过以上研究分析、具体实践和数据统计可见,软件均衡负载技术在高校选课系统性能上具有较好的提升和优化效果。加之,其软件均衡负载的成本代价较低,可以作为高校选课系统优化的重要途径之一,甚至适用于高校其他具有高并发访问特性的网络信息系统。在今后的应用中,可以通过对负载均衡服务器进行双机备份配置和缓存设置,保证服务器的高可用性和访问速度。

参考文献:

[1]文捷,吴庆杰,陈翼,吴图南,张计龙,宓詠.复旦大学选课系统的性能优化策略研究和实践[J].中山大学学报(自然科学版),2009(S1):95-99.

[2]黄瑞雪,李翠华,蔡炳跃.基于完全学分制的选课系统的性能优化[J].厦门大学学报(自然科学版),2011(3):535-539.

[3]郑继兵,方园.高校综合教务管理系统本地化应用现状及发展建议[J].长春工业大学学报(高教研究版),2012(1):86-87+129.

[4]付小龙,宣华,袁芳,刘启新.新一代综合教务管理系统技术体系的设计与实现[J].实验技术与管理,2011(4):95-100.

[5]李长征.国家部委IT运维管理体系案例[J].电子政务,2008(12):26-33.

[6]全宇,何苗.负载均衡提高应用系统性能[J].中国教育信息化,2009(11):17-19.

[7]刘恩海,李伟,张素琪,董永峰,方新春.集群文件服务系统中的负载均衡算法的研究[J].计算机工程与设计,2013(8):2754-2758.

[8]黄静,李炳.基于Nginx的Web服务器性能优化研究[J].浙江理工大学学报(自然科学版),2016(4):600-606.

[9]李坤,王百杰.服务器集群负载均衡技术研究及算法比较[J].计算机与现代化,2009(8):7-10+15.

[10]张宴.实战Nginx:取代Apache的高性能Web服务器[M].北京:电子工业出版社,2011:6-10.

(编辑:王晓明)endprint

猜你喜欢
负载均衡优化
超限高层建筑结构设计与优化思考
一道优化题的几何解法
由“形”启“数”优化运算——以2021年解析几何高考题为例
异构环境下改进的LATE调度算法