APP下载

基于SSM的高并发慕课网的设计与实现

2020-03-16鞠宏军佘春燕

电脑知识与技术 2020年2期
关键词:负载均衡慕课

鞠宏军 佘春燕

摘要:为了帮助IT学子能够更加便利的获取学习资源,该系统采用B/S架构的方式,将大量学习资源通过互联网整合在一起,提供给用户学习使用。系统主要实现视频学习、发布讨论、撰写博客、站内搜索、程序在线测评等功能,用户也可以通过评论的方式实现问题解答、交流互动。

关键词:负载均衡;慕课;SSM;Nginx;Redis

中图分类号:TP311       文献标识码:A

文章编号:1009-3044(2020)02-0054-03

Abstract: In order to help IT students to obtain learning resources more conveniently, the system adopts the B/S architecture method to integrate a large number of learning resources through the Internet and provide them for learning and use. The system mainly realizes video learning, publishing discussion, writing blog, station search, program online evaluation function, and users can solve problems and exchange interaction through comments.

Key words: load balancing; mooc; ssm; nginx; redis

1 背景

在21世纪的今天,计算机的作用可谓是举足轻重,互联网在教育行业的发展更是突飞猛进,一种新型的教学模式——慕课,进入人们的视野,它打破了传统课堂教育的固定模式,将学习资源通过互联网联系起来,弥补了传统课堂教育的局限性,为学生提供了更广大、开放的学习平台。《基于SSM的高并发慕课网的设计与实现》是针对计算机相关专业学生开发的在线学习系统。本系统提供大量视频课程提供给学生学习,通过讨论和博客,实现了学生的交流与互动;系统还提供了站内搜索引擎、程序在线测评等功能。为了给学生提供更佳的学习体验。本系统采集了学生的使用特征及有关操作,为每个用户推荐与自己相关或者感兴趣的课程,给所有学生推荐合理的课程进行学习。

2 关键技术

2.1 服务器集群

当业务量逐渐递增,一台服务器的单机架构模式难以支撑整个web系统的正常稳定运行,此时,需要提出了服务器集群的系统架构,在后台同时启动多台服务器,同时启动多台数据库服务器将业务与数据分离,在高并发的环境下,为了减轻后台 Tomcat 的压力,得到很快的用户访问速度体验,可以做Nginx和Tomcat动静分离,前端Nginx和keepalived 做双机热备,后台 Apache 服务器做负载均衡。Nginx 将 location 做动静分离后的JSP等程序文件分发到后台Tomcat集群上,将静态资源使用前端的Nginx来处理,以减轻后台 Tomcat 的压力,使用 Nginx 作为后台服务器的调度者,以此实现后台众多服务器的负载均衡,当一台服务器因为物理原因或者其他原因宕机以后,Nginx 会进行检测,选择其他可以正常工作的服务器分发请求。

2.2 数据库集群

随着系统的运营,系统的用户量、并发量逐渐增加,一台数据库的单机模式难以难度高并发情况下的读写需求,当系统在线上的运营时间逐步增加,数据库中的数据量在量级上发生了变化,即使用 DBA 的不断优化,一台数据库的读写速度还是显得有些力不从心,此时,提出了数据库服务器集群的系统架构,在后台同时启动多台数据库,使用主从复制、读写分离、分表分库的机制缓解数据库的读写压力,使用 mycat 作为数据库中间件,将读 sql和写 sql分别路由到不同的数据库中,以此缓建每台数据库的压力,提高数据库的响应速度和性能,mycat 还提供了心跳检测机制,当一台主机宕机以后, 会选择一台从机作为写库,以此保证系统的高可用。在大型的软件系统中,为了缓解后台数据库的压力,提高系统的数据查询速度,提出了缓存的解决方案,当前市场中Redis 是一款非常优秀的缓存数据库,它是一款内存数据库,所有的对数据的读写操作都是面向内存而言,因此能够为用户提供更加良好的检索速度。集群架构图如图1所示。

3 需求分析

《基于SSM的高并发慕课网的设计与实现》是针对我国计算机相关专业学生开发的在线学习系统,本系统主要实现:提供大量的计算机相关课程给学生进行学习,同时学生可以发布讨论和撰写博客以及进行评价;为了方便用户的使用,系统采用推荐算法为每个用户推荐与自己相关的课程或者感兴趣的课程;教师可以在后台系统申请开设新的课程,并且系统根据该教师开设课程的学习情况生成相应的统计分析图反馈给教师;网站后台管理员审核维护网站基本信息。慕课的教育模式可以将处于传统教育模式中的教师从复杂烦琐的工作中解放出来,从而降低教師的工作量,并且可以做到随时随刻学习,使学生的学习时间更加灵活。广大学子可以在系统中发起讨论,全网学子互相讨论,不仅可以快速地解决问题,还可以增强学习兴趣,能够真正做到集思广益。互联网行业使用的技术层出不穷,且技术更新迭代快速,传统的教学模式不足以跟上知识的更新,IT知识在IT的教学模式下学习定会事半功倍。因此慕课教学应运而生。

学生系统:浏览课程,视频学习,课程评论,课程评论点赞;浏览讨论,发起讨论,讨论回复,讨论点赞;浏览博客,撰写博客,评论博客,博客点赞;根据不同用户推荐课程及正在学习的相关课程;个人基本信息,个人发布讨论、博客、正在学习的课程信息;登录注册;程序在线测评;站内搜索。

教师系统:个人信息;浏览个人开设的课程,上传新的课程数据;根据该教师开设的课程和学习该课程的学生信息生成统计分析图,教师根据统计分析图分析该课程线上的学习情况,分析其中的不足与缺陷,在之后的开设的课程中能够做出相应的优化,使课程能够更加的适合学生的需求;登录验证。

管理员系统:个人信息;管理网站的基本素材信息;更新系统首页推荐的最新、初级、中级、高级课程信息和用户在未登录的情况下的默认推荐课程信息,教师将首页的推荐信息存到缓存中,在高并发的环境下,以此提高首页的响应速度、降低后台数据库的压力、提高系统的并行性。

4 系统设计

4.1 功能设计

《基于SSM的高并发慕课网的设计与实现》总共有三类用户:学生、教师、管理员,各自登录各自的系统,系统可以分为三个子系统,学生使用的慕课网系统,教师使用的教师后台系统,管理员使用的后台管理系统。学生用户的主要功能是在线视频学习,发布讨论,撰写博客,发布评价,程序在线测评,站内搜索等;教师用户的基本功能是发布课程,生成统计分析图等;管理员的主要功能是管理网站的基本素材信息,认证高访问量的推荐课程。系统功能结构图如图2,3,4所示:

4.2 数据库设计

《基于SSM的高并发慕课网的设计与实现》的实体有:管理员、教师、学生等。

按照用户类型分类有:管理员、教师、学生;按照需求分析,系统建立管理员表(admin)、博客表(blog)、博客评论表(blog_comment)、类别表(category)、课程表(course)、课程评论表(course_comment)、课程详情表(course_detail)、方向表(direction)、讨论表(discussion)、讨论评论表(discuss_comment)、学习表(learn)、等级表(level)、轮播图表(loop_picture)、学生表(student)、操作日志表(student_log)、教师表(teacher)。系统总体E-R图如图5所示。

5 系统实现

5.1 程序在线测评模块

当用户进入在线测评页面,为用户展现两个文本域,一个文本域提供给用户撰写源程序,另一个文本域展示用于程序的运行结果或者错误提示。用户选择当前撰写程序的类型,系统提供了C/C++、Java两种语言的在线测评,当用户撰写完源程序之后,点击测评,系统后台自动将用户提交的源程序进行编译、执行。获取其运行结果或错误提示信息发送到用户界面进行展示。功能执行流程图如图6所示。

5.2 站内搜索模块

首先获取用户输入的搜索关键词,根据用户输入的搜索关键词,在数据库中使用模糊查询,获取搜索集,在同一个搜索集中,根据搜索关键词和搜索集中的数据进行相似度计算,然后将搜索集中的数据很具相似度降序排序呈现给用户,将相似度最高的数据尽量呈现在页面的前方,展示给用户。

在字符串相似度的计算中采用余弦相似度的方式计算机两个字符串的相似度,首先根据搜索关键词和目标字符串进行分词,然后计算出分解之后每个词出现的词频率,根据两个字符串的词频率生成测评向量a(x1, x2, x3…xn),b(y1, y2, y3…yn),最后根据生成的两个向量计算出他们的相似余弦值,公式如图(1):

若向量之间的余弦值越接近于1,则两个向量越相似,则两个字符串相似。若向量时间的余弦值越接近于0,则两个向量越不相似,则两个字符串不相似。综上所述:两个字符串的相似余弦可以用来度量两个字符串的相似程度,因此在同一搜索集合中,分别计算该集合中的各个数据与目标搜索关键词的相似度,根据相似度降序排序之后,将集合中的数据展示给用户。

5.3 在线视频学习模块

当用户登录之后,实现在线视频学习,因为类似视频这种大的二进制文件而言就,如果直接存储到数据库中,无疑会降低数据库的读写性能,将重负载压到了数据库中,所以系统数据库中知识存储了该视频在服务器中的存储路径,并不是直接将该视频文件存储到数据库中,这样若是要获取一个视频,只需要获取该视频的路径即可,以此降低数据库的读写压力。

5.4 首页热点数据加载

首页功能模块主要是实现课程方向,课程类别轮播图的展示,紧接着展示出系统推荐的最新、初级、中级、高级课程以及优秀博客和优秀教师的基本信息。因为首页信息类型复杂,所需计算量大,数据量大的原因,系统将首页推荐信息存储到redis缓存中,以提高系统的获取数据的速度,提高系统的响应速度。

6 结束语

系统基于Linux平台,采用B/S结构,采用Layui、JSP、SSM、Redis、MySQL、Mycat、Nginx等技术实现。本系统主要包括三个子系统,分别是:慕课网、教师上传课程系统、后台管理系统。主要实现了课程展示、在线视频播放学习、讨论展示、发布讨论、博客展示、撰写博客、评论点赞、个人信息浏览、上传课程、统计分析、系统基本设计、推荐认定等功能。系统具有较强的稳定性,能够稳定的为用户提供服务,具有一定的推广和实用价值。

在系统实现期间,夯实了SSM三大框架的知识架构,对SSM产出了更深的理解。在高并发的环境下,传统的用户、服务器、数据库的网站架构难以满足用户的需求,此时意识到一台服务器的网站架构需要做出进一步的升级,需要在后台同时部署多台web服务器和数据库服务器,在用户与服务器之间使用Nginx做反向代理,以此实现多台服务器的调度,在web应用于数据库之间使用Mycat中间件代理多台数据库,在多台数据库之間启用主从复制、读写分离的机制,将读SQL和写SQL分别路由到不同的数据库,以此降低单台数据库的读写压力,提高系统的并行性。在整个系统的实现过程中,新学习了Layui、Redis、Nginx的使用,对高并发情况下的网站有了新的解决方案——使用Redis做数据库缓存、使用Nginx实现负载均衡,以此降低高并发给后台服务器和后台数据库带来的压力。

参考文献:

[1] 苗泽. Nginx高性能Web服务器详解[M]. 北京: 电子工业出版社, 2013.

[2] Baron Schwartz, Peter Zaitsev, Vadim Tkachenko. High Performance MySQL[M]. New York: OReilly Media, INC, 2013.

[3] 唐文. 大型网站性能监测、分析与优化[M]. 北京: 电子工业出版社, 2016.

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

[5] 埃克尔. Java编程思想[M]. 4版. 北京: 机械工业出版社,2007.

[6] Walter Savitch, Kenrick Mock. Absolute Java[M].6th ed.New York: PEARSON EDUCATION, INC. 2018.

[7] 范勇, 兰景英, 李绘卓. 软件测试技术[M]. 西安: 西安电子科技大学出版社, 2009.

【通联编辑:谢媛媛】

猜你喜欢

负载均衡慕课
异构环境下改进的LATE调度算法
大学生对慕课的了解和利用
“慕课”教学的“八年之痒”
慕课环境下的学习者