CN110275778A - 在线程序运行方法、装置、电子设备和计算机存储介质 - Google Patents
在线程序运行方法、装置、电子设备和计算机存储介质 Download PDFInfo
- Publication number
- CN110275778A CN110275778A CN201910517559.4A CN201910517559A CN110275778A CN 110275778 A CN110275778 A CN 110275778A CN 201910517559 A CN201910517559 A CN 201910517559A CN 110275778 A CN110275778 A CN 110275778A
- Authority
- CN
- China
- Prior art keywords
- application program
- computational resources
- available computational
- operation request
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例公开了在线程序运行方法、装置、电子设备和计算机存储介质,该方法包括:从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对至少两个应用程序运行请求进行排序;响应于应用程序存在可用计算资源的情况,获取可用计算资源的标识信息;将可用计算资源及其标识信息按照至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将分配结果发送至应用程序运行请求分别对应的终端;可用计算资源分别接收并运行应用程序运行请求分别对应的终端发送的待运行应用程序。如此,本公开实施例可以平衡各个代码运行请求的执行响应时间,使各个代码输入端得出较为平均且合理的响应时间。
Description
技术领域
本发明涉及在线编程领域,尤其涉及一种在线程序运行方法、装置、电子设备和计算机存储介质。
背景技术
随着人工智能技术的不断发展,机器学***台可以作为在线编程教育的一个重要的教学工具,例如,学生可以通过在线编程平台编写并运行实验代码。实施在线编程教育时,代码的运行需要大量的计算资源,如图形处理器(Graphics Processing Unit,GPU)资源,在计算资源有限的情况下,针对各个代码运行任务耗费大量的时间等待运算资源,效率较低。
发明内容
本公开实施例期望提供一种在线程序运行的方案。
本公开实施例提供了一种在线程序运行方法,所述方法包括:
从至少一个终端接收应用程序运行请求;
响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;
响应于应用程序存在可用计算资源的情况,获取所述可用计算资源的标识信息;
将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;
将所述分配结果发送至所述应用程序运行请求分别对应的终端;
所述可用计算资源分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,并运行所述待运行应用程序。
可选地,所述获取所述可用计算资源的标识信息,包括:
通过票据机制,接收所述可用计算资源发送的自身的标识信息。
可选地,所述通过票据机制,接收所述可用计算资源发送的自身的标识信息,包括:
向所述可用计算资源发送票据;接收所述可用计算资源发送的票据和标识信息;响应于接收到的票据与发送的票据不匹配的情况,忽略接收到的标识信息;响应于接收到的票据与发送的票据匹配的情况,确定接收到所述可用计算资源的标识信息。
可选地,所述方法还包括:响应于应用程序存在可用计算资源的情况,在所述排序结果中将存在可用计算资源的应用程序对应的应用程序运行请求删除。
可选地,所述对所述至少两个应用程序运行请求进行排序,包括:
采用先入先出策略或加权排序策略,对所述至少两个应用程序运行请求进行排序。
可选地,所述将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果,包括:
将可用计算资源根据所述至少两个应用程序运行请求的排序结果进行分配,得到所述应用程序运行请求与可用计算资源之间的关联关系。
可选地,所述方法还包括:
所述可用计算资源将所述待运行应用程序的运行信息反馈至对应的终端。
可选地,在从至少一个终端接收应用程序运行请求前,所述方法还包括:
与所述至少一个终端建立WebSocket连接。
可选地,所述可用计算资源在分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序前,所述方法还包括:
与所述至少一个终端建立WebSocket连接。
本公开实施例还提供了一种在线程序运行装置,所述装置包括排队服务模块和计算执行模块,其中,
所述排队服务模块,用于从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;响应于应用程序存在所述计算执行模块的可用计算资源的情况,获取所述可用计算资源的标识信息;将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端;
所述可用计算资源,用于分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,运行所述待运行应用程序。
可选地,所述排队服务模块,用于通过票据机制,接收所述可用计算资源发送的自身的标识信息。
可选地,所述排队服务模块,用于向所述可用计算资源发送票据;接收所述可用计算资源发送的票据和标识信息;响应于接收到的票据与发送的票据不匹配的情况,忽略接收到的标识信息;响应于接收到的票据与发送的票据匹配的情况,确定接收到所述可用计算资源的标识信息。
可选地,所述排队服务模块,还用于响应于应用程序存在可用计算资源的情况,在所述排序结果中将存在可用计算资源的应用程序对应的应用程序运行请求删除。
可选地,所述排队服务模块,用于采用先入先出策略或加权排序策略,对所述至少两个应用程序运行请求进行排序。
可选地,所述排队服务模块,用于将可用计算资源根据所述至少两个应用程序运行请求的排序结果进行分配,得到所述应用程序运行请求与可用计算资源之间的关联关系。
可选地,所述可用计算资源,用于将所述待运行应用程序的运行信息反馈至对应的终端。
可选地,所述排队服务节点还用于在从至少一个终端接收应用程序运行请求前,与所述至少一个终端建立WebSocket连接。
可选地,所述可用计算资源,还用于在分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序前,与所述至少一个终端建立WebSocket连接。
本公开实施例还提供了一种电子设备,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器用于运行所述计算机程序时,执行上述任意的一种在线程序运行方法。
本公开实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种在线程序运行方法。
本公开实施例中,从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;响应于应用程序存在可用计算资源的情况,获取所述可用计算资源的标识信息;将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端;所述可用计算资源分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,并运行所述待运行应用程序。如此,本公开实施例可以对应用程序运行请求进行排序,且在应用程序存在可用计算资源时,按照排序结果为应用程序分配计算资源,因而,可以平衡各个应用程序运行请求的执行响应时间,使各个终端得到较为平均且合理的响应时间,而不会出现某个终端的用户“等待时间过长”的不良用户体验;另外,由于在应用程序存在可用计算资源时,便运行应用程序,因而,可以更高效地利用所有的计算资源,实现计算资源的优化利用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1为本公开实施例的在线程序运行方法的应用场景示意图;
图2为本公开实施例的在线程序运行的流程图;
图3为本公开应用实施例的交互流程示意图;
图4为本公开实施例的在线程序运行装置的组成结构示意图;
图5为本公开实施例的电子设备的结构示意图。
具体实施方式
以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本公开,并不用于限定本公开。另外,以下所提供的实施例是用于实施本公开的部分实施例,而非提供实施本公开的全部实施例,在不冲突的情况下,本公开实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本公开实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
例如,本公开实施例提供的在线程序运行方法包含了一系列的步骤,但是本公开实施例提供的在线程序运行方法不限于所记载的步骤,同样地,本公开实施例提供的在线程序运行装置包括了一系列模块,但是本公开实施例提供的装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本公开实施例可以应用于终端和服务器组成的计算机***中,并可以与众多其它通用或专用计算***环境或配置一起操作。这里,终端可以是瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***,等等,服务器可以是服务器计算机***小型计算机***﹑大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
终端、服务器等电子设备可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
在本公开的一些实施例中,对于在线编程教育而言,服务器端具有多个计算执行节点时,常规的负载均衡方案是,将作业(代码运行任务)平均分发到各个计算执行节点,但由于代码(如人工智能代码或机器学习代码)的执行时间长短差异较大,从十几秒到几分钟均有可能;因而,如果采用常规负载均衡方案如轮询(polling)方案,有可能会导致长作业的堆积或计算执行节点的计算资源的闲置。进一步地,对于在线编程教育而言,通常采用纯后台作业执行模式,即运行程序代码的过程在后台实现,并不在前台进行展示;计算执行节点与前端应用(如在线编程教育应用)很难直接建立连接,因而,需要前端应用通过轮询的方式来获取程序代码运行信息,实时性较差,无法适应在线教育的用户交互特性;也就是说,计算执行节点无法实时将程序代码运行过程和结果反馈至前端应用,如此,不利于用户体会到程序代码运行过程(例如模型训练和推演的过程)。
针对上述技术问题,在本公开的一些实施例中,提出了一种在线程序运行方法,本公开实施例可以在人工智能教育、在线编程教育、在线编程平台、人工智能平台等场景实施。
图1为本公开实施例的在线程序运行方法的应用场景示意图,如图1所示,排队服务模块用于对应用程序运行请求进行排序,排队服务模块可以包括一个排队服务节点,也可以包括多个排队服务节点组成的排队服务节点集群。计算执行模块包括用于运行在线程序的计算资源,计算执行模块的计算资源可以是软件资源和/或硬件资源,例如,计算执行模块可以包括一个计算执行节点,也可以包括多个计算执行节点组成的排队服务节点集群,计算执行节点表示计算执行模块的硬件计算资源;计算执行模块的计算资源均存在标识信息,计算执行模块的计算资源的标识信息可以名称或其它标识信息。
至少一个终端、排队服务模块和计算执行模块可以两两进行数据交互,例如,至少一个终端可以通过WebSocket连接与排队服务模块进行数据交互,至少一个终端也可以通过WebSocket连接与计算执行模块进行数据交互。
可选地,排队服务模块和计算执行模块可以位于服务器侧。在实际应用中,在终端可以安装在线编程教育应用程序,以供用户输入相关的代码;终端可以在获取用户的提交代码后,向排队服务模块发送应用程序运行请求;排队服务模块可以对接收的应用程序请求进行排序,得到排序结果;计算执行模块可以运行程序代码;计算执行模块的状态可以是存在可用计算资源或不存在可用计算资源;计算执行模块可以通过排队获取计算资源,例如,可以对不同的计算执行节点进行排队,按照排队结果为不同的计算执行节点依次分配计算资源。
在实际应用中,排队服务模块和计算执行模块均可以基于服务器的处理器等设备实现,上述处理器为特定用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(DigitalSignal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。
第一实施例
下面以图1所示的应用场景为例,说明本公开实施例的在线程序运行方法。
图2为本公开实施例的在线程序运行方法的流程图,如图2所示,该流程可以包括:
步骤201:排队服务模块从至少一个终端接收应用程序运行请求。
在实际应用中,终端可以接收用户基于在线编程教育应用提交的代码,然后生成相应的应用程序运行请求,并将生成的应用程序运行请求发送到排队服务模块的至少一个排队服务节点。也就是说,当排队服务节点的数量大于1时,可以同时将生成的应用程序运行请求发送到多个排队服务节点。
作为一种实施方式,应用程序运行请求可以通过票据(Ticket)的形式呈现。
步骤202:排队服务模块响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果。
这里,在排队服务模块中,每个排队服务节点可以从多个终端接收应用程序运行请求,或者可以从一个终端接收多个应用程序运行请求。
本公开实施例中,上述应用程序运行请求的排序结果可以用于反映相应的应用程序的执行顺序,在上述排序结果中,应用程序运行请求越靠前,则说明相应的应用程序越需要被优先运行。
对于对上述至少两个应用程序运行请求进行排序的实现方式,在一个示例中,可以采用先入先出(First Input First Out,FIFO)策略,对上述至少两个应用程序运行请求进行排序,如此,可以确保按时间先后顺序运行应用程序,使得运行时间长度不一的程序运行过程,可以最大限度地遵循作业的先入先出原则;各个终端的用户会得到比较平均的响应速度,而不会出现程序运行等待过久的情况。
对于对上述至少两个应用程序运行请求进行排序的实现方式,在另一个示例中,可以采用加权排序策略,对上述至少两个应用程序运行请求进行排序;可选地,可以根据应用程序的预期执行时间、用户优先级等元数据来计算权重。采用加权排序策略,因而可以综合考虑多种因素,因而可以实现对应用程序运行请求排序的优化,可以表现出比FIFO策略更好的响应速度和用户体验。
在一个具体的示例中,加权排序策略可以是加权公开队列(Weighted FairQueuing,WFQ)策略、基于类别的加权公平队列(Class-Based Weighted Fair Queuing,CBWFQ)或其他加权排序策略。
进一步地,在每个排队服务节点在对至少应用程序运行请求进行排序后,如果再次接收到应用程序运行请求,还可以结合再次接收的应用程序运行请求,进行应用程序运行请求的排序。
步骤203:排队服务模块响应于应用程序存在可用计算资源的情况,获取所述可用计算资源的标识信息。
对于本步骤的实现方式,示例性地,当计算执行模块存在可用计算资源用于运行应用程序时,可以向排队服务模块发送可以可用计算资源的标识信息;在具体的示例中,可用计算资源的标识信息可以是计算执行模块中至少一个计算执行节点的标识信息,也可以是计算执行模块中至少一个软件计算资源的标识信息。
需要说明的是,当计算执行模块的状态为不存在可用计算资源时,可以继续等待,直到出现可用计算资源。
步骤204:排队服务模块将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端。
对于排队服务模块将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配的实现方式,示例性地,可以将可用计算资源根据上述排序结果进行分配,得到所述应用程序运行请求与可用计算资源之间的关联关系。这里,分配结果包括:所述应用程序运行请求与可用计算资源之间的关联关系。
本公开实施例中,排队服务节点可以根据可用计算资源的多少、以及排序结果中各个应用程序运行请求对应的应用程序所需使用计算资源,判断可用计算资源能够满足排序结果中能满足排序结果中多少个应用程序运行请求;当上述可用计算资源能够满足排序结果中排在最前的一个应用程序运行请求(能够运行对应的应用程序)时,排队服务节点可以为排序结果中排在最前的一个应用程序运行请求,直接分配可用计算资源及相应的标识信息,即,可以确定可用计算资源对应排序结果中排在最前的一个应用程序运行请求;然后,可以直接向排序结果中排在最前的一个应用程序运行请求对应的终端发送可用计算资源及相应的标识信息。
当n大于1,且上述可用计算资源能够满足排序结果中排在最前的n个应用程序运行请求(能够运行对应的应用程序)时,排队服务节点可以为排序结果中排在最前的n个应用程序运行请求,分别分配可用计算资源及相应的可用计算资源标识信息,即,可以确定排序结果中排在最前的n个应用程序运行请求分别对应的可用计算资源;然后,可以向排序结果中排在最前的n个应用程序运行请求对应的终端分别发送可用计算资源及相应的可用计算资源标识信息。
可以看出,本公开实施例中,可以根据可用计算资源及排序结果灵活地为应用程序运行请求分配可用计算资源,进而,可以提高可用计算资源的利用率。
步骤205:可用计算资源分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,并运行所述待运行应用程序。
本公开实施例中,当应用程序运行请求分别对应的终端接收到可用计算资源及相应的标识信息时,可以根据接收的标识信息与相应的可用计算资源建立连接;然后可以根据建立的连接,将待运行应用程序发送至相应的可用计算资源。可见,通过终端与可用计算资源的直接交互,便可以使可用计算资源获取到带运行应用程序,因而,提高了应用程序的代码执行效率。
本公开实施例的在线程序运行方法,从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;响应于应用程序存在可用计算资源的情况,获取所述可用计算资源的标识信息;将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端;所述可用计算资源分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,并运行所述待运行应用程序。如此,本公开实施例可以对应用程序运行请求进行排序,且在应用程序存在可用计算资源时,按照排序结果为应用程序分配计算资源,因而,可以平衡各个应用程序运行请求的执行响应时间,使各个终端得到较为平均且合理的响应时间,而不会出现某个终端的用户“等待时间过长”的不良用户体验;另外,由于在应用程序存在可用计算资源时,便运行应用程序,因而,可以更高效地利用所有的计算资源,实现计算资源的优化利用。
另外,在本公开实施例中,首先进行各个应用程序运行请求的调度,各个应用程序运行请求的调度主要是基于排队服务模块的排序结果实现的,然后,实现程序运行,而程序的运行可以通过终端与计算执行模块的直接交互实现的;因而,本公开实施例可以分两阶段依次实现应用程序运行请求的调度和程序的运行,可以兼顾程序运行的公平性和实时性;应用程序运行请求的调度和程序的运行是相对独立的两个过程,在对排序策略进行优化和调整时,不影响到程序的运行过程。
作为一种实施方式,当计算执行模块出现可以运行应用程序的可用计算资源时,计算执行模块可以通过票据机制,向排队服务模块可用计算资源的标识信息。
在一个具体的示例中,在每个排队服务节点中,每个应用程序运行请求通过票据呈现时,每个应用程序运行请求对应的票据可以携带本排队服务节点的标识信息;当出现上述可用计算资源时,可以向任意一个排队服务节点发送读取指令,所述读取指令用于指示读取票据;然后,排队服务节点接收到读取指令时,可以将票据发送到可用计算资源;可用计算资源可以将票据和自身的标识信息发送到每个排队服务节点。
在实际应用中,可用计算资源可以通过广播的方式向每个排队服务节点发送票据和自身的标识信息。
可选地,每个排队服务节点可以判断接收的票据是否与自身匹配(即判断接收到的票据是否为本排队服务节点发送的票据),在接收到的票据与自身匹配时,可以将接收到的标识信息发送到对应的终端;在接收到的票据与自身不匹配时,可以忽略接收到的标识信息。
对于每个排队服务节点判断接收的票据是否与自身匹配的实现方式,示例性地,在每个排队服务节点中,可以判断接收到的新票据中是否包括本排队服务节点的标识信息,进而确定接收的新票据是否与自身匹配。
可以看出,通过票据机制,只需要一个排队服务节点向终端发送可用计算资源的标识信息,即,无需多个排队服务节点与终端进行交互,因而,提高了排队服务节点与终端的交互效率。
作为一种实施方式,在每个排队服务节点中,当计算执行模块出现可用计算资源时,可以在上述排序结果中将存在可用计算资源的应用程序对应的应用程序运行请求删除;在具体实现时,可用计算资源将票据和自身的标识信息发送到每个排队服务节点后,每个排队服务节点可以在上述排序结果中将对应的应用程序运行请求删除,这样,可以得到新的排序结果,后续再出现可用计算资源时,便可以重新针对新的排序结果进行相应处理。
作为一种实施方式,可用计算资源运行待运行应用程序后,可以将待运行应用程序的运行信息反馈至对应的终端;这里,待运行应用程序的运行信息可以是待运行应用程序的运行过程和/或运行结果。
终端安装有在线编程教育应用时,可以在前端的在线编程教育应用的界面展示待运行应用程序的运行信息。
可以看出,本公开实施例可以解决应用程序运行过程无法反馈至前端的问题,通过将应用程序的运行信息实时地反馈到终端,例如,可以将应用程序的运行信息反馈到前端应用中;进而,可以使用户实时地查看应用程序的运行信息。
第二实施例
在本公开第一实施例的基础上,进行进一步的举例说明。
下面通过一个具体的应用实施例对本公开进行进一步说明。
图3为本公开应用实施例的交互流程示意图,如图3所示,在服务端集群中可以设置多个排队服务节点,在计算执行节点集群中可以设置多个计算执行节点;用户可以基于浏览器的在线编程教育应用提交编写的人工智能或机器学习代码。
参照图3,本公开应用实施例的流程可以包括:
基于浏览器的在线编程教育应用在接收到用于提交的程序代码后,可以与服务端集群中的各排队服务节点建立WebSocket连接,并提交一个应用程序运行请求的Ticket到各排队服务节点;在每个排队服务节点中可以对接收到的多个应用程序运行请求进行排序,对应用程序运行请求的排序的实现方式已经在前述实施例中作出说明,这里不再赘述。
当计算执行节点集群中的任意一个代码运行节点为可用计算资源时,可以从任意一个排队服务节点读取Ticket,并将Ticket和自身的身份标识(Identity,ID)通过广播的方式发送到各个排队服务节点,在实际实施时,可以通过消息队列(Message Queue,MQ)广播的方式向各个排队服务节点发送Ticket和本节点的ID。
每个排队服务节点在接收到广播消息后,可以针对与自身匹配的消息进行处理,具体地说,可以根据排序结果中处于最前的应用程序运行请求,将计算执行节点的ID发送到相应的前端应用(即基于浏览器的在线编程教育应用)。
基于浏览器的在线编程教育应用可以根据接收到的计算执行节点的ID,与相应的计算执行节点直接建立WebSocket连接,并通过该WebSocket连接向计算执行节点提交程序代码。
计算执行节点开始运行程序代码,计算执行节点可以将程序代码的运行信息通过WebSocket连接推送到基于浏览器的在线编程教育应用中。
可以看出,在本公开应用实施例中,针对在线编程教育应用平台中所有待运行的代码,可以进行应用程序运行请求的排序,得到排队队列;在计算执行节点集群中,只要出现作为可用计算资源的计算执行节点,就会基于排队队列,从基于浏览器的在线编程教育应用接收并运行相应的程序代码;并可以通过WebSocket连接直接将程序代码运行信息实时地反馈到前端应用中。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定
第三实施例
在前述实施例提出的在线程序运行方法的基础上,本公开实施例提出了一种在线程序运行装置。
图4为本公开实施例的在线程序运行装置的组成结构示意图,如图4所示,所述装置包括排队服务模块401和计算执行模块402,其中,
所述排队服务模块401,用于从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;响应于应用程序存在所述计算执行模块的可用计算资源的情况,获取所述可用计算资源的标识信息;将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端;
所述可用计算资源,用于分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,运行所述待运行应用程序。
本公开实施例中,当应用程序运行请求分别对应的终端接收到可用计算资源及相应的标识信息时,可以根据接收的标识信息与相应的可用计算资源建立连接;然后可以根据建立的连接,将待运行应用程序发送至相应的可用计算资源。可见,通过终端与可用计算资源的直接交互,便可以使可用计算资源获取到带运行应用程序,因而,提高了应用程序的代码执行效率。
本公开实施例可以对应用程序运行请求进行排序,且在应用程序存在可用计算资源时,按照排序结果为应用程序分配计算资源,因而,可以平衡各个应用程序运行请求的执行响应时间,使各个终端得到较为平均且合理的响应时间,而不会出现某个终端的用户“等待时间过长”的不良用户体验;另外,由于在应用程序存在可用计算资源时,便运行应用程序,因而,可以更高效地利用所有的计算资源,实现计算资源的优化利用。
另外,在本公开实施例中,首先进行各个应用程序运行请求的调度,各个应用程序运行请求的调度主要是基于排队服务模块的排序结果实现的,然后,实现程序运行,而程序的运行可以通过终端与计算执行模块的直接交互实现的;因而,本公开实施例可以分两阶段依次实现应用程序运行请求的调度和程序的运行,可以兼顾程序运行的公平性和实时性;应用程序运行请求的调度和程序的运行是相对独立的两个过程,在对排序策略进行优化和调整时,不影响到程序的运行过程。
在一实施方式中,所述排队服务模块401,用于通过票据机制,接收所述可用计算资源发送的自身的标识信息。
在一实施方式中,所述排队服务模块401,用于向所述可用计算资源发送票据;接收所述可用计算资源发送的票据和标识信息;响应于接收到的票据与发送的票据不匹配的情况,忽略接收到的标识信息;响应于接收到的票据与发送的票据匹配的情况,确定接收到所述可用计算资源的标识信息。
可以看出,通过票据机制,只需要一个排队服务模块向终端发送可用计算资源的标识信息,即,无需多个排队服务模块与终端进行交互,因而,提高了排队服务节点与终端的交互效率。
在一实施方式中,所述排队服务模块401,还用于响应于应用程序存在可用计算资源的情况,在所述排序结果中将存在可用计算资源的应用程序对应的应用程序运行请求删除。在具体实现时,可用计算资源将票据和自身的标识信息发送到排队服务模块后,排队服务模块可以在上述排序结果中将对应的应用程序运行请求删除,这样,可以得到新的排序结果,后续再出现可用计算资源时,便可以重新针对新的排序结果进行相应处理。
在一实施方式中,所述排队服务模块401,用于采用先入先出策略或加权排序策略,对所述至少两个应用程序运行请求进行排序。
当采用先入先出策略,对上述至少两个应用程序运行请求进行排序时,可以确保按时间先后顺序运行应用程序,使得运行时间长度不一的程序运行过程,可以最大限度地遵循作业的先入先出原则;各个终端的用户会得到比较平均的响应速度,而不会出现程序运行等待过久的情况。
当采用加权排序策略,对上述至少两个应用程序运行请求进行排序时;可以根据应用程序的预期执行时间、用户优先级等元数据来计算权重。采用加权排序策略,因而可以综合考虑多种因素,因而可以实现对应用程序运行请求排序的优化,可以表现出比FIFO策略更好的响应速度和用户体验。
在一实施方式中,所述排队服务模块401,用于将可用计算资源根据所述至少两个应用程序运行请求的排序结果进行分配,得到所述应用程序运行请求与可用计算资源之间的关联关系。
可以看出,本公开实施例中,可以根据可用计算资源及排序结果灵活地为应用程序运行请求分配可用计算资源,进而,可以提高可用计算资源的利用率。
在一实施方式中,所述可用计算资源,用于将所述待运行应用程序的运行信息反馈至对应的终端。
可以看出,本公开实施例可以解决应用程序运行过程无法反馈至前端的问题,通过将应用程序的运行信息实时地反馈到终端,例如,可以将应用程序的运行信息反馈到前端应用中;进而,可以使用户实时地查看应用程序的运行信息。
在一实施方式中,所述排队服务模块还用于在从至少一个终端接收应用程序运行请求前,与所述至少一个终端建立WebSocket连接。
可见,通过终端与排队服务模块建立WebSocket连接,便于实现终端与排队服务模块的数据交互。
在一实施方式中,所述可用计算资源,还用于在分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序前,与所述至少一个终端建立WebSocket连接。
可见,通过终端与可用计算资源建立WebSocket连接,便于实现终端与可用计算资源的数据交互。
上述排队服务模块401和计算执行模块402均可由位于服务器端的处理器实现,上述处理器为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种在线程序运行方法对应的计算机程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种在线程序运行方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种在线程序运行方法。
基于前述实施例相同的技术构思,参见图5,其示出了本公开实施例提供的一种电子设备50,可以包括:存储器51和处理器52;其中,
所述存储器51,用于存储计算机程序和数据;
所述处理器52,用于执行所述第一存储器中存储的计算机程序,以实现前述实施例的任意一种在线程序运行方法。
在实际应用中,上述存储器51可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM,快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器52提供指令和数据。
上述处理器52可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本公开实施例不作具体限定。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述
本申请所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
上面结合附图对本公开的实施例进行了描述,但是本公开并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本公开的启示下,在不脱离本公开宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本公开的保护之内。
Claims (10)
1.一种在线程序运行方法,其特征在于,所述方法包括:
从至少一个终端接收应用程序运行请求;
响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;
响应于应用程序存在可用计算资源的情况,获取所述可用计算资源的标识信息;
将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;
将所述分配结果发送至所述应用程序运行请求分别对应的终端;
所述可用计算资源分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,并运行所述待运行应用程序。
2.根据权利要求1所述的方法,其特征在于,所述获取所述可用计算资源的标识信息,包括:
通过票据机制,接收所述可用计算资源发送的自身的标识信息。
3.根据权利要求2所述的方法,其特征在于,所述通过票据机制,接收所述可用计算资源发送的自身的标识信息,包括:
向所述可用计算资源发送票据;
接收所述可用计算资源发送的票据和标识信息;
响应于接收到的票据与发送的票据不匹配的情况,忽略接收到的标识信息;
响应于接收到的票据与发送的票据匹配的情况,确定接收到所述可用计算资源的标识信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于应用程序存在可用计算资源的情况,在所述排序结果中将存在可用计算资源的应用程序对应的应用程序运行请求删除。
5.根据权利要求1所述的方法,其特征在于,所述对所述至少两个应用程序运行请求进行排序,包括:
采用先入先出策略或加权排序策略,对所述至少两个应用程序运行请求进行排序。
6.根据权利要求1所述的方法,其特征在于,所述将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果,包括:
将可用计算资源根据所述至少两个应用程序运行请求的排序结果进行分配,得到所述应用程序运行请求与可用计算资源之间的关联关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述可用计算资源将所述待运行应用程序的运行信息反馈至对应的终端。
8.一种在线程序运行装置,其特征在于,所述装置包括排队服务模块和计算执行模块,其中,
所述排队服务模块,用于从至少一个终端接收应用程序运行请求;响应于接收到至少两个应用程序运行请求的情况,对所述至少两个应用程序运行请求进行排序,得到所述至少两个应用程序运行请求的排序结果;响应于应用程序存在所述计算执行模块的可用计算资源的情况,获取所述可用计算资源的标识信息;将所述可用计算资源及其标识信息按照所述至少两个应用程序运行请求的排序结果进行分配,得到分配结果;将所述分配结果发送至所述应用程序运行请求分别对应的终端;
所述可用计算资源,用于分别接收所述应用程序运行请求分别对应的终端发送的待运行应用程序,运行所述待运行应用程序。
9.一种电子设备,其特征在于,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述的方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517559.4A CN110275778B (zh) | 2019-06-14 | 2019-06-14 | 在线程序运行方法、装置、电子设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910517559.4A CN110275778B (zh) | 2019-06-14 | 2019-06-14 | 在线程序运行方法、装置、电子设备和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110275778A true CN110275778A (zh) | 2019-09-24 |
CN110275778B CN110275778B (zh) | 2021-07-27 |
Family
ID=67962225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910517559.4A Active CN110275778B (zh) | 2019-06-14 | 2019-06-14 | 在线程序运行方法、装置、电子设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110275778B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427551A (zh) * | 2020-02-14 | 2020-07-17 | 深圳市商汤科技有限公司 | 编程平台的用户代码运行方法及平台、设备、存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040059711A1 (en) * | 2000-10-27 | 2004-03-25 | Magnus Jandel | Configuration of a flexible infrastructure |
CN101968750A (zh) * | 2010-10-15 | 2011-02-09 | 珠海举天软件科技有限公司 | 计算机***及其工作方法 |
CN103491151A (zh) * | 2013-09-13 | 2014-01-01 | 中安消技术有限公司 | 一种云计算资源的调度方法、装置及云计算平台 |
CN105607896A (zh) * | 2015-09-25 | 2016-05-25 | 中国铁路总公司 | 应用程序的开发方法和*** |
CN105988874A (zh) * | 2015-02-10 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 资源处理方法及装置 |
CN107533633A (zh) * | 2015-04-21 | 2018-01-02 | 微软技术许可有限责任公司 | 利用学习程序用于数据操纵 |
CN107977268A (zh) * | 2017-10-13 | 2018-05-01 | 北京百度网讯科技有限公司 | 人工智能的异构硬件的任务调度方法、装置及可读介质 |
CN109783256A (zh) * | 2019-01-10 | 2019-05-21 | 上海商汤智能科技有限公司 | 人工智能教学***及方法、电子设备、存储介质 |
-
2019
- 2019-06-14 CN CN201910517559.4A patent/CN110275778B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040059711A1 (en) * | 2000-10-27 | 2004-03-25 | Magnus Jandel | Configuration of a flexible infrastructure |
CN101968750A (zh) * | 2010-10-15 | 2011-02-09 | 珠海举天软件科技有限公司 | 计算机***及其工作方法 |
CN103491151A (zh) * | 2013-09-13 | 2014-01-01 | 中安消技术有限公司 | 一种云计算资源的调度方法、装置及云计算平台 |
CN105988874A (zh) * | 2015-02-10 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 资源处理方法及装置 |
CN107533633A (zh) * | 2015-04-21 | 2018-01-02 | 微软技术许可有限责任公司 | 利用学习程序用于数据操纵 |
CN105607896A (zh) * | 2015-09-25 | 2016-05-25 | 中国铁路总公司 | 应用程序的开发方法和*** |
CN107977268A (zh) * | 2017-10-13 | 2018-05-01 | 北京百度网讯科技有限公司 | 人工智能的异构硬件的任务调度方法、装置及可读介质 |
CN109783256A (zh) * | 2019-01-10 | 2019-05-21 | 上海商汤智能科技有限公司 | 人工智能教学***及方法、电子设备、存储介质 |
Non-Patent Citations (2)
Title |
---|
秦科等: "《网络安全协议》", 31 March 2008 * |
马宁: "《云关键技术》", 31 July 2017 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427551A (zh) * | 2020-02-14 | 2020-07-17 | 深圳市商汤科技有限公司 | 编程平台的用户代码运行方法及平台、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110275778B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112995023B (zh) | 一种多接入边缘计算网络计算卸载***及其计算卸载方法 | |
Yuan et al. | CSEdge: Enabling collaborative edge storage for multi-access edge computing based on blockchain | |
Kliazovich et al. | CA-DAG: Modeling communication-aware applications for scheduling in cloud computing | |
CN104168318A (zh) | 一种资源服务***及其资源分配方法 | |
CN110032447A (zh) | 用于分配资源的方法和装置 | |
CN107590001A (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
CN108182111A (zh) | 任务调度***、方法和装置 | |
CN107295110A (zh) | 计算任务的处理方法、边缘节点、业务服务器及*** | |
CN103927229A (zh) | 在动态可用服务器集群中调度映射化简作业 | |
CN109309726A (zh) | 基于海量数据的文件生成方法及*** | |
CN113222175B (zh) | 信息处理方法及*** | |
CN107247629A (zh) | 云计算***及用于控制服务器的云计算方法和装置 | |
CN113157418A (zh) | 服务器资源分配方法和装置、存储介质及电子设备 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN110278254A (zh) | 用于FogCDN场景的调度方法及调度端 | |
CN109508326A (zh) | 用于处理数据的方法、装置和*** | |
CN113342838B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN110275778A (zh) | 在线程序运行方法、装置、电子设备和计算机存储介质 | |
CN109885400A (zh) | 用于发送指令的方法和装置 | |
CN111222885B (zh) | 数据处理请求背书方法、装置、计算机设备及存储介质 | |
CN108228355A (zh) | 任务处理方法及装置、任务调度方法及装置 | |
CN112995167A (zh) | 基于Kafka机制的用电信息采集方法、区块链网络及用户端 | |
CN109688421A (zh) | 请求消息处理方法、装置及***、服务器、存储介质 | |
CN116166421A (zh) | 分布式训练任务的资源调度方法及其设备 | |
CN113645324B (zh) | 一种基于队列的ip分配方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |