基于分布式系统的任务处理方法、装置和系统与流程

文档序号:11386258阅读:278来源:国知局
基于分布式系统的任务处理方法、装置和系统与流程

本发明涉及分布式系统领域,具体而言,涉及一种基于分布式系统的任务处理方法、装置和系统。



背景技术:

随着微处理机技术的发展,分布式系统可以潜在地得到比单个大型集中式系统更好的性价比,可以通过较低廉的价格实现相似的功能,因此,分布式系统成为越来越普遍使用的系统架构。

但是,现有技术中的分布式执行系统是在特定应用环境中设计的分布式执行系统,其架构如图1所示,系统架构分为层:资源管理层和任务执行层,其中资源管理层作为整个系统的中控设备,可以称之为driver,负责对任务的分配、资源的分配、客户端的api接口等功能;任务执行层的任务处理设备可以实现具体的任务执行逻辑,称之为node,每个node部署在一台机器上(gateway),node是可水平扩展。任务的执行流程图如图1所示:

客户端通过driver提供的http接口提交执行任务;driver基于内部的资源管理模型,将任务分发到指定的node上;node读取到分配到node上的任务;node获取到任务后,将任务信息注册到内存中;启动任务执行进程,提交到计算引擎执行;保存任务执行日志以及进程pid到本地;任务执行的状态(执行中、执行完毕),将任务信息反馈到driver;driver在将任务状态回调给客户端。

通过上述流程可以发现,上述系统中至少存在如下三个问题:

1、如果driver与其中某些node网络不通,则driver发起的任务信息将无法成功发给node,也无法获知哪些任务信息没有发送成功;

2、如果任务处理设备处于特殊的应用环境,例如在任务处理设备node进行升级的过程中,或者进入中断状态下,由于需要重启设备,因此重启过程中会导致任务信息无法执行等问题;

3、若存在driver重复发了多次任务到一台node上,node存在重复执行相同的 任务信息的问题,导致资源浪费。

针对现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种基于分布式系统的任务处理方法、装置和系统,以至少解决现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

根据本发明实施例的一个方面,提供了一种基于分布式系统的任务处理方法,包括:任务处理设备通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

根据本发明实施例的另一方面,还提供了一种基于分布式系统的任务处理装置,包括:第一获取模块,用于任务处理设备通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;第一执行模块,用于任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;第一保存模块,用于任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

根据本发明实施例的另一方面,还提供了一种基于分布式系统的任务处理系统,包括:主控设备,用于存储任务信息;任务处理设备,与主控设备进行通讯,用于通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;任务处理设备还用于任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;任务处理设备还用于通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

在本发明实施例中,任务处理设备通过发起任务请求从主控设备中获取主控设备中保存的任务信息,任务处理设备的主进程接收到任务信息之后,通过触发代理进程 启动对应的任务子进程来执行任务信息,任务处理设备通过代理进程将任务执行信息保存至目标位置。

容易注意到,由于任务处理设备中主进程和任务子进程通过代理进程进行隔离,使得主进程停止或者被重启,代理进程及任务子进程都不感知,可以正常执行任务信息,从而实现正在执行的进程在主进程启动过程中不受影响。并且由于任务处理设备主动向主控设备获取任务信息,即任务处理设备单向主控设备访问,因此通过改变http方式,利用数据库同步存储数据,从而实现任务处理设备、主控设备不在同一个网段环境下分布式系统的部署问题。能够支持百万级的任务执行,并且通过http的方式,可以随时部署node,大大提升了系统的环境适应能力和可扩展能力。

由此,本发明提供的实施例解决了现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据现有技术的一种分布式执行系统的任务处理的流程图;

图2是根据本申请实施例的一种基于分布式系统的任务处理方法的计算机终端的硬件结构框图;

图3是根据本申请实施例的一种基于分布式系统的任务处理方法的流程图;

图4是根据本申请实施例的一种分布式执行系统的结构示意图;

图5是根据本申请实施例的一种可选的任务处理设备的示意图;

图6是根据本申请实施例的一种可选的任务处理设备执行任务的流程图;

图7是根据本申请实施例的一种可选的任务处理设备重启后恢复任务信息的流程图;

图8是根据本申请实施例的基于分布式系统的任务处理方法的交互图;

图9是根据本申请实施例的基于分布式系统的任务处理装置的示意图;

图10是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图11是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图12是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图13是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图14是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图15是根据本申请实施例的可选的基于分布式系统的任务处理装置的示意图;

图16是根据本申请实施例的基于分布式系统的任务处理系统的示意图;以及

图17是根据本申请实施例的一种计算机终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:

分布式系统:distributedsystem,是建立在网络上的软件系统,具有高度的内聚性和透明性。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。

driver:主控设备,分布式执行系统中的服务层(中控),负责资源管理。

node:任务处理设备,分布式执行系统中的集群的机器节点,也称之为gateway,具体负责任务的执行。

pid:任务进程编号,启动代理进程时进行保存。

实施例1

根据本申请实施例,还提供了一种基于分布式系统的任务处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图2是根据本申请实施例的一种基于分布式系统的任务处理方法的计算机终端的硬件结构框图。如图2所示,计算机终端20可以包括一个或多个(图中仅示出一个)处理器202(处理器202可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器204、以及用于通信功能的传输模块206。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。

存储器204可用于存储应用软件的软件程序以及模块,如本申请实施例中的基于分布式系统的任务处理方法对应的程序指令/模块,处理器202通过运行存储在存储器204内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于分布式系统的任务处理方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端20的通信供应商提供的无线网络。在一个实例中,传输装置206包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置206可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,本申请提供了如图3所示的基于分布式系统的任务处理方法。图3是根据本申请实施例的一种基于分布式系统的任务处理方法的流程图,如图3所示的方法可以包括如下步骤s301至步骤s305:

步骤s301,任务处理设备通过发起任务请求从主控设备中获取任务信息,其中, 在主控设备中保存任务请求对应的任务信息。

可选地,上述任务处理设备可以是部署在分布式系统中的集群的机器节点node,上述任务请求可以是http请求,上述主控设备可以是driver,主控设备的数据库中保存有任务处理设备需要的任务信息。

需要说明的是,分布式系统中任务都在资源管理层driver层做分发,driver管理node、任务。每台node上正在执行的任务列表都存储在driver的db中,存储周期为任务生命周期。

图4是根据本申请实施例的一种分布式执行系统的结构示意图,如图4所示,在一种可选的方案中,任务处理设备主动发送http请求给主控设备,主控设备接收到http请求之后,提取http请求对应的任务信息,通过接口将该任务信息发送给任务处理设备。

步骤s303,任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息。

可选地,上述代理进程可以是代理脚本,代理脚本可以作为主进程与任务子进程的通道。

图5是根据本申请实施例的一种可选的任务处理设备的示意图,如图5所示,任务处理设备node中的主进程(alisanode)与任务子进程隔离,代理进程(python进程)关联任务子进程,并且读写日志。图6是根据本申请实施例的一种可选的任务处理设备执行任务的流程图,结合图5和图6可知,在一种可选的方案中,node从driver中获取到任务之后,启动代理进程,传入任务执行需要的参数,代理进程启动具体的任务子进程执行任务信息。

步骤s305,任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选地,上述目标位置可以是代理进程的本地文件,路径可以是任务执行路径,上述任务信息的任务标识可以是任务id,上述任务子进程的进程信息可以是任务子进程的进程号pid。

需要说明的是,上述任务子进程执行任务信息所生成的日志信息为完整的日志信息,是指日志动作与任务处理设备重启不相关,并且只要代理进程存在,日志就可以正常读写。

如图6所示,在一种可选的方案中,任务子进程将所有的日志信息通过流方式返回给代理服务器,代理进程将接收到的日志信息、子进程的进程号、任务信息标号和退出码保存到本地文件中。

本申请上述实施例一公开的方案中,任务处理设备通过发起任务请求从主控设备中获取主控设备中保存的任务信息,任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息,任务处理设备通过代理进程将任务执行信息保存至目标位置。

容易注意到,由于任务处理设备中主进程和任务子进程通过代理进程进行隔离,使得主进程停止或者被重启,代理进程及任务子进程都不感知,可以正常执行任务信息,从而实现正在执行的进程在主进程启动过程中不受影响。并且由于任务处理设备主动向主控设备获取任务信息,即任务处理设备单向主控设备访问,因此通过改变http方式,利用数据库同步存储数据,从而实现任务处理设备、主控设备不在同一个网段环境下分布式系统的部署问题。能够支持百万级的任务执行,并且通过http的方式,可以随时部署node,大大提升了系统的环境适应能力和可扩展能力。

由此,本申请提供的上述实施例一的方案解决了现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

在本申请上述实施例中,在步骤s303主进程接收到任务信息之后,上述方法还包括如下步骤s307:

步骤s307,如果主进程被重启,则通过代理进程离线启动任务子进程来执行任务信息,并离线保存任务执行信息。

在一种可选的方案中,如果node主进程被重启,代理进程离线启动任务子进程执行任务信息,并将任务子进程发送的任务执行信息通过离线存储方式储存在本地文件中。

通过上述步骤s307,主进程被重启,代理进程通过离线存储任务子进程的任务执行信息的方式保护任务状态,从而实现任务处理设备热重启不影响任务执行、不丢失日志信息的目的。

在本申请上述实施例中,在步骤s307主进程被重启之后,上述方法还包括如下步骤s311至步骤s313:

步骤s311,任务处理设备通过访问主控设备,来获取当前正在执行的至少一个任 务信息,任务信息包括:任务标识和任务执行路径。

可选地,上述任务执行路径可以是全局唯一的关键路径,这个路径可以维持整个任务的生命周期,任务执行路径的生成方式为:客户端名称+日期+随机数+任务编号。

图7是根据本申请实施例的一种可选的任务处理设备重启后恢复任务信息的流程图,如图7所示,在一种可选的方案中,node上保留任务信息都在内存中,node重启后任务信息丢失。但是任务子进程与node主进程分离,node重启,任务正常执行。待node恢复后,调用恢复(recover)接口,获取driver中找到当前正在执行的任务列表(即上述的当前正在执行的至少一个任务信息),每个任务包含有任务编号和任务执行路径。

步骤s313,任务处理设备通过检测在目标位置中记录的任务执行信息,来确定在主进程被重启时至少一个任务信息中已经被执行或未被执行的任务。

可选地,通过查询该任务执行路径下的日志文件,可以得到日志信息接口;通过查询该任务执行路径下的任务子进程文件,可以得到该任务信息是否已经被任务子进程执行;通过查询该任务执行路径下的退出码文件,可以得到该任务信息是否已经被任务子进程执行结束。

如图7所示,在一种可选的方案中,任务处理设备对每个任务基于任务执行路径长训是否存在对应的子进程的进程号,如果存在对应的子进程的进程号,则说明该任务已经被执行;如果不存在对应的子进程的进程号,则说明该任务为被执行。

通过上述步骤s311至步骤s313,任务处理设备主进程被重启后,从主控设备中获取当前正在执行的至少一个任务信息,并检测在目标位置中记录的任务执行信息,确定至少一个任务信息是否已经被执行或未被执行,从而实现主进程重启后,任务子进程执行任务信息的一致性。

在本申请上述实施例中,步骤s313任务处理设备通过检测在目标位置中记录的任务执行信息,来确定至少一个任务信息中已经被执行或未被执行的任务,包括如下步骤s3133至步骤s3135:

步骤s3131,任务处理设备在目标位置进行本地查询,确定是否已经存在与至少一个任务信息中任意一个任务标识相匹配的进程信息。

可选地,上述进程信息可以是子进程的进程号,每一个任务子进程在启动执行任务信息时,都会将自己的进程号对应的存放在该任务信息中。

在一种可选的方案中,任务处理设基于任务执行路径进行查询,根据任务标识确 定至少一个任务信息中任意一个任务标识是否存在对应的子进程的进程号。

步骤s3133,如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程启动执行,任务处理设备仅在内存中注册该任务信息。

如图7所示,在一种可选的方案中,如果存在子进程的进程号,说明该任务信息已经被相应的任务子进程启动执行,则任务处理设备重新恢复任务信息(即上述的在内存中注册该任务信息),并读取该任务的任务进程信息(即上述的任务执行信息)。

步骤s3135,如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程所执行,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程执行任务信息。

如图7所示,在一种可选的方案中,如果不存在子进程的进程号,说明该任务信息未被相应的任务子进程执行,则任务处理设备在内存中保存该任务信息,通过启动代理进程来启动相应的任务子进程执行任务信息。

通过上述步骤s3133至步骤s3135,任务处理设备从在目标位置进行本地查询,确定是否存在相应的子进程的进程号,如果存在则重新记录任务信息;如果不存在,则通过代理进程启动任务子进程执行任务信息,从而实现主进程重启后,任务子进程执行任务信息的一致性。

在本申请上述实施例中,在步骤s3133任务处理设备仅在内存中注册该任务信息之前,上述方法还包括如下步骤s317至步骤s319:

步骤s315,任务处理设备在目标位置进行本地查询,确定是否已经存在与已经被对应的任务子进程启动执行的任务信息相匹配的退出码。

可选地,上述退出码(returncode)用于表征该任务信息已经执行结束。

步骤s317,如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程执行结束,任务处理设备终止在内存中注册该任务信息,直接将对应的任务日志反馈给主控设备。

步骤s319,如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程执行完毕,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程重新执行任务信息。

在一种可选的方案中,如果任务处理设备确定存在对应的子进程的进程号,则判断是否存在任务信息对应的退出码,如果存在,则说明该任务信息已经被执行完毕, 那么就不需要在内存中注册该任务信息,直接将相应的任务日志反馈给主控设备;如果不存在,则说明该任务未被执行完毕,需要通过代理进程启动相应的任务子进程重新执行该任务信息。

通过上述步骤s317至步骤s319,任务处理设备在目标位置进行本地查询,确定是否已经存在对应的退出码,如果存在则反馈任务日志,如果不存在则启动相应的任务子进程重新执行该任务信息,从而实现主进程重启后,恢复正在执行的任务信息,保证了任务信息的状态。

在本申请上述实施例中,在步骤s301任务处理设备通过发起任务请求从主控设备中获取任务信息之后,上述方法还包括如下步骤s321至步骤s323:

步骤s321,从任务信息中提取路径参数,并根据路径参数生成任务执行路径。

在一种可选的方案中,任务处理设备在获取到任务信息时,会从任务信息中获取到一条路径参数,任务处理设备将该参数作为当前的任务执行路径,任务的执行日志、进程号、退出码都保存在该路径下。

步骤s323,代理进程根据任务执行路径将任务标识保存至目标位置。

在一种可选的方案中,任务子进程在执行启动时会将当前子进程的进程号保存到本地文件中,保存的路径为任务执行路径。

通过上述步骤s321至步骤s323,任务处理设备从任务信息中提取路径参数,生成任务执行路径,代理进程根据任务执行路径将任务标识保存在目标位置,从而保证主进程重启前后任务日志的完整性和可查性。

在本申请上述实施例中,上述方法还包括如下步骤s325:

步骤s325,任务处理设备的主进程根据任务标识监听任务信息是否被启动执行,并根据退出码监听任务信息是否执行结束。

通过上述步骤s325,任务处理设备可以通过任务标识和退出码监听任务信息是否被执行,以及是否执行结束,从而确保任务信息全部被执行且全部执行完毕。

下面结合图5、图7和图8详细介绍本申请的一种优选实施例。

如图8所示,以任务处理设备包括主进程、代理进程和任务子进程为应用场景,提供了一种可选的基于分布式系统的任务处理方法,该方法可以包括如下步骤s81至步骤s87:

s801,客户终端81提交任务。

可选地,客户可以通过客户终端81发布任务信息。

s802,任务处理设备163的主进程获取主控设备161中保存的任务信息。

可选地,任务处理设备163的主进程通过http请求从主控设备161中获取任务信息,任务信息保存在主控设备中。

在该实施例中,上述步骤s802的实现方式与本申请上述实施例中的步骤s301的实现方式一致,在此不再赘述。

s803,任务处理设备163通过代理进程启动任务子进程执行任务信息。

可选地,任务处理设备163的主进程收到任务信息之后,通过触发代理进程启动任务子进程执行任务信息,如图5所示,任务处理设备node中的主进程(alisanode)与任务子进程隔离,代理进程(python进程)关联任务子进程,并且读写日志。

在该实施例中,上述步骤s803的实现方式与本申请上述实施例中的步骤s303的实现方式一致,在此不再赘述。

s804,任务处理设备163通过代理进程保存任务执行信息。

可选地,任务处理设备163在获取到任务信息时,从任务信息中获取路径参数,生成任务执行路径,代理进程将任务信息的任务标识、任务子进程的进程信息、日志信息和退出码保存在该任务执行路径对应的目标位置。

在该实施例中,上述步骤s804的实现方式与本申请上述实施例中的步骤s305的实现方式一致,在此不再赘述。

s805,主进程重启,任务处理设备163通过理进程离线启动任务子进程执行任务信息,并离线保存任务执行信息。

可选地,如果主进程被重启,代理进程离线启动任务子进程来执行任务信息,并将任务子进程执行任务信息生成的任务执行信息通过离线存储方式保存在目标位置。主进程被重启后,任务处理设备163从主控设备161中获取正在执行的任务信息,并从目标位置中查询任务执行信息,确定主进程被重启时该任务信息是否已经被执行或未被执行。

如图7所示,在一种可选的方案中,主进程被重启后,任务处理设备163调用恢复接口获取主控设备161中保存的任务列表,检测目标位置中是否存在对应的任务子进程的进程号,如果不存在,说明该任务信息未被相应的任务子进程执行,则任务处理设备163在内存中保存该任务信息,通过启动代理进程来启动相应的任务子进程执 行任务信息;如果存在,说明该任务信息已经被相应的任务子进程启动执行,则任务处理设备163检测目标位置中是否存在对应的退出码,如果不存在,则通过代理进程启动对应的任务子进程重新执行该任务信息,如果存在,则返回任务日志给主控设备161。

s806,任务处理设备163返回任务状态给主控设备161。

可选地,主进程根据任务标识监听任务信息是否被启动执行,根据退出码监听任务信息是否执行结束,如果主进程监听该任务已经被执行,则反馈任务执行信息给主控设备161,如果监听该任务信息已经执行结束,则反馈任务日志给主控设备161。

在该实施例中,上述步骤s806的实现方式与本申请上述实施例中的步骤s325的实现方式一致,在此不再赘述。

s807,主控设备161将任务日志反馈给客户终端81。

可选地,主控设备161将执行结束的任务信息的任务日志反馈给客户端,经正在执行的任务信息的任务执行信息给客户终端81。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

实施例2

根据本申请实施例,还提供了一种用于实施上述基于分布式系统的任务处理方法的基于分布式系统的任务处理装置,如图9所示,该装置包括:第一获取模块91,第一执行模块93和第一保存模块95。

其中第一获取模块91用于任务处理设备通过发起任务请求从主控设备中获取任 务信息,其中,在主控设备中保存任务请求对应的任务信息。第一执行模块93用于任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息。第一保存模块95用于任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选地,上述任务处理设备可以是部署在分布式系统中的集群的机器节点node,上述任务请求可以是http请求,上述主控设备可以是driver,主控设备的数据库中保存有任务处理设备需要的任务信息。上述代理进程可以是代理脚本,代理脚本可以作为主进程与任务子进程的通道。上述目标位置可以是代理进程的本地文件,路径可以是任务执行路径,上述任务信息的任务标识可以是任务id,上述任务子进程的进程信息可以是任务子进程的进程号pid。

需要说明的是,分布式系统中任务都在资源管理层driver层做分发,driver管理node、任务。每台node上正在执行的任务列表都存储在driver的db中,存储周期为任务生命周期。上述任务子进程执行任务信息所生成的日志信息为完整的日志信息,是指日志动作与任务处理设备重启不相关,并且只要代理进程存在,日志就可以正常读写。

此处需要说明的是,上述第一获取模块91,第一执行模块93和第一保存模块95对应于实施例一中的步骤s301至步骤s305,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

本申请上述实施例二公开的方案中,任务处理设备通过发起任务请求从主控设备中获取主控设备中保存的任务信息,任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息,任务处理设备通过代理进程将任务执行信息保存至目标位置。

容易注意到,由于任务处理设备中主进程和任务子进程通过代理进程进行隔离,使得主进程停止或者被重启,代理进程及任务子进程都不感知,可以正常执行任务信息,从而实现正在执行的进程在主进程启动过程中不受影响。并且由于任务处理设备主动向主控设备获取任务信息,即任务处理设备单向主控设备访问,因此通过改变http方式,利用数据库同步存储数据,从而实现任务处理设备、主控设备不在同一个网段环境下分布式系统的部署问题。能够支持百万级的任务执行,并且通过http的方式,可以随时部署node,大大提升了系统的环境适应能力和可扩展能力。

由此,本申请提供的上述实施例二的方案解决了现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

在本申请上述实施例中,如图10所示,上述装置还包括:第二执行模块101。

其中,第二执行模块101用于在主进程接收到任务信息之后,如果主进程被重启,则通过代理进程离线启动任务子进程来执行任务信息,并离线保存任务执行信息。

此处需要说明的是,上述第二执行模块101对应于实施例一中的步骤s307,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

在本申请上述实施例中,如图11所示,上述装置还包括:第二获取模块111和第一确定模块113。

其中。第二获取模块111用于任务处理设备通过访问主控设备,来获取当前正在执行的至少一个任务信息,任务信息包括:任务标识和任务执行路径。第一确定模块113用于任务处理设备通过检测在目标位置中记录的任务执行信息,来确定在主进程被重启时至少一个任务信息中已经被执行或未被执行的任务。

可选地,上述任务执行路径可以是全局唯一的关键路径,这个路径可以维持整个任务的生命周期,任务执行路径的生成方式为:客户端名称+日期+随机数+任务编号。通过查询该任务执行路径下的日志文件,可以得到日志信息接口;通过查询该任务执行路径下的任务子进程文件,可以得到该任务信息是否已经被任务子进程执行;通过查询该任务执行路径下的退出码文件,可以得到该任务信息是否已经被任务子进程执行结束。

此处需要说明的是,上述第二获取模块111和第一确定模块113对应于实施例一中的步骤s311至步骤s313,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

在本申请上述实施例中,如图12所示,第一确定模块113包括:第二确定模块121,第一注册模块123和第二注册模块125。

其中,第二确定模块121用于任务处理设备在目标位置进行本地查询,确定是否已经存在与至少一个任务信息中任意一个任务标识相匹配的进程信息。第一注册模块 123用于如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程启动执行,任务处理设备仅在内存中注册该任务信息。第二注册模块125用于如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程所执行,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程执行任务信息。

可选地,上述进程信息可以是子进程的进程号,每一个任务子进程在启动执行任务信息时,都会将自己的进程号对应的存放在该任务信息中。

此处需要说明的是,上述第二确定模块121,第一注册模块123和第二注册模块125对应于实施例一中的步骤s3133至步骤s3135,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

在本申请上述实施例中,如图13所示,上述装置还包括:第三确定模块131,反馈模块133和第三注册模块135。

其中,第三确定模块131用于任务处理设备在目标位置进行本地查询,确定是否已经存在与已经被对应的任务子进程启动执行的任务信息相匹配的退出码。反馈模块133用于如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程执行结束,任务处理设备终止在内存中注册该任务信息,直接将对应的任务日志反馈给主控设备。第三注册模块135用于如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程执行完毕,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程重新执行任务信息。

可选地,上述退出码(returncode)用于表征该任务信息已经执行结束。

此处需要说明的是,上述第三确定模块131,反馈模块133和第三注册模块135对应于实施例一中的步骤s317至步骤s319,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

在本申请上述实施例中,如图14所示,上述装置还包括:生成模块141和第二保存模块143。

其中,生成模块141用于从任务信息中提取路径参数,并根据路径参数生成任务执行路径。第二保存模块143用于代理进程根据任务执行路径将任务标识保存至目标位置。

此处需要说明的是,上述生成模块141和第二保存模块143对应于实施例一中的 步骤s321至步骤s323,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

在本申请上述实施例中,如图15所示,上述装置还包括:监听模块151。

其中,监听模块151用于任务处理设备的主进程根据任务标识监听任务信息是否被启动执行,并根据退出码监听任务信息是否执行结束。

此处需要说明的是,上述监听模块151对应于实施例一中的步骤s325,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端20中。

实施例3

根据本申请实施例,还提供了一种用于实施上述基于分布式系统的任务处理方法的基于分布式系统的任务处理系统,如图16所示,该系统包括:主控设备161和任务处理设备163。

其中,主控设备161用于存储任务信息。

任务处理设备163与主控设备161进行通讯,用于通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息。

可选地,上述任务处理设备163可以是部署在分布式系统中的集群的机器节点node,上述任务请求可以是http请求,上述主控设备可以是driver,主控设备的数据库中保存有任务处理设备需要的任务信息。

需要说明的是,分布式系统中任务都在资源管理层driver层做分发,driver管理node、任务。每台node上正在执行的任务列表都存储在driver的db中,存储周期为任务生命周期。

如图3所示,在一种可选的方案中,任务处理设备主动发送http请求给主控设备,主控设备接收到http请求之后,提取http请求对应的任务信息,通过接口将该任务信息发送给任务处理设备。

任务处理设备163还用于任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息。

可选地,上述代理进程可以是代理脚本,代理脚本可以作为主进程与任务子进程 的通道。

如图5所示,任务处理设备node中的主进程(alisanode)与任务子进程隔离,代理进程(python进程)关联任务子进程,并且读写日志。结合图5和图6可知,在一种可选的方案中,node从driver中获取到任务之后,启动代理进程,传入任务执行需要的参数,代理进程启动具体的任务子进程执行任务信息。

任务处理设备163还用于通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选地,上述目标位置可以是代理进程的本地文件,路径可以是任务执行路径,上述任务信息的任务标识可以是任务id,上述任务子进程的进程信息可以是任务子进程的进程号pid。

需要说明的是,上述任务子进程执行任务信息所生成的日志信息为完整的日志信息,是指日志动作与任务处理设备重启不相关,并且只要代理进程存在,日志就可以正常读写。

如图6所示,在一种可选的方案中,任务子进程将所有的日志信息通过流方式返回给代理服务器,代理进程将接收到的日志信息、子进程的进程号、任务信息标号和退出码保存到本地文件中。

本申请上述实施例三公开的方案中,任务处理设备通过发起任务请求从主控设备中获取主控设备中保存的任务信息,任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息,任务处理设备通过代理进程将任务执行信息保存至目标位置。

容易注意到,由于任务处理设备中主进程和任务子进程通过代理进程进行隔离,使得主进程停止或者被重启,代理进程及任务子进程都不感知,可以正常执行任务信息,从而实现正在执行的进程在主进程启动过程中不受影响。并且由于任务处理设备主动向主控设备获取任务信息,即任务处理设备单向主控设备访问,因此通过改变http方式,利用数据库同步存储数据,从而实现任务处理设备、主控设备不在同一个网段环境下分布式系统的部署问题。能够支持百万级的任务执行,并且通过http的方式,可以随时部署node,大大提升了系统的环境适应能力和可扩展能力。

由此,本申请提供的上述实施例三的方案解决了现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

在本申请提供的一种可选实施例中,在主进程接收到任务信息之后,任务处理设备163还用于如果主进程被重启,则通过代理进程离线启动任务子进程来执行任务信息,并离线保存任务执行信息。

在本申请提供的一种可选实施例中,在主进程被重启之后,任务处理设备163还用于通过访问主控设备,来获取当前正在执行的至少一个任务信息,任务信息包括:任务标识和任务执行路径;通过检测在目标位置中记录的任务执行信息,来确定在主进程被重启时至少一个任务信息中已经被执行或未被执行的任务。

在本申请提供的一种可选实施例中,任务处理设备163还用于在目标位置进行本地查询,确定是否已经存在与至少一个任务信息中任意一个任务标识相匹配的进程信息;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程启动执行,任务处理设备仅在内存中注册该任务信息;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程所执行,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程执行任务信息。

在本申请提供的一种可选实施例中,任务处理设备163还用于在目标位置进行本地查询,确定是否已经存在与已经被对应的任务子进程启动执行的任务信息相匹配的退出码;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程执行结束,任务处理设备终止在内存中注册该任务信息,直接将对应的任务日志反馈给主控设备;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程执行完毕,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程重新执行任务信息。

在本申请提供的一种可选实施例中,任务处理设备163还用于从任务信息中提取路径参数,并根据路径参数生成任务执行路径;其中,代理进程根据任务执行路径将任务标识保存至目标位置。

在本申请提供的一种可选实施例中,任务处理设备163还用于主进程根据任务标识监听任务信息是否被启动执行,并根据退出码监听任务信息是否执行结束。

实施例4

本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。

可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。

在本实施例中,上述计算机终端可以执行基于分布式系统的任务处理方法中以下步骤的程序代码:任务处理设备通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选地,图17是根据本申请实施例的一种计算机终端的结构框图。如图17所示,该计算机终端a可以包括:一个或多个(图中仅示出一个)处理器171、存储器173、以及传输装置175。

其中,存储器173可用于存储软件程序以及模块,如本申请实施例中的基于分布式系统的任务处理方法和装置对应的程序指令/模块,处理器171通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于分布式系统的任务处理方法。存储器173可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器173可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端a。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

处理器171可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:任务处理设备通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选的,上述处理器171还可以执行如下步骤的程序代码:在主进程接收到任务信息之后,如果主进程被重启,则通过代理进程离线启动任务子进程来执行任务信息,并离线保存任务执行信息。

可选的,上述处理器171还可以执行如下步骤的程序代码:任务处理设备通过访问主控设备,来获取当前正在执行的至少一个任务信息,任务信息包括:任务标识和任务执行路径;任务处理设备通过检测在目标位置中记录的任务执行信息,来确定在主进程被重启时至少一个任务信息中已经被执行或未被执行的任务。

可选的,上述处理器171还可以执行如下步骤的程序代码:任务处理设备在目标位置进行本地查询,确定是否已经存在与至少一个任务信息中任意一个任务标识相匹配的进程信息;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程启动执行,任务处理设备仅在内存中注册该任务信息;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程所执行,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程执行任务信息。

可选的,上述处理器171还可以执行如下步骤的程序代码:任务处理设备在目标位置进行本地查询,确定是否已经存在与已经被对应的任务子进程启动执行的任务信息相匹配的退出码;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程执行结束,任务处理设备终止在内存中注册该任务信息,直接将对应的任务日志反馈给主控设备;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程执行完毕,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程重新执行任务信息。

可选的,上述处理器171还可以执行如下步骤的程序代码:从任务信息中提取路径参数,并根据路径参数生成任务执行路径;其中,代理进程根据任务执行路径将任务标识保存至目标位置。

可选的,上述处理器171还可以执行如下步骤的程序代码:任务处理设备的主进程根据任务标识监听任务信息是否被启动执行,并根据退出码监听任务信息是否执行结束。

采用本申请实施例,提供了一种基于分布式系统的任务处理方法。本任务处理设备通过发起任务请求从主控设备中获取主控设备中保存的任务信息,任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息,任务处理设备通过代理进程将任务执行信息保存至目标位置。解决了现有技术中分布式执行系统建立在特定的应用环境中,任务处理设备无法成功执行任务信息,导致任务丢失的技术问题。

本领域普通技术人员可以理解,图17所示的结构仅为示意,计算机终端也可以是智能手机(如android手机、ios手机等)、平板电脑、掌声电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图17其并不对上述电子装置的结构造成限定。例如,计算机终端a还可包括比图17中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图17所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以 通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例5

本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的基于分布式系统的任务处理方法所执行的程序代码。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:任务处理设备通过发起任务请求从主控设备中获取任务信息,其中,在主控设备中保存任务请求对应的任务信息;任务处理设备的主进程接收到任务信息之后,通过触发代理进程启动对应的任务子进程来执行任务信息;任务处理设备通过代理进程将任务执行信息保存至目标位置,其中,任务执行信息包括如下任意一个或多个信息:任务信息的任务标识、任务子进程的进程信息、任务子进程执行任务信息所生成的日志信息和退出码。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在主进程接收到任务信息之后,如果主进程被重启,则通过代理进程离线启动任务子进程来执行任务信息,并离线保存任务执行信息。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:任务处理设备通过访问主控设备,来获取当前正在执行的至少一个任务信息,任务信息包括:任务标识和任务执行路径;任务处理设备通过检测在目标位置中记录的任务执行信息,来确定在主进程被重启时至少一个任务信息中已经被执行或未被执行的任务。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:任务处理设备在目标位置进行本地查询,确定是否已经存在与至少一个任务信息中任意一个任务标识相匹配的进程信息;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程启动执行,任务处理设备仅在内存中注册该任务信息;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程所执行,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程执行任务信息。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码: 任务处理设备在目标位置进行本地查询,确定是否已经存在与已经被对应的任务子进程启动执行的任务信息相匹配的退出码;如果存在,则确定在主进程被重启时,任务信息已经被对应的任务子进程执行结束,任务处理设备终止在内存中注册该任务信息,直接将对应的任务日志反馈给主控设备;如果不存在,则确定在主进程被重启时,任务信息未被对应的任务子进程执行完毕,任务处理设备在内存中注册该任务信息,并启动对应的任务子进程重新执行任务信息。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从任务信息中提取路径参数,并根据路径参数生成任务执行路径;其中,代理进程根据任务执行路径将任务标识保存至目标位置。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:任务处理设备的主进程根据任务标识监听任务信息是否被启动执行,并根据退出码监听任务信息是否执行结束。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的 形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1