发明内容
本发明实施例提供了一种线上试卷提交方法、装置、设备及介质,以至少解决高并发场景下线上试卷无法提交的问题。
第一方面,本发明实施例提供了一种线上试卷提交方法,包括以下步骤:
接收提交试卷请求;
获取提交目标试卷的等待时间;
查询正在提交试卷的用户数量,判断所述提交试卷请求是否满足提交条件,若不满足所述提交条件,则等待所述提交目标试卷的等待时间;
若满足所述提交条件,则提交目标试卷。
在其中一些实施例中,所述获取提交目标试卷的等待时间,包括:
调用预设的等待时间获取方法随机获取提交目标试卷的等待时间。
在其中一些实施例中,所述判断所述提交试卷请求是否满足提交条件,包括:
判断所述正在提交试卷的用户数量是否大于或者等于最大可支持的用户数量;
若所述正在递交试卷的用户数量大于或者等于最大可支持的用户数量,则判定不满足提交条件,否则,判定满足提交条件。
在其中一些实施例中,所述等待所述提交目标试卷的等待时间之后,包括:
重新查询正在提交的用户数量,并判断所述提交试卷请求是否满足所述提交条件;
若仍不满足所述提交条件,则再次等待所述提交目标试卷的等待时间后,重新查询正在提交的用户数据,并判断所述提交试卷请求是否满足所述提交条件,直至在预设时间内满足所述提交条件或等待总时长大于或等于所述预设时间为止;
若在所述预设时间内满足所述提交条件,则提交目标试卷;
若等待总时长大于或等于所述预设时间,则由客户端重新发起重新发起所述提交试卷请求。
在其中一些实施例中,所述提交目标试卷,包括:
上传所述目标试卷;
若上传所述目标试卷失败,则重新上传所述目标试卷,直至成功上传所述目标试卷或上传所述目标试卷的失败次数大于或等于预设次数为止;
若上传所述目标试卷的失败次数大于或等于所述预设次数,则由客户端重新发起重新发起所述提交试卷请求。
在其中一些实施例中,所述提交目标试卷,还包括:
若成功上传所述目标试卷,则生成提交试卷成功的提示信息下发至所述客户端。
在其中一些实施例中,所述上传所述目标试卷,包括:
通过文件传输协议上传所述目标试卷。
第二方面,本发明实施例提供了一种线上试卷提交装置,包括:
提交流程启动模块,用于接收提交试卷请求;
等待时间获取模块,用于获取提交目标试卷的等待时间;
提交校验模块,用于查询正在提交试卷的用户数量,判断所述提交试卷请求是否满足提交条件;若不满足所述提交条件,则等待所述提交目标试卷的等待时间;
文件上传模块,用于在满足所述提交条件时,则提交目标试卷。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的线上试卷提交方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的线上试卷提交方法。
相比于现有技术,本发明实施例提供一种线上试卷提交方法、装置、设备及介质,在高并发的试卷提交场景下,通过查询正在提交的用户数量校验提交条件,对试卷提交进行限流,从而对提交试卷流程进行有序控制,保证试卷提交成功。
本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
具体实施方式
为了使本申请的目的、技术方案更加清楚明白,以下结合附图及实施例,对本发明进行描述和说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。基于本发明提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
当学校的网络带宽为100MB,文件服务器带宽为50M时,在目前的的线上考试应用场景中,学生一次提交试卷或作业的总用时为:1500ms(1.5s),客户端轮询间隔为10s,获取Token令牌的等待时间是700ms,上传云端的用时为600ms,服务端上传试卷或作业的用时为200ms,对上传接口进行压力测试,100个并发用户会有1800/s的延时,如果高并发的情形下,提交试卷的瓶颈可能出现在云端带宽和服务端上传接口。因此需要考虑全平台的限流策略。需要注意的是,根据云端总带宽M,每个学校的网络带宽配置N,每个学校参与考试人数P,总考试人数T,计算出每个学校的限流带宽S,因此,某个学校的可用云端带宽m=(M/T)*P,与学校的总带宽比较,取小,每个学校的限流带宽S:S=(m>N)?N:m。
实施例1
基于以上原理,本实施例提供一种对线上试卷提交方法,图1是本发明线上试卷提交方法的流程图,
如图1所示,线上试卷提交方法,包括以下步骤:
S101、接收提交试卷请求。
在高并发的线上考试场景下,服务端接收客户端发起的提交试卷请求,启动提交试卷流程。
S102、获取提交目标试卷的等待时间;
服务端获取提交试卷的等待时间,在提交接口拥挤时,通过等待实现对提交试卷进行限流控制。
S103、查询正在提交试卷的用户数量,判断提交试卷请求是否满足提交条件;若不满足提交条件,则等待提交目标试卷的等待时间。
请求相关接口可查询正在提交试卷的用户数量,通过正在提交试卷的用户数量可判断提交接口是否拥挤,从而确定是否立即提交试卷。
若不满足所述提交条件,则等待获取到的等待时间,使得暂停执行提交试卷,将资源让给其他的提交试卷线程,然后再继续执行步骤S103,避免一次提交试卷失败后,导致整个提交试卷流程失败。
S105、若满足提交条件,则提交目标试卷。
若满足提交时间,则说明提交接口畅通,可正常执行提交试卷操作,调用服务端的提交接口上传目标试卷,若上传失败,则重新执行S105,直至上传试卷成功。
通过本实施例的线上试卷提交方法,通过监控正在提交试卷的用户数量,以对递交试卷流程进行调度,保证有序递交试卷,避免因提交接口或提交通道拥堵,从而能有效避免递交试卷失败。
优选地,获取提交目标试卷的等待时间,包括:
调用预设的等待时间获取方法随机获取提交目标试卷的等待时间。
在本实施例中,通过预设的等待时间获取方法获取提交试卷需要等待的时间,该方法为QUEUE_WAIT_INTERVAL/1000*Random#nextInt(1000),其中,Random.nextInt()可随机产生一个数值,如果有参数就是在0到参数之间产生,因此在本实施例中,提交目标试卷的等待时间在0-1000中产生,因此每个用户提交试卷的等待时间可能不同。
优选地,判断所述提交试卷请求是否满足提交条件,包括:
判断正在提交试卷的用户数量是否大于或者等于最大可支持的用户数量;
若正在递交试卷的用户数量大于或者等于最大可支持的用户数量,则判定不满足提交条件,否则,判定满足提交条件。
因此,上述提交条件为正在提交试卷的用户数量小于最大可支持的用户数量,该最大可支持的用户数量通过预先计算得到,具体通过云端带宽、学校的网络带宽等计算得到,为本领域计算网络阻塞的常规计算方法,在此不作具体说明。
若正在递交试卷的用户数量大于或者等于最大可支持的用户数量,说明目前提交接口拥堵,继续提交试卷会进一步导致阻塞,因此不满足提交条件,反之则满足提交条件。
优选地,等待提交目标试卷的等待时间之后,包括:
重新查询正在提交的用户数量,并判断提交试卷请求是否满足提交条件;
若仍不满足提交条件,则再次等待提交目标试卷的等待时间后,重新查询正在提交的用户数据,并判断提交试卷请求是否满足提交条件,直至在预设时间内满足提交条件或等待总时长大于或等于预设时间为止;
若在预设时间内满足提交条件,则提交目标试卷;
若等待总时长大于或等于预设时间,则由客户端重新发起重新发起提交试卷请求。
上述预设时间可根据具体情况设置,在本实施例中的预设时间为5分钟。因此,在5分钟内可一直循环查询正在提交的用户数量,以与最大可支持用户数量进行比对,实现循环询问是否能递交试卷,直至等待总时长大于或者等于5分钟时仍未满足提交条件或某一次查询满足条件时,即该两个条件中任一个先满足,即停止循环。
若在5分钟之内的某一次查询到的正在提交的用户数量小于最大可支持用户数量,则执行提交目标试卷的操作。若每次循环查询正在提交的用户数量均不满足查询条件,且等待提交目标试卷的等待时间累积的等待总时长超过5分钟,则停止循环,重新由客户端发起提交试卷请求,重新执行本实施例的步骤S101-S103,否则继续循环。
优选地,提交目标试卷,包括:
上传目标试卷;
若上传目标试卷失败,则重新上传目标试卷,直至成功上传目标试卷或上传目标试卷的失败次数大于或等于预设次数为止;
若上传目标试卷的失败次数大于或等于预设次数,则由客户端重新发起重新发起提交试卷请求;
若成功上传目标试卷,则生成提交试卷成功的提示信息下发至客户端。
上述预设次数可根据具体情况设置,在本实施例中的预设次数为5次。因此,在满足条件后,即可以正常提交试卷后,开始上传目标试卷,若上传试卷失败且上传目标试卷的失败次数小于5次,则重新上传目标试卷,循环执行上传目标试卷的操作,直至上传目标试卷的失败次数大于或等于5次或成功上传目标试卷为止,即该两个条件中任一个先满足,则结束上传目标试卷的操作。
若成功上传目标试卷,则生成提交试卷成功的提示信息下发至客户端,并同时退出客户端的提交界面。
若每次重新上传目标试卷均失败且上传试卷失败的次数达到5次,则停止上传目标试卷的操作,重新由客户端发起提交试卷请求后,重新执行本实施例的步骤S101-S103。
优选地,上传目标试卷,包括:
通过文件传输协议上传目标试卷,即调用FTP服务器进行文件上传,实现将目标试卷上传至云端。
假设获取到提交试卷的等待时间为10s,预设时间(询问时长)为5分钟,预设次数(失败次数)为5次,本实施例的线上试卷提交方法在具体应用时,如图2所示,由用户在客户端点击上交按钮,以发起提交试卷请求,启动提交试卷请求;服务端接收到客户端发起的提交试卷请求后,通过请求接口查询正在提交的用户数量,以询问是否能上交,若不能,则等待10s 后,若询问时长低于5分钟,则再次询问是否能上交,若询问时长大于或等于5分钟,则在客户端提示用户重新点击上交;若能上交,则上传试卷,若上传成功,则结束;若上传识别,则重试,若连续失败次数大于或等于5 次,则在客户端提示用户重新点击上交。
实施例2
本实施例提供一种线上试卷提交装置,该装置用于实现上述实施例及优选实施例方式,已经进行过说明的不再赘述,如下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能实现并被构想的。
图3是本发明实施例的线上试卷提交装置的结构框图,如图3所示,该装置包括:
提交流程启动模块31,用于接收提交试卷请求;
等待时间获取模块32,用于获取提交目标试卷的等待时间;
提交校验模块33,用于查询正在提交试卷的用户数量,判断提交试卷请求是否满足提交条件;若不满足提交条件,则等待提交目标试卷的等待时间;
文件上传模块34,用于在满足提交条件时,则提交目标试卷。
提交校验模块33在判断当前提交试卷请求不满足提交条件时,将重新执行查询正在提交试卷的用户数量,判断提交试卷请求是否满足提交条件,直至满足停止校验的条件为止。
文件上传模块34在提交目标试卷时,若上传目标试卷失败,则重新上传目标试卷,直至达到满足停止上传的条件为止。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
实施例3
图4为本发明实施例的一种电子设备的结构示意图,如图4所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图4所示。该电子设备包括处理器、存储器、输入装置和输出装置;其中该电子设备中处理器的数量可以是一个或多个,图4中以一个处理器为例;电子设备中的处理器、存储器、输入装置和输出装置可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器作为一种计算机可读存储介质,可以包括高速随机存取存储器、非易失性存储器等,可用于存储操作系统、软件程序、计算机可执行程序和数据库,如本发明实施例1的线上试卷提交方法对应的程序指令/模块,还可以包括内存,可用于为操作系统和计算机程序提供运行环境。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。
处理器用于提供计算和控制能力,可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。处理器通过运行存储在存储器中的计算机可执行程序、软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现实施例1的线上试卷提交方法。
该电子设备的输出装置可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
该电子设备还可包括网络接口/通信接口,该电子设备的网络接口用于与外部的终端通过网络连接通信。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所述更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现实施例1的线上试卷提交方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
实施例4
本发明实施例提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于实现线上试卷提交方法,该方法包括:
接收提交试卷请求;
获取提交目标试卷的等待时间;
查询正在提交试卷的用户数量,判断提交试卷请求是否满足提交条件;若不满足提交条件,则等待提交目标试卷的等待时间;
在满足提交条件时,则提交目标试卷。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述实施例的线上试卷提交方法操作,还可以执行本发明任意实施例所提供的线上试卷提交方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器 (Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的线上试卷提交方法。
值得注意的是,上述线上试卷提交方法的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。