一种微服务任务调度的方法及装置与流程

文档序号:17079239发布日期:2019-03-09 00:03阅读:543来源:国知局
一种微服务任务调度的方法及装置与流程

本发明涉及云服务技术,尤指一种微服务任务调度的方法及装置。



背景技术:

基于restful(表现层状态转移)接口规范的微服务架构已成为当前java开发的主流架构,应用广泛。每个微服务都是一种资源,比如云平台中的虚拟机、网络、存储等。当前系统平台中,由于没有调度平台,往往一次操作只能创建单种资源,无法满足使用者一次操作创建出多种所需资源的需求。为了解决上述问题,当前的做法是:各微服务自身处理资源间的调度,这使得各微服务之间相互耦合而变得非常复杂。比如,创建在云平台中创建虚拟机,当前的实现方法是:虚拟机微服务要先去查找可用主机、创建硬盘、网络等虚拟机依赖资源,依赖资源准备齐全后才能执行创建虚拟机操作。这使得虚拟机微服务要去处理很多与虚拟机资源本身并不相关的逻辑,既增加了业务复杂性,也不符合restful接口规范,而且也只能创建少量资源,效果不明显。



技术实现要素:

为了解决上述技术问题,本发明提供了一种微服务任务调度的方法及装置,能够实现多资源任务统一调度,无需各微服务单独处理。

为了达到本发明目的,本发明提供了一种微服务任务调度的方法,其中,包括:

接收各微服务资源的注册信息;

根据注册信息中的依赖关系,编排出任务中每个资源的依赖资源;

从无依赖的资源开始调度,创建对应资源,创建完成后,删除依赖该资源的依赖关系,直到所有资源调度完毕。

可选地,所述注册信息包括:资源类型、资源统一资源标识符、依赖资源。

可选地,所述接收微服务任务中涉及到的所有资源的注册信息后,还包括:

对资源类型的唯一性进行校验,如资源类型唯一,则将所述资源类型写入数据库。

可选地,如无依赖的资源有多个,则针对每个无依赖的资源分别生成一个线程进行调度。

可选地,所述从无依赖的资源开始调度的过程中,包括:

如调度失败,则将依赖该资源的所有资源进行标记。

一种微服务任务调度的装置,包括:存储器和处理器;其中:

所述存储器,用于保存用于微服务任务调度的程序;

所述处理器,用于读取执行所述用于微服务任务调度的程序,执行如下操作:

接收各微服务资源的注册信息;

根据注册信息中的依赖关系,编排出任务中每个资源的依赖资源;

从无依赖的资源开始调度,创建对应资源,创建完成后,删除依赖该资源的依赖关系,直到所有资源调度完毕。

可选地,所述注册信息包括:资源类型、资源统一资源标识符、依赖资源。

可选地,所述接收微服务任务中涉及到的所有资源的注册信息后,还包括:

对资源类型的唯一性进行校验,如资源类型唯一,则将所述资源类型写入数据库。

可选地,如无依赖的资源有多个,则针对每个无依赖的资源分别生成一个线程进行调度。

可选地,所述从无依赖的资源开始调度的过程中,包括:

如调度失败,则将依赖该资源的所有资源进行标记。

通过本实施例的方法基于资源的依赖关系统一调度各微服务,可以实现业务资源的统一编排调度执行,实现了一次操作创建多种资源,各微服务无需单独实现资源的复杂调度,大大简化各微服务的业务逻辑处理,使微服务平台更易于开发应用。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例的一种微服务任务调度的方法的流程图;

图2a-图2d为本发明实施例的一种微服务任务调度的方法的示意图;

图3为本发明应用示例的一种微服务任务调度的方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明实施例的一种微服务任务调度的方法的流程图,如图1所示,本实施例的方法可以包括:

步骤101、接收各微服务资源的注册信息;

步骤102、根据注册信息中的依赖关系,编排出任务中每个资源的依赖资源;

步骤103、从无依赖的资源开始调度,创建对应资源,创建完成后,删除依赖该资源的依赖关系,直到所有资源调度完毕。

由于每个业务都由若干资源组成,这些资源之间会存在依赖关系,本发明实施例提出的方法基于资源之间的依赖关系进行编排调度,每次只调度执行无依赖的资源,直至所有资源处理完毕,任务结束,处理过程如下:

图2a:任务开始,包含5个资源,箭头表示依赖关系,首先调度无依赖的资源2和资源5,创建资源2和资源5;

图2b:资源2和资源5完成调度完成后,删除依赖资源2和资源5的依赖关系,然后查找到无依赖的资源3和资源4进行调度,创建资源3和资源4;

图2c:资源3和资源4完成调度完成后,删除依赖资源3和资源4的依赖关系,然后查找到无依赖的资源1进行调度,创建资源1;

图2d:资源递归处理,直至所有资源创建完成,任务结束。

本实施例的一种微服务任务调度的方法,主要包括资源注册、业务编排、业务调度三大步骤。

首先,所有业务微服务模块启动时都要先进行资源注册,注册内容包括资源类型、资源uri、依赖资源;依赖资源用于业务编排业务中不同资源的依赖关系,资源uri供业务调度下发使用。

其次,业务编排主要负责根据注册的资源依赖关系,编排出每个资源的依赖资源;

两者,业务调度基于多线程实现,包含预处理线程和执行线程,预处理线程负责将任务入库,执行线程从数据库查找任务然后逐层筛选调度执行无依赖的资源,直至任务完成。

具体实施过程如下:

1)资源注册

a.业务微服务模块启动时,调用资源注册接口进行注册,注册内容包括资源类型(resourcekey)、资源uri(uniformresourceidentifier,统一资源标识符)、依赖资源;

b.资源注册模块校验resourcekey唯一不重复,写入数据库保存;

2)业务编排

ui下发的任务包含多个资源,业务编排模块根据注册的依赖关系,生成每个资源的依赖资源,填入资源的依赖(rely)字段,同时校验保证不产生循环依赖;

本实施例中,可以采用有向图的遍历算法来校验资源之间是否有循环的依赖关系。

3)业务调度,如图3所示

步骤301、预处理线程首先将任务信息写入数据库,并置为初始化状态;

任务信息可以包括任务id、任务状态、和任务内容。任务内容由一堆资源信息组成,每个资源都包括资源类型、资源创建参数、依赖资源。

步骤302、执行线程去数据库查找初始化状态的任务开始调度执行,同时将任务更新为执行中状态。

步骤303、查找无依赖即rely字段为空的资源,针对每个资源都会生成一个线程调度,创建对应资源,利用多线程提高效率。

步骤304、资源创建完成后,首先判断任务的所有资源是否都完成,若完成,生成任务执行结果,并将任务置为完成(finished)状态;如果任务未结束,执行步骤305。

步骤305、判断资源的执行状态,如果执行成功,则更新剩余资源的rely字段,删除依赖于创建成功的资源的依赖关系,比如资源b依赖资源a,资源b的rely字段包括资源a,资源a成功执行完之后,表示资源b依赖的这个资源已经完成了,因此从资源b的rely字段去掉资源a,然后调用执行线程查找无依赖资源去调度;如果执行失败,则把依赖该资源的所有资源全部表为失败。

通过本方法可以实现业务资源的统一编排调度执行,各微服务无需单独实现资源的复杂调度,大大简化各微服务的业务逻辑处理,使微服务平台更易于开发应用。

本发明实施例还提供了一种计算机可读存储介质,其存储有计算机可执行指令,所述计算机可执行指令被执行时实现所述微服务任务调度的方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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