分布式高性能网络架构在中小事业单元中的建设与思考
——以国开基层教务平台建设为例
2018-06-19刘超
刘 超
(南充广播电视大学,四川 南充 637000)
一、让技术走向日常工作
网络应用进一步发展到大数据时代,对我们的网站建设提出新的要求,响应更快,服务器7×24在线,系统更安全,数据更安全。传统的网站建立方式有了一定的局限性,过去平台建设使用单台服务器提供服务,但性能和稳定性都很难保证。后来使用多台服务器组成集群,使用灾备,双机热备等多种保证稳定性,但这些技术对淘宝,京东等大型网络平台来说,依然完成不了他们大数据时代的需求。他们的网络平台面对用户更多,提供服务种类多,但要求响应时间非常短且安全性要求非常高,由此网络平台建设进入了分布式网络架构阶段。但这类网络平台建设技术难度高,成本高,维护难度也高。对很多中小型事业单元来说并没有能力建设分布式架构的服务,如何帮助中小型事业单元建立一个分布式高效能的网络平台,并且成本不能太高成为目前网络化进程的一个急需解决的问题。
本文的教务平台建设是借鉴使用京东等电商的技术路线开发的,追求高可靠性,热部署,稳定性,且注重保证网站在大量访问情况下的安全稳定,7×24在线并且使用较为低成本的硬件设备完成较高性能网络平台,探索一条较为经济可靠的分布式网络搭建技术路线。由于分布式网络平台的搭建中可以选择使用的技术路线非常多,每一个环节都有若干种选择,如何进行最有效的搭配成为众多开发者的门槛。本文通过国开基层教务平台的建设,总结并提供了一条高效率稳定低成本的解决方案。
二、分布式网络架构技术的选择
分布式网络架构一般使用分布式资源共享服务器,指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布不同地理位置的服务器来共同提供服务。由于我们的教务平台数据保护要求较高,所以采用多台服务器集中在机房部署,只是使用多台服务器来提供服务,并没有地理位置上的分散,这也是最常见的应用。
国家开放大学对新的教育技术的使用一直处于比较领先的地位,从历史上的卫星转播,电视教学等一直有较好的应用。在网络技术突飞猛进的发展过程中,
对网络的使用也是一直处于领先的地位。但是由于国开系统的特殊性,比如分校分布广,分层多,中央,省,市,县几级分布,且各地经济技术水平发展差距较大,课程等教务多方面的选择并不统一。实际情况差距较大,造成分校到学生一级的脱节,学生并不能详细的了解到自己的学习情况。针对这个问题,我们研究开发了分校一级的平台,内容涉及教务,学生,教师,上级平台等几个方面。
1、系统性能要求评估
系统的建设要考虑到应用范围,以后的可扩展性等方面的因素。分校一级涉及的内容主要是详细统计学生课程通过情况,并将本期教学过程的详细告知学生,详细内容为选课后的课程及学习平台,考试,成绩等内容告知学生。学生根据平台的告知的详细内容进行学习。涉及到学生的班级,班主任,教学计划,修复学,转专业,学位申请等内容,考试方面则有考试文件,组考数据,考试成绩等内容的安排。平台针对市一级的学习,涉及学生大概在五千到两万人之间,涉及考试课次大概在两万到十五万条左右,由于学生登录平台的时间段会比较集中,所以对系统的并发性,健壮性有较高的要求。且学生的登录方式多样,必须要进行移动端的适配。成绩数据量较大,现已有46万条数据,且每年增加6万条左右。
2、搭建平台及技术选项的取舍
系统平台搭建在centos6.5版本上,它使用linux内核,在共享的系统优化软件上有较多的选择,系统稳定;设计语言使用java;服务器代理使用tomcat;数据库使用mysql;编程工具使用eclipse;这样的选择一个是很成熟,而且费用低。团队合作使用在码云创建的账号,每人负责的部分及时更新上传;同时要考虑到负载均衡的处理;共享缓存;数据库使用主从方式备份,同步写入;防单点(single point)部署等几个方面。
基于linux内核的系统很多,国内就是centos和ubuntu比较多。选用centos的原因一个是它采用的内核组件及内核版本较为保守,因此稳定性要好一些。而且很多专业设备都支持centos的安装。这样就降低了极大的难度。且本人对centos使用较为熟悉。
由于使用了centos系统,.net在该平台没有什么优势,J2EE有良好的跨平台性能,使用java来进行编程就是不二的选择了。尽管对普通事业单元来说,linux系统比windows系统由更高的门槛,但centos经历了长期的发展,技术难度已经降低了很多,而且网络上有非常多的使用帮助,所以选择centos系统并不会有很大的难度。
图1
如图1所示,我们系统平台搭建逻辑结构的基本样式,依此结构,平台搭建中使用的各项技术完美融合,达到较好的并发性,稳定性,经济性。
教务系统建设中,考虑到学生登录系统会有一定的集中性,比如考前考试安排,考后出成绩等都会造成学生集中登录,所以负载均衡这一块一定要做好。负载均衡Load Balance,指把工作分摊到多个操作单元上执行,指在现有的网络结构之上,提供一种有效透明的方法扩展网络设备和服务器的带宽,增加吞吐量,加强网络数据的处理能力,提高网络的灵活性和可用性。
做负责均衡有多种方法,这里我们使用nginx来做服务器的反向代理和负载均衡。负载均衡有多种做法,比如软件方案有 DNS Load Balance,CheckPoint Firewall-1 ConnectControl,有的则采用硬件解决,比如路由模式,桥接模式,服务直接返回模式等。我们建设教务平台的时候,综合使用范围,系统强度,技术难度,可靠性,经济性等几个方面综合考虑,采用nginx来作为负载均衡服务器,在链接高并发的情况下,是一个非常好用的服务器,可以支持高达50000个并发的链接请求。且安装简单,配置文件方便,可以7*24不间断运行,可数月不重启。考虑到目前访问量的因数,我们使用四台服务器来提供服务,四台虚拟机,分布在两台物理机器上。如果后期需要更多服务的话,可以采用直接增加服务器数量的方式来对应。可扩展性很强。
nginx的使用比较简单方便,下载后不需要安装,直接启动就可以了,但是要配置一下核心文件,配置nginx.conf文件,主要是lcation选项,它表示配置路径,所有的请求都被匹配到了这里。
传统上还有一些技术,比如双机热备等,但效率并不高,所以没有采用。
在共享缓存的管理上,我们使用了redis作为管理工具。Redis是一款高性能的数据库服务器,每秒的set操作可达110000次,get可达81000次可以实现主从同步,Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。Radis的源文件可以免费获得,需要make编译一次。
Tomcat是动态网页服务器,是jsp/servlet容器,同时也支持 HTML、JSP、ASP、PHP、CGI等,其中 CGI需要一些手动调试,不过很容易的,属于配套的应用了。Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行即使在Windows系统中,也常使用tomcat作为web网络服务器。Apache是个静态的web服务器,教务平台的内容大多是实时更新的,属于动态网页,apache明显不符合要求。
数据库服务器采用主从结构,从服务器进行实时备份。保证数据的安全性。Mysql体积小,速度快,源码开放,总成本比较低,适合中小网站的建设。
三、平台的数据流动
平台建设围绕的中心就是学生学习和教师选课,学生在学习遇到了课程目标多样化的问题,各种课程开设单位不一致,造成要求不一致,完成平台不一致,同时也对教师给学生的课程注册造成极大地负担。从该目标出发,合理设计数据流,该平台包含了学生信息表,班级信息表,教学计划表,班主任表,教学点表,成绩表等多种数据。
图2
上图2为平台业务流程图,通过对业务流程的梳理,基本涵盖了学生入学后到考试的各各阶段。入口分为教务、班主任、财务、学生等几个主体,登陆后根据系统分配显示不同的功能模块。可以帮助教师,教务,财务,学生等几个主体互动。大大减轻了老师学生之间,下级教务和上级教务之间,教务和学生之间信息不畅通的局面。平台已经运行了两个学期,极大的减轻了教学选课的负担和学生对课程学习的困惑。
四、学践结合
由于各分校各部门的实际业务流程有差距,所以该平台距离大面积推广还有一定的不足。但系统建成两个学期以来,在各工作流程中稳定的发挥了积极的作用,极大的减轻了教学选课的负担和学生对课程学习的困惑。
本次的平台的建设先进性在于将负载均衡,共享缓存等技术应以较低的成本的应用于普通事业单元的建设,以更好的系统性能和稳定性使系统更加出色。总结了一条较为可行,易于推广使用的技术路线。该教务平台从另一方面成为计算机专业教师的一个理论联系实际的平台,由于有充足的数据和复杂的业务流程,所以对各项技术都有较大考验,后续工作中继续引入最新的技术到普通工作中,解决大众工作中遇到的实际问题,而不是去创造新的需求,让技术走向日常。
[1]陈康贤.《大型分布式网站架构设计与实践》[M].电子工业出版社.
[2]Peter Membrey,David hows,Eelco Plugge,武海峰,陈晓亮译.《实用负载均衡技术:网站性能优化攻略》[M].人民邮电出版社.
[3](美国)LourisRosenfeld,(美国)PeterMorville.《Web信息架构——设计大型网站》[M].电子工业出版社.