一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于三级缓存的在线考试系统吞吐量提升装置及方法与流程

2021-11-15 19:07:00 来源:中国专利 TAG:


1.本发明涉及在线考试系统吞吐量提升技术领域,特别是涉及基于三级缓存的在线考试系统吞吐量提升装置及方法。


背景技术:

2.本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
3.基于关系型数据库开发的在线考试系统在面对超过千万量级的用户同时在线使用时,不可避免的会出现系统卡顿甚至宕机的情况。针对此类问题,行业内多采用集群部署水平扩容的模式进行支撑,此种模式,服务器投入成本过高,以1万人同时考试为例,不考虑高可用的情况,一组服务至少需要部署2台服务器,包括一台应用服务器和一台数据库服务器,保证1万人顺利考试则需要2*20=40台服务器支撑。
4.按照图1所示的考试过程分析,考试时的压力主要集中在步骤4、5、6,原因如下:
5.1.mysql等关系型数据库在高并发小事务提交时系统吞吐方面的表现不理想,16c32g配置下tps小于500,考虑上层业务应用处理时间,压测时实际值在300左右。所以当上线人数增加时时等待时间也会变长,时延也随之增加,当服务器一直处于高压状态,就容易出现宕机现象。
6.2.上万人同时在线考试,不论采用集群方式,还是利用ssd硬盘提升mysql吞吐的方式,均需付出较高的经济成本,整体来看性价比较低,在实际操作上不建议采纳。
7.3.计算考生得分时,需从数据库里查询出该考生的所有试题答案然后进行遍历与正确答案进行比对,此过程比较耗费资源,当考试人数增多时,容易成为系统瓶颈点。


技术实现要素:

8.为了解决现有技术的不足,本发明提供了基于三级缓存的在线考试系统吞吐量提升装置及方法;
9.第一方面,本发明提供了基于三级缓存的在线考试系统吞吐量提升装置;
10.基于三级缓存的在线考试系统吞吐量提升装置,包括:管理端服务器和若干个考生端服务器组;
11.每个管理端服务器上部署考试管理系统和mysql数据库;
12.每个考生端服务器组,包括:负载均衡服务器,所述负载均衡服务器与若干台浏览器连接,所述负载均衡服务器分别与三个运行端服务器连接;
13.每个运行端服务器,均部署有一级缓存和二级缓存;每个一级缓存均与负载均衡服务器连接;每个一级缓存均与对应的二级缓存连接,每个二级缓存均与考试管理系统和mysql数据库连接;所述浏览器作为三级缓存;
14.所述浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;浏览器接收答案缓存请求的题数达到设定阈值m时,m为正整数;将m道题的答案通过一级缓存转储到二级缓存中;二级缓存对m道题的答案与预设正确答案进行比对,并记录正确的题
目数;二级缓存将m道题的答案与正确的题目数同步到管理端服务器的mysql数据库中。
15.第二方面,本发明提供了基于三级缓存的在线考试系统吞吐量提升方法;
16.基于三级缓存的在线考试系统吞吐量提升方法,包括:
17.浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;
18.浏览器接收答案缓存请求的题数达到设定阈值m时,m为正整数;将m道题的答案通过一级缓存转储到二级缓存中;
19.二级缓存对m道题的答案与预设正确答案进行比对,并记录正确的题目数;二级缓存将m道题的答案与正确的题目数同步到管理端服务器的mysql数据库中;
20.重复上述所有步骤直至所有试题完成。
21.与现有技术相比,本发明的有益效果是:
22.1)引入新的技术方案,解决关系型数据库高并发时的瓶颈问题,提升单台服务器的承载能力,降低集群扩展的成本。
23.2)采用新的得分计算方式,将交卷时的压力进行分散,降低集中交卷时的系统压力。
24.3)引入三级缓存,降低对关系型数据库的冲击,将考试数据异步同步到关系型数据库中,通过缓存应对考试的并发流量可极大提升考试系统的并发承载能力。
25.4)该方法利用内存与磁盘读写速度的巨大差异,采用三级缓存突破传统关系型数据库的读写瓶颈,同时引入浏览器缓存,大大降低了前后端交互的次数,进一步降低了请求并发压力。
26.5)利用bitmap的特性,将原来查询考生答案再循环遍历的过程,变成每次提交试题答案时同步比较正确答案,这样最终计算时可利用bitcount方法可快速计算出分数,避免了计算得分环节的100次循环遍历比对,提高了计算效率。
27.6)该方法与原有方法对比,以3万人同时考试为例,该方法只需要4台服务器,而原有方法需要120台服务器进行支撑,大幅度降低了资源成本投入,经济效益明显。
28.本发明附加方面的优点将在下面的描述中部分给出,或通过本发明的实践了解到。
附图说明
29.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
30.图1为第一个实施例的现有技术的考试过程示意图;
31.图2为第一个实施例的bitmap存储试题正确情况示意图;
32.图3为第一个实施例的服务器部署示意图。
具体实施方式
33.应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
34.实施例一
35.本实施例提供了基于三级缓存的在线考试系统吞吐量提升装置;
36.基于三级缓存的在线考试系统吞吐量提升装置,包括:管理端服务器和若干个考生端服务器组;
37.每个管理端服务器上部署考试管理系统和mysql数据库;
38.每个考生端服务器组,包括:负载均衡服务器,所述负载均衡服务器与若干台浏览器连接,所述负载均衡服务器分别与三个运行端服务器连接;
39.每个运行端服务器,均部署有一级缓存和二级缓存;每个一级缓存均与负载均衡服务器连接;每个一级缓存均与对应的二级缓存连接,每个二级缓存均与考试管理系统和mysql数据库连接;所述浏览器作为三级缓存;
40.所述浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;浏览器接收答案缓存请求的题数达到设定阈值m时,m为正整数;将m道题的答案通过一级缓存转储到二级缓存中;二级缓存对m道题的答案与预设正确答案进行比对,并记录正确的题目数;二级缓存将m道题的答案与正确的题目数同步到管理端服务器的mysql数据库中。
41.进一步地,所述一级缓存,采用ehcache来实现,用于缓存试卷答案方便算分;
42.所述二级缓存,采用分布式缓存redis来实现,用于用户答案存储和得分计算;
43.所述三级缓存,采用浏览器缓存localstorage来实现,用于用户答案暂存,降低服务端请求频次。
44.进一步地,浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;步骤之前还包括:
45.管理端服务器的考试管理系统选题组卷,将试题发布到二级缓存;
46.管理端服务器的考试管理系统,将考生信息以及考生与试卷的绑定关系写入二级缓存;
47.浏览器接收考试登录请求,并将考试登录请求发送给一级缓存,一级缓存将考试登录请求转发给二级缓存;其中,所述考试登录请求中包含考生唯一id;二级缓存基于考生信息对考试登录请求的考生唯一id进行验证;验证通过后进入下一步;
48.响应于所述考试请求,运行端服务器从二级缓存中调用与考生唯一id对应的试卷内容,将试卷内容发送给浏览器并缓存在浏览器中。
49.进一步地,重复上述所有步骤直至所有试题完成;之后还包括:
50.接收提交试卷请求;将浏览器中未上传的答案,通过一级缓存转储到二级缓存中;二级缓存计算出所有正确的题目数,进而得出考生得分;
51.二级缓存中的答题记录和考生得分,定时同步上传给管理端服务器的mysql数据库。
52.实施例二
53.本实施例提供了基于三级缓存的在线考试系统吞吐量提升方法;
54.基于三级缓存的在线考试系统吞吐量提升方法,包括:
55.s1:浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;
56.s2:浏览器接收答案缓存请求的题数达到设定阈值m时,m为正整数;将m道题的答案通过一级缓存转储到二级缓存中;
57.s3:二级缓存对m道题的答案与预设正确答案进行比对,并记录正确的题目数;二
级缓存将m道题的答案与正确的题目数同步到管理端服务器的mysql数据库中;
58.s4:重复s1~s3直至所有试题完成。
59.进一步的,所述s1:浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存;步骤之前还包括:
60.sa:管理端服务器的考试管理系统选题组卷,将试题发布到二级缓存;
61.sb:管理端服务器的考试管理系统,将考生信息以及考生与试卷的绑定关系写入二级缓存;
62.sc:浏览器接收考试登录请求,并将考试登录请求发送给一级缓存,一级缓存将考试登录请求转发给二级缓存;其中,所述考试登录请求中包含考生唯一id;二级缓存基于考生信息对考试登录请求的考生唯一id进行验证;验证通过后进入下一步;
63.sd:响应于所述考试请求,运行端服务器从二级缓存中调用与考生唯一id对应的试卷内容,将试卷内容发送给浏览器并缓存在浏览器中。
64.进一步地,所述方法,s4:重复s1~s3直至所有试题完成;步骤之后还包括:
65.s5:接收提交试卷请求;将浏览器中未上传的答案,通过一级缓存转储到二级缓存中;二级缓存计算出所有正确的题目数,进而得出考生得分;
66.s6:二级缓存中的答题记录和考生得分,定时同步上传给管理端服务器的mysql数据库。
67.应理解的,所述s1:浏览器接收每一道题的答案缓存请求,浏览器对每一道题的答案进行缓存,答案将缓存到三级缓存浏览器的localstorage中,不再提交到后端,减轻服务器压力。
68.应理解的,s2:假设考生每做完10道题时会异步提交这10道题的答案到后端服务器,从而将后端请求次数降为原来的1/10,由于考生做题速度不同,请求并发峰值也将大幅下降。
69.应理解的,所述s3:考试系统收到考生答案后,将考生答案记录存入二级缓存redis的list中,该list用于异步同步考试的答题记录,同时比对试题答案,将该考生正确题目对应题号的bitmap对应位置设置为1,错误的设置为0。由于redis的吞吐能力可达每秒十万,极大的提升了系统的吞吐能力。
70.应理解的,所述s5:考生点击交卷,将三级缓存中未提交的答案提交。之后可调用bitmap的bitcount命令得出正确的题目数,如图2所示,乘以分值计算出考生得分。计算效率较之原来提升近1000倍。
71.应理解的,所述s6:同步程序定时读取redis中数据,将考生的答题记录和最后得分异步同步到mysql中。
72.经实际测试,一台16c 32g配置的服务器,混合部署应用和redis可支撑1w用户同时在线考试,cpu占用率不到40%,同时请求延时在100ms以内。为保证系统高可用,采用集群方式部署,每3台服务器作为一个服务组,服务组之间资源隔离,每组服务可以支撑3

5万人同时在线考试,根据考试需要可以平行扩展,具体部署情况如图3所示。图3为新方法部署示意图,通过部署4台服务器即可支撑3

5万人同时在线考试。
73.如在线人数较多,或服务器出口带宽较低,可以将发布的试题,静态化成json后发布到内容分发网络cdn,进一步降低服务端的数据传输压力。
74.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献