CN111443959B - 任务的执行方法、装置和服务器 - Google Patents
任务的执行方法、装置和服务器 Download PDFInfo
- Publication number
- CN111443959B CN111443959B CN202010227852.XA CN202010227852A CN111443959B CN 111443959 B CN111443959 B CN 111443959B CN 202010227852 A CN202010227852 A CN 202010227852A CN 111443959 B CN111443959 B CN 111443959B
- Authority
- CN
- China
- Prior art keywords
- plug
- class
- executed
- task
- class loader
- 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.)
- Active
Links
Images
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本发明涉及任务调度技术领域,尤其是涉及一种任务的执行方法、装置和服务器。
背景技术
任务调度***中有作业、插件和调度器三个基本元素,其中,作业中包括具体的任务,插件是作业的执行引擎,调度器用于驱动插件执行相应的作业。相关技术中,***中的作业和插件均同时存在多个版本,通常不同版本的作业所需的插件的版本不同。当需要执行作业时,调度器通过类加载器加载用于执行当前作业所需版本的插件对应的插件类,以实例化该插件类得到所需版本的插件,再通过该插件执行作业。
当多个作业需要同时执行时,多个作业之间的版本可能不同,因而所需的插件的版本也可能不同,但不同版本的插件对应的插件类相同;如果想要同时执行多个作业,需要将插件类实例化为不同版本的插件,但是,一个调度***中通常通过一个类加载器进行类的加载,且受Java语言中类加载机制的限制,同一个插件类不能被一个类加载器多次加载,因此不同版本的插件对应的插件类不可同时加载,导致在一个调度***中无法同时运行同一个插件的不同版本,即同一个插件的不同版本不能并行执行,难以满足部分任务的作业需求。
发明内容
本发明的目的在于提供一种任务的执行方法、装置和服务器,以使同一个插件的不同版本可以并行执行,从而满足全部任务的作业需求。
第一方面,本发明实施例提供一种任务的执行方法,该方法包括:接收待执行任务;通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类;通过该插件类加载器加载待执行任务所需的插件类;实例化该待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制插件,以执行待执行任务。
在可选的实施方式中,上述接收待执行任务的步骤之前,该方法还包括:创建类加载器以及类加载器的层级关系;该类加载器包括:接口类加载器、插件类加载器和调度器类加载器;该层级关系中,接口类加载器的层级高于插件类加载器和调度器类加载器;其中,插件类加载器用于加载预设的插件类;调度器类加载器用于加载预设的调度器类;接口类加载器用于加载预设的接口类;调度器类实例化后得到的调度器,通过接口类实例化后得到的接口,控制插件类实例化后得到的插件。
在可选的实施方式中,上述调度器通过下述方式得到:通过调度器类加载器,加载预设的调度器类;实例化加载得到的调度器类,得到调度器。
在可选的实施方式中,上述接收待执行任务的步骤之前,该方法还包括:通过接口类加载器,加载预设的接口类;实例化加载得到的所述接口类,得到接口;上述通过调度器控制插件的步骤,包括:如果待执行任务包括多个,调度器通过该接口控制每个待执行任务的插件,以执行每个待执行任务。
在可选的实施方式中,上述方法还包括:如果待执行任务执行完毕,通过调度器将待执行任务对应的插件类加载器从内存中删除。
第二方面,本发明实施例提供一种任务的执行装置,该装置包括:任务接收模块,用于接收待执行任务;加载器实例化模块,用于通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到待执行任务对应的插件类加载器;其中,插件类加载器用于加载执行待执行任务所需的插件类;类加载模块,用于通过插件类加载器加载待执行任务所需的插件类;任务执行模块,用于实例化待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制插件,以执行待执行任务。
在可选的实施方式中,上述装置还包括加载器关系创建模块,用于:创建类加载器以及类加载器的层级关系;该类加载器包括:接口类加载器、插件类加载器和调度器类加载器;该层级关系中,接口类加载器的层级高于插件类加载器和调度器类加载器;其中,插件类加载器用于加载预设的插件类;调度器类加载器用于加载预设的调度器类;接口类加载器用于加载预设的接口类;调度器类实例化后得到的调度器,通过接口类实例化后得到的接口,控制插件类实例化后得到的插件。
在可选的实施方式中,上述装置还包括接口实例化模块,用于:通过接口类加载器,加载预设的接口类;实例化加载得到的接口类,得到接口;上述任务执行模块,用于:如果待执行任务包括多个,该调度器通过接口控制每个待执行任务的插件,以执行每个待执行任务。
在可选的实施方式中,上述装置还包括加载器删除模块,用于:如果待执行任务执行完毕,通过调度器将待执行任务对应的插件类加载器从内存中删除。
第三方面,本发明实施例提供一种服务器,包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的任务的执行方法。
第四方面,本发明实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的任务的执行方法。
本发明实施例带来了以下有益效果:
本发明提供的一种任务的执行方法、装置和服务器,首先接收待执行任务;再通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到该待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类;进而通过该插件类加载器加载待执行任务所需的插件类;实例化待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制该插件执行待执行任务。本发明中,在多个任务需要同时执行时,通过调度器为每个任务实例化一个插件类加载器,以使每个插件类加载器加载各自对应的任务所需的插件类,实例化插件类得到每个任务所需版本的插件,调度器控制不同版本的插件同时执行任务;该方式同时通过不同的插件类加载器加载相应的插件类,避免了同一个插件类不能同时被一个类加载器多次加载的问题,从而实现了同一插件的多个版本并行运行,满足了各类任务的并行作业需求。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务的执行方法的流程图;
图2为本发明实施例提供的另一种任务的执行方法的流程图;
图3为本发明实施例提供的类加载器的层级关系的示意图;
图4为本发明实施例提供的一种任务的执行装置的结构示意图;
图5为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中一个调度***中无法同时运行同一个插件的不同版本,即同一个插件的不同版本不能并行执行,难以满足部分任务的作业需求的问题,本发明实施例提供了一种任务的执行方法、装置和服务器,该技术可以应用于各种任务调用、任务执行的场景中。
为了便于对本发明实施例进行理解,首先对本发明实施例所公开的一种任务的执行方法进行详细介绍,如图1所示,该方法包括如下具体步骤:
步骤S102,接收待执行任务。
上述待执行任务可以是外部设备根据工作需求发送的,该外部设备可以是服务器或者用户终端等。在具体实现时,调度***中的待执行任务通常具有不同的版本,因此每个待执行任务需要通过与该版本对应的插件执行;该版本可以是新版本或者旧版本,也可以是高级版本或者低级版本等,例如,某一待执行任务为高级版本,那么执行该待执行任务的插件应当也为高级版本。
步骤S104,通过预设的调度器,为上述待执行任务实例化预设的插件类加载器的类,得到该待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类。
上述预设的插件类加载器通常只用于加载插件类,上述调度器可以负责创建插件类加载器,也即是当接收到待处理任务时,调度器可以为待执行任务实例化一个插件类加载器的类,以得到该待执行任务对应的插件类加载器,其中,实例化通常是指在面向对象的编程中,把用类创建对象的过程称为实例化,该对象可以理解为上述插件类加载器。
上述插件类加载器的类通常用来描述插件类加载器可以实现的功能和实现功能所使用的方法等。上述插件类通常用来描述插件可以实现的功能和实现功能所使用的方法等,该插件类通常有多种,每一种插件类对应有多个版本。上述调度器创建的插件类加载器可以加载待执行任务所需的插件类,该待执行任务所需的插件类通常是可执行该待执行任务的相应版本的插件类。
步骤S106,通过上述插件类加载器加载待执行任务所需的插件类。
在具体实现时,通过调度器创建的插件类加载器加载待执行任务所需的插件类,加载插件类的过程通常是把插件类对应的文件读取到内存中,以使该插件类可以实例化为插件(也可称为插件类的对象或者插件类的实例)。
步骤S108,实例化上述待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制该插件,以执行待执行任务。
由于插件类为描述性文件,需要将插件类实例化为可执行的对象,该对象也即是上述插件。在具体实现时,可以将上述待执行任务所需的插件类,实例化为与待执行任务的版本相对应的版本的插件,然后通过调度器控制该插件执行待执行任务,也可以理解为调度器通过控制该插件可以控制待执行任务的执行过程,例如开始执行、停止执行、取消执行等。
如果需要同时执行多个待执行任务,每个待执行任务之间是相互独立的,每个待执行任务可以通过上述步骤S104到步骤S108被执行,也可以理解为调度器可以同时为每个待执行任务创建一个插件类加载器,每个插件类加载器可以加载的插件类可以相同也可以不同,该插件类加载器加载的插件类由各自对应的待执行任务。
本发明提供的一种任务的执行方法,首先接收待执行任务;再通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到该待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类;进而通过该插件类加载器加载待执行任务所需的插件类;实例化待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制该插件执行待执行任务。本发明中,在多个任务需要同时执行时,通过调度器为每个任务实例化一个插件类加载,以使每个插件类加载器加载各自对应的任务所需的插件类,实例化插件类得到每个任务所需版本的插件,以使调度器控制不同版本的插件同时执行任务;该方式同时通过不同的插件类加载器加载相应的插件类,避免了同一个插件类不能同时被一个类加载器多次加载的问题,从而实现了同一插件的多个版本并行运行,满足了各类任务的并行作业需求。
本发明实施例还提供了另一种任务的执行方法,该方法在上述实施例方法的基础上实现;该方法重点描述创建类加载器以及该类加载器的层级关系的具体过程(具体通过下述步骤S202实现),以及在类加载器的层级关系的基础上调度器控制插件执行待执行任务的具体过程;如图2所示,该方法包括如下具体步骤:
步骤S202,创建类加载器以及该类加载器的层级关系;该类加载器包括:接口类加载器、插件类加载器和调度器类加载器;该层级关系中,接口类加载器的层级高于插件类加载器和调度器类加载器。
上述插件类加载器用于加载预设的插件类;上述调度器类加载器用于加载预设的调度器类;上述接口类加载器用于加载预设的接口类;上述调度器类实例化后得到的调度器,通过接口类实例化后得到的接口,控制插件类实例化后得到的插件。
上述预设的插件类通常包括多种插件类,每种插件类对应有不同的版本;上述预设的调度器类可以为多种,每种调度器类只有一个版本,通常一个任务调度***对应有一个调度器类实例化后得到的调度器,通过该调度器可以控制插件类实例化的到的插件执行待执行任务。
在具体实现时,上述接口类加载器可以称为应用程序类加载器(ApplicationClassLoader)、插件类加载器和调度器类加载器可以称为自定义类加载器(UserClassLoader),除上述类加载器外,通常还包括接口类加载器的上级类加载:启动类加载器(BootsrapClassLoader)和扩展类加载器(Extension ClassLoader),以完成整个的调度***中类的加载,如图3所示为类加载器的层级关系的示意图;图3中每个类加载器可加载的路径是预先分配的,也即是每个类加载器可加载的类是预先设置好的,例如启动类加载器和扩展类加载器可以用于加载JRE(Java Runtime Environment,Java运行环境)相关类;接口类加载器可以用于加载用户自定义类,该用户自定义类可以是接口类、插件类加载器加载的插件类和调度器类加载器加载的调度器类。
在具体实现时,在Java虚拟机规范中,同一个类在同一个类加载器中只能加载一次,且所有类加载器需要遵循双亲委派规则加载类,也即是每个类加载器加载类时,会先请求上级类加载器来加载该类,如果上级类加载器无法完成加载时,才由当前类加载器来加载。本方案中接口类加载器的层级高于插件类加载器和调度器类加载器,可以将接口类与实现类(插件类和调度器类可以统称为实现类,用于实现任务的执行)的加载分离,也即是接口类由层级高的接口类加载器加载,插件类由层级较低的插件类加载器加载,调度器类由层级较低的调度类加载器加载,因此,每个类都有其对应的加载器加载,每个类不会被重复加载,从而可以保证在一次调度作业中,调度器类加载器加载的调度器类和插件类加载器加载的插件类都会对应同一个接口类,同时确保调度器类实例化后得到的调度器可通过接口类实例化后得到的接口,控制插件类实例化后得到的插件。
步骤S204,通过上述接口类加载器,加载预设的接口类;实例化加载得到的接口类,得到接口。
上述预设的接口类通常有多种,每种接口类都有其对应的插件类,以使实例化接口类得到的接口可以转化或者传递插件类实例化后得到的插件。
步骤S206,接收待执行任务。
步骤S208,通过上述调度器类加载器,加载预设的调度器类;实例化加载得到的调度器类,得到调度器。
当接收到待执行任务是需要通过调度器类加载器加载预设的调度器类,该调度器类用于描述调度器可实现的功能和实现能所执行的方法,将调度器类实例化后可得到调度器类的实例,也即是可以得到调度器,该调度器可以控制插件执行待执行任务。
步骤S210,通过上述调度器,为待执行任务实例化插件类加载器的类,得到该待执行任务对应的插件类加载器。
步骤S212,通过上述待执行任务对应的插件类加载器加载待执行任务所需的插件类。
步骤S214,实例化上述待执行任务所需的插件类,得到待执行任务对应的插件。
步骤S216,控制上述调度器通过接口控制上述插件,以执行待执行任务。
在具体实现时,由于调度器类加载器和插件类加载器属于同级类加载器,插件类加载器加载的插件类对调度器是不可见的,但由于调度器类加载器和插件类加载器有共同的上级接口类加载器,且上级加载器加载的类对下级类加载器是可见的,因此,调度器类加载器可以根据接口类加载器感知插件类加载器加载的插件类,以使调度器可以控制插件,也可以理解为插件类加载器加载的插件类实例后得到的插件,可以通过接口类实例化得到的接口将插件返回给调度器,以使调度器可以控制该插件执行待执行任务。
在一些实施例中,接口类加载器可以采用AppClassLoader,调度器类加载器采用Scheduler ClassLoader,插件类加载器采用PluginClassLoader;其中,App ClassLoader只允许加载Scheduler ClassLoader加载的类、Plugin ClassLoader加载的类和接口类;Scheduler ClassLoader用于加载调度器类;Plugin ClassLoader用于加载插件类。
例如,假设待执行任务对应的插件类为SomeJobImpl,调度器类实例化得到调度器后,调度器可以实例化一个插件类加载器实,然后调用该插件类加载loadPlugin方法加载待执行任务所需的插件类,并实例化插件类得到插件,并把插件以接口的形式返回给调度器,调度器进而控制该插件执行任务的整个过程,代码如下:
在上面的示例代码中,Scheduler.class为调度器类,Scheduler.class由调度器类加载器加载;SomeJobImpl.class为插件类,由插件类加载器加载;Job为接口类,由接口类加载器加载;由于调度器类与插件类由不同的类加载器加载,所以调度器无法感知加载插件类,但该插件类的接口类是由接口类加载器加载的,由于接口类加载器加载的类插件类加载器和调度器类加载器都可见,所以插件类加载器加载的插件类,实例化后得到的插件,可以以接口的形式返回给调度器。
在具体实现时,如果待执行任务为多个,上述步骤S216可以通过下述方式实现:调度器通过接口控制每个待执行任务的插件,以执行每个待执行任务。
如果待执行任务为多个,调度器可以为每个待执行任务实例化一个插件类加载器的类,得到每个待执行任务对应的插件类加载器。每个插件类加载器需要加载各自对应的任务所需的插件类,实例化待执行任务所需的插件类,可得到每个待执行任务对应版本的插件,该对应版本的插件可以是同一个插件的不同版本,可以是不同插件的不同版本,可以是不同插件的某一版本等。由于每个待执行任务对应插件只会加载到各自对应的插件类加载器中,每个插件类加载器是相互独立的,且不同的任务可以基于接口做各自实现,例如,java有java的启停方式,shell有shell的启停方式,因此,调度器可以通过该接口得到每个待执行任务对应的插件,以执行待执行任务。
步骤S218,如果上述待执行任务执行完毕,通过调度器将待执行任务对应的插件类加载器从内存中删除。
当待执行任务执行完成时,调度器可以将通过调度器实例化的插件类加载器进行丢弃或者回收,也即是将该插件类加载器从内存中删除,该方式不仅可以减少内存占用,还可以确保每个待执行任务对应的插件类加载器相互独立。
上述任务的执行方法,首先创建类加载器以及该类加载器的层级关系,再通过上述类加载器中的接口类加载器加载接口类,实例化加载得到的接口类得到接口;进而接收待执行任务,并通过调度器类加载器加载调度器类,实例化加载得到的调度器类得到调度器;然后通过该调度器为待执行任务实例化插件类加载器的类,得到该待执行任务对应的插件类加载器;再通过该待执行任务对应的插件类加载器加载待执行任务所需的插件类,进而实例化待执行任务所需的插件类得到待执行任务对应的插件,最后控制上述调度器通过接口控制上述插件,以执行待执行任务。本发明中,通过加载器的层级关系可以确保调度器可以控制插件执行待执行任务,而且,该方式中每次执行待执行任务都实例化一个新的插件类加载器加载插件类,确保了多版本插件可以同时加载,从而可以满足用户对任务执行的个性化需求,也可适用于所有的任务执行场景。
对应于上述任务的执行方法的实施例,本发明实施例还提供了一种任务的执行装置,如图4所示,该装置包括:
任务接收模块40,用于接收待执行任务。
加载器实例化模块41,用于通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类。
类加载模块42,用于通过插件类加载器加载待执行任务所需的插件类。
任务执行模块43,用于实例化待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制该插件,以执行待执行任务。
上述任务的执行装置,首先接收待执行任务;再通过预设的调度器,为待执行任务实例化预设的插件类加载器的类,得到该待执行任务对应的插件类加载器;其中,该插件类加载器用于加载执行待执行任务所需的插件类;进而通过该插件类加载器加载待执行任务所需的插件类;实例化待执行任务所需的插件类,得到待执行任务对应的插件,通过调度器控制该插件执行待执行任务。本发明中,在多个任务需要同时执行时,通过调度器为每个任务实例化一个插件类加载,以使每个插件类加载器加载各自对应的任务所需的插件类,实例化插件类得到每个任务所需版本的插件,以使调度器控制不同版本的插件同时执行任务;该方式同时通过不同的插件类加载器加载相应的插件类,避免了同一个插件类不能同时被一个类加载器多次加载的问题,从而实现了同一插件的多个版本并行运行,满足了各类任务的并行作业需求。
进一步地,上述装置还包括加载器关系创建模块,用于:创建类加载器以及该类加载器的层级关系;该类加载器包括:接口类加载器、插件类加载器和调度器类加载器;该层级关系中,接口类加载器的层级高于插件类加载器和调度器类加载器;其中,插件类加载器用于加载预设的插件类;调度器类加载器用于加载预设的调度器类;该接口类加载器用于加载预设的接口类;该调度器类实例化后得到的调度器,通过接口类实例化后得到的接口,控制插件类实例化后得到的插件。
具体地,上述调度器通过下述方式得到:通过调度器类加载器,加载预设的调度器类;实例化加载得到的调度器类,得到调度器。
进一步地,上述装置还包括接口实例化模块,用于:通过接口类加载器,加载预设的接口类;实例化加载得到的接口类,得到接口;上述任务执行模块43,用于:如果待执行任务包括多个,该调度器通过接口控制每个待执行任务的插件,以执行每个待执行任务。
具体地,上述装置还包括加载器删除模块,用于:如果待执行任务执行完毕,通过调度器将该待执行任务对应的插件类加载器从内存中删除。
本发明实施例所提供的任务的执行装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种服务器,参见图5所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器执行机器可执行指令以实现上述任务的执行方法。
进一步地,图5所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述任务的执行方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种任务的执行方法,其特征在于,所述方法包括:
创建类加载器以及类加载器的层级关系;所述类加载器包括:接口类加载器、插件类加载器和调度器类加载器;所述层级关系中,所述接口类加载器的层级高于所述插件类加载器和所述调度器类加载器;
其中,所述插件类加载器用于加载预设的插件类;所述调度器类加载器用于加载预设的调度器类;所述接口类加载器用于加载预设的接口类;所述调度器类实例化后得到的调度器,通过所述接口类实例化后得到的接口,控制所述插件类实例化后得到的插件;
接收待执行任务;
通过预设的调度器,为所述待执行任务实例化预设的插件类加载器的类,得到所述待执行任务对应的插件类加载器;其中,所述预设的插件类加载器用于加载执行所述待执行任务所需的插件类;
通过所述预设的插件类加载器加载所述待执行任务所需的插件类;
实例化所述待执行任务所需的插件类,得到所述待执行任务对应的插件,通过所述预设的调度器控制所述插件,以执行所述待执行任务。
2.根据权利要求1所述的方法,其特征在于,所述调度器通过下述方式得到:
通过所述调度器类加载器,加载预设的调度器类;
实例化加载得到的所述调度器类,得到调度器。
3.根据权利要求1所述的方法,其特征在于,所述接收待执行任务的步骤之前,所述方法还包括:通过所述接口类加载器,加载预设的接口类;实例化加载得到的所述接口类,得到接口;
所述通过所述调度器控制所述插件的步骤,包括:如果所述待执行任务包括多个,所述调度器通过所述接口控制每个所述待执行任务的插件,以执行每个所述待执行任务。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述待执行任务执行完毕,通过所述调度器将所述待执行任务对应的插件类加载器从内存中删除。
5.一种任务的执行装置,其特征在于,所述装置包括:
加载器关系创建模块,用于:创建类加载器以及类加载器的层级关系;所述类加载器包括:接口类加载器、插件类加载器和调度器类加载器;所述层级关系中,所述接口类加载器的层级高于所述插件类加载器和所述调度器类加载器;其中,所述插件类加载器用于加载预设的插件类;所述调度器类加载器用于加载预设的调度器类;所述接口类加载器用于加载预设的接口类;所述调度器类实例化后得到的调度器,通过所述接口类实例化后得到的接口,控制所述插件类实例化后得到的插件;
任务接收模块,用于接收待执行任务;
加载器实例化模块,用于通过预设的调度器,为所述待执行任务实例化预设的插件类加载器的类,得到所述待执行任务对应的插件类加载器;其中,所述预设的插件类加载器用于加载执行所述待执行任务所需的插件类;
类加载模块,用于通过所述预设的插件类加载器加载所述待执行任务所需的插件类;
任务执行模块,用于实例化所述待执行任务所需的插件类,得到所述待执行任务对应的插件,通过所述预设的调度器控制所述插件,以执行所述待执行任务。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括接口实例化模块,用于:通过所述接口类加载器,加载预设的接口类;实例化加载得到的所述接口类,得到接口;
所述任务执行模块,用于:如果所述待执行任务包括多个,所述调度器通过所述接口控制每个所述待执行任务的插件,以执行每个所述待执行任务。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括加载器删除模块,用于:
如果所述待执行任务执行完毕,通过所述调度器将所述待执行任务对应的插件类加载器从内存中删除。
8.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至4任一项所述的任务的执行方法。
9.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现权利要求1至5任一项所述的任务的执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010227852.XA CN111443959B (zh) | 2020-03-27 | 2020-03-27 | 任务的执行方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010227852.XA CN111443959B (zh) | 2020-03-27 | 2020-03-27 | 任务的执行方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443959A CN111443959A (zh) | 2020-07-24 |
CN111443959B true CN111443959B (zh) | 2023-04-25 |
Family
ID=71649147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010227852.XA Active CN111443959B (zh) | 2020-03-27 | 2020-03-27 | 任务的执行方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443959B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068903B (zh) * | 2020-09-21 | 2024-05-03 | 深圳市欢太科技有限公司 | 应用程序的加载方法、应用程序的加载装置、介质与设备 |
CN112445543B (zh) * | 2020-11-26 | 2023-03-10 | 杭州趣链科技有限公司 | 智能合约的类调用方法、装置及电子设备 |
CN116594717B (zh) * | 2023-05-24 | 2024-03-08 | 上海汉朔信息科技有限公司 | 一种类加载隔离方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043645A (zh) * | 2009-10-20 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种加载插件的方法及装置 |
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及*** |
CN104699537A (zh) * | 2015-03-18 | 2015-06-10 | 北京奇虎科技有限公司 | 程序控制方法与活动组件调度方法及其相应的装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856740B2 (en) * | 2012-07-31 | 2014-10-07 | Hewlett-Packard Development Company, L.P. | Implementing multiple versions of a plug-in concurrently |
CN106909406A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 一种加载应用程序的apk插件的方法及装置 |
CN107463391B (zh) * | 2016-06-03 | 2020-11-10 | 阿里巴巴集团控股有限公司 | 任务处理方法、装置及设备 |
CN108491236A (zh) * | 2018-03-23 | 2018-09-04 | 努比亚技术有限公司 | 一种插件加载方法、装置及计算机可读存储介质 |
CN109462507B (zh) * | 2018-11-15 | 2021-09-28 | 北京金山云网络技术有限公司 | 配置更新方法、装置、***及电子设备 |
CN109614167B (zh) * | 2018-12-07 | 2023-10-20 | 杭州数澜科技有限公司 | 一种管理插件的方法和*** |
CN110308945B (zh) * | 2019-05-22 | 2022-07-05 | 百度在线网络技术(北京)有限公司 | 插件的动态加载方法和装置 |
CN110221878A (zh) * | 2019-06-17 | 2019-09-10 | 北京金山安全软件有限公司 | 一种游戏服务的更新方法、装置、电子设备及存储介质 |
-
2020
- 2020-03-27 CN CN202010227852.XA patent/CN111443959B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043645A (zh) * | 2009-10-20 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种加载插件的方法及装置 |
CN104166590A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种实现任务调度的方法及*** |
CN104699537A (zh) * | 2015-03-18 | 2015-06-10 | 北京奇虎科技有限公司 | 程序控制方法与活动组件调度方法及其相应的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111443959A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111443959B (zh) | 任务的执行方法、装置和服务器 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN113377348B (zh) | 应用于任务引擎的任务调整方法、相关装置和存储介质 | |
CN110597531B (zh) | 分布式的模块升级方法、装置及存储介质 | |
CN112272218B (zh) | 云平台实例资源操作方法、装置、计算机设备及存储介质 | |
CN108572845B (zh) | 分布式微服务集群的升级方法及相关*** | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
CN110633135A (zh) | 异步任务分配方法、装置、计算机设备及存储介质 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN111988337A (zh) | 权限管理方法及*** | |
CN111858727A (zh) | 一种基于模板配置的多数据源数据导出***及方法 | |
CN111736884A (zh) | 组件化方法和*** | |
CN111988429A (zh) | 算法调度方法以及*** | |
CN111381961A (zh) | 一种处理定时任务的方法、装置与电子设备 | |
CN112256249A (zh) | 扩展Android***功能的方法、设备及计算机存储介质 | |
CN111831365A (zh) | 接口路由转发方法、***、计算机设备及可读存储介质 | |
CN111124382A (zh) | Java中的属性赋值方法、装置及服务器 | |
CN116339694B (zh) | 低代码平台组件的扩展方法、装置、电子设备及存储介质 | |
CN115357257B (zh) | 一种安装文件生成方法、***、计算设备及存储介质 | |
CN113126982B (zh) | 一种应用程序生成、运行方法及装置 | |
CN108363614B (zh) | 一种应用的业务模块管理方法、装置及服务器 | |
US11017032B1 (en) | Document recovery utilizing serialized data | |
CN112764729A (zh) | 应用软件开发方法、装置、计算机设备及可读存储介质 | |
CN111880922A (zh) | 并发任务的处理方法、装置及设备 | |
CN114021709B (zh) | 多fpga数据处理方法、装置、服务器及存储介质 |
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 |