CN113098960A - 服务运行方法、装置、服务器及存储介质 - Google Patents
服务运行方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN113098960A CN113098960A CN202110349649.4A CN202110349649A CN113098960A CN 113098960 A CN113098960 A CN 113098960A CN 202110349649 A CN202110349649 A CN 202110349649A CN 113098960 A CN113098960 A CN 113098960A
- Authority
- CN
- China
- Prior art keywords
- service
- running
- precursor
- services
- run
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 239000002243 precursor Substances 0.000 claims abstract description 138
- 230000004044 response Effects 0.000 claims description 69
- 230000015654 memory Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000002452 interceptive effect Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种服务运行方法、装置、服务器及存储介质,属于计算机技术领域。所述方法包括:获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,所述任一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务;响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务。本申请通过使依赖于前驱服务运行完成而开始运行的服务在其所依赖的前驱服务均运行完成时,立即开始运行,在多个服务有序运行的基础上,降低了服务运行的整体耗时。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种服务运行方法、装置、服务器及存储介质。
背景技术
随着计算机技术的发展,Web(World Wide Web,万维网)服务端提供的服务越来越复杂,Web服务端服务通常会依赖下游多个服务,并对下游服务的数据进行聚合输出给客户端来实现相应的功能。
聚合多个服务运行的整体耗时长短对Web服务端的性能具有很大的影响,如何在多个服务有序运行的基础上,降低服务运行的整体耗时,是一个亟待解决的问题。
发明内容
本申请实施例提供了一种服务运行方法、装置、服务器及存储介质,能够在多个服务有序运行的基础上,降低服务运行的整体耗时。所述技术方案如下:
根据本申请实施例的一方面,提供了一种服务运行方法,所述方法包括:
获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,所述任一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务;
响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务。
在一种可能的实现方式中,所述基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务之后,所述方法还包括:
对于所述每个服务,将所述服务对应的还未运行完成的前驱服务的数量,确定为所述服务的数量参数;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于还未开始运行的任一服务的数量参数为0,开始运行所述任一服务;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,所述响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1,包括:
响应于所述任一服务运行完成,调用所述任一服务的回调接口,将所述任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,所述获取多个依赖关系之后,所述方法还包括:
对于所述多个依赖关系中的每个依赖关系,创建所述依赖关系中的前驱服务对应的前驱节点,以及,创建所述依赖关系中的后继服务对应的后继节点;创建从所述前驱节点指向所述后继节点的有向线,所创建的多个节点以及节点与节点之间的有向线构成用顶点表示活动AOV网;
所述对于所述每个服务,将所述服务对应的还未运行完成的前驱服务的数量,确定为所述服务的数量参数,包括:
对于所述AOV网中的每个节点,将所述节点对应的前驱节点的数量确定为所述节点的数量参数。
在另一种可能的实现方式中,所述响应于还未开始运行的任一服务的数量参数为0,开始运行所述任一服务,包括:
响应于所述AOV网中的任一节点的数量参数为0,且所述任一节点对应的服务还未开始运行,开始运行所述任一节点对应的服务;
所述响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1,包括:
响应于所述任一节点对应的服务运行完成,基于所述AOV网中的包括所述任一节点的有向线,确定所述任一节点指向的后继节点;
将所述后继节点的数量参数减1。
在另一种可能的实现方式中,所述多个服务的初始状态为未开始运行,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
将所述任一服务的状态更新为运行中;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
响应于所述任一服务运行完成,将所述任一服务的状态更新为运行完成。
在另一种可能的实现方式中,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于状态为未开始运行的任一服务未对应有前驱服务或者所述任一服务对应的至少一个前驱服务的状态为运行完成,开始运行所述任一服务。
在另一种可能的实现方式中,所述获取多个依赖关系,包括:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有前驱服务的多个第一服务;
创建虚拟的起始服务,所述起始服务为所述多个第一依赖关系包括的多个服务的运行启动接口;
基于所述起始服务和所述多个第一服务,建立多个第二依赖关系,任一第二依赖关系包括所述起始服务和一个第一服务,表示所述一个第一服务在所述起始服务运行完成后才开始运行。
在另一种可能的实现方式中,所述获取多个依赖关系,包括:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有后继服务的多个第二服务;
创建虚拟的终止服务,所述终止服务为所述多个第一依赖关系包括的多个服务的运行终止接口;
基于所述终止服务和所述多个第二服务,建立多个第三依赖关系,任一第三依赖关系包括一个第二服务和所述终止服务,所述多个第三依赖关系表示所述终止服务在所述多个第二服务均运行完成之后才开始运行。
在另一种可能的实现方式中,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之前,所述方法还包括:
响应于所述任一服务对应的任一前驱服务运行完成,获取所述任一前驱服务的运行结果;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于还未开始运行的任一服务对应的至少一个前驱服务运行完成,基于所述任一服务对应的至少一个前驱服务的运行结果,开始运行所述任一服务;或者,
响应于还未开始运行的任一服务未对应有前驱服务,开始运行所述任一服务。
在另一种可能的实现方式中,所述响应于所述任一服务对应的任一前驱服务运行完成,获取所述任一前驱服务的运行结果,包括:
响应于所述任一服务对应的任一前驱服务运行完成,调用所述任一前驱服务的回调接口,得到所述任一前驱服务的运行结果。
根据本申请实施例的另一方面,提供了一种服务运行装置,所述装置包括:
依赖关系获取模块,用于获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,所述任一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
前驱服务确定模块,用于基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务;
服务运行模块,用于响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务。
在一种可能的实现方式中,所述装置还包括:
数量参数确定模块,用于对于所述每个服务,将所述服务对应的还未运行完成的前驱服务的数量,确定为所述服务的数量参数;
所述服务运行模块,用于响应于还未开始运行的任一服务的数量参数为0,开始运行所述任一服务;
数量参数扣减模块,用于响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,所述数量参数扣减模块,用于响应于所述任一服务运行完成,调用所述任一服务的回调接口,将所述任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,所述装置还包括:
AOV网创建模块,用于对于所述多个依赖关系中的每个依赖关系,创建所述依赖关系中的前驱服务对应的前驱节点,以及,创建所述依赖关系中的后继服务对应的后继节点;创建从所述前驱节点指向所述后继节点的有向线,所创建的多个节点以及节点与节点之间的有向线构成AOV网;
所述数量参数确定模块,用于对于所述AOV网中的每个节点,将所述节点对应的前驱节点的数量确定为所述节点的数量参数。
在另一种可能的实现方式中,所述服务运行模块,用于:
响应于所述AOV网中的任一节点的数量参数为0,且所述任一节点对应的服务还未开始运行,开始运行所述任一节点对应的服务;
所述响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1,包括:
响应于所述任一节点对应的服务运行完成,基于所述AOV网中的包括所述任一节点的有向线,确定所述任一节点指向的后继节点;
将所述后继节点的数量参数减1。
在另一种可能的实现方式中,所述多个服务的初始状态为未开始运行,所述装置还包括:
状态更新模块,用于将所述任一服务的状态更新为运行中;响应于所述任一服务运行完成,将所述任一服务的状态更新为运行完成。
在另一种可能的实现方式中,所述服务运行模块,用于响应于状态为未开始运行的任一服务未对应有前驱服务或者所述任一服务对应的至少一个前驱服务的状态为运行完成,开始运行所述任一服务。
在另一种可能的实现方式中,所述依赖关系获取模块,用于:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有前驱服务的多个第一服务;
创建虚拟的起始服务,所述起始服务为所述多个第一依赖关系包括的多个服务的运行启动接口;
基于所述起始服务和所述多个第一服务,建立多个第二依赖关系,任一第二依赖关系包括所述起始服务和一个第一服务,表示所述一个第一服务在所述起始服务运行完成后才开始运行。
在另一种可能的实现方式中,所述依赖关系获取模块,用于:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有后继服务的多个第二服务;
创建虚拟的终止服务,所述终止服务为所述多个第一依赖关系包括的多个服务的运行终止接口;
基于所述终止服务和所述多个第二服务,建立多个第三依赖关系,任一第三依赖关系包括一个第二服务和所述终止服务,所述多个第三依赖关系表示所述终止服务在所述多个第二服务均运行完成之后才开始运行。
在另一种可能的实现方式中,所述装置还包括:
运行结果获取模块,用于响应于所述任一服务对应的任一前驱服务运行完成,获取所述任一前驱服务的运行结果;
所述服务运行模块,用于响应于还未开始运行的任一服务对应的至少一个前驱服务运行完成,基于所述任一服务对应的至少一个前驱服务的运行结果,开始运行所述任一服务;或者,响应于还未开始运行的任一服务未对应有前驱服务,开始运行所述任一服务。
在另一种可能的实现方式中,所述运行结果获取模块,用于响应于所述任一服务对应的任一前驱服务运行完成,调用所述任一前驱服务的回调接口,得到所述任一前驱服务的运行结果。
根据本申请实施例的另一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现上述任一种可能的实现方式所述的服务运行方法。
根据本申请实施例的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现上述任一种可能的实现方式所述的服务运行方法。
根据本申请实施例的另一方面,提供了一种计算机程序或计算机程序产品,所述计算机程序或计算机程序产品包括计算机程序代码,所述计算机程序代码被服务器执行,使得所述服务器实现上述任一种可能的实现方式所述的服务运行方法。
本申请实施例提供的技术方案,针对具有复杂的依赖关系的多个服务,从该多个服务对应的多个依赖关系中,确定了每个服务对应的前驱服务,对于每个还未开始运行的服务,均按照若该服务开始运行并不依赖于其他服务或者该服务开始运行所依赖的前驱服务已运行完成,则开始运行该服务的方式来启动运行,从而依赖于前驱服务运行完成而开始运行的服务能够在其所依赖的前驱服务均运行完成时,立即开始运行,既保证了多个服务的有序运行,又减少了从前驱服务运行完成开始到后继服务开始运行之间的空闲时间,并且,每个服务开始运行之后,与正在运行中的服务并行运行,也降低了多个服务运行所消耗的时间,从而在多个服务有序运行的基础上,降低了服务运行的整体耗时。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种服务运行方法的流程图;
图3是本申请实施例提供的一种多个依赖关系的示意图;
图4是本申请实施例提供的一种服务运行方法的流程图;
图5是本申请实施例提供的一种服务运行方法的流程图;
图6是本申请实施例提供的一种AOV(Activity On Vertex,用顶点表示活动)网的示意图;
图7是本申请实施例提供的一种AOV网的示意图;
图8是本申请实施例提供的一种服务运行过程的示意图;
图9是本申请实施例提供的一种服务运行方法的流程图;
图10是本申请实施例提供的一种服务运行装置的框图;
图11是本申请实施例提供的一种服务器的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。另外,对于术语“至少一个”、“多个”、“每个”、“任一”,至少一个包括一个、两个或两个以上,多个包括两个或两个以上,而每个是指对应的多个中的每一个,任一是指多个中的任意一个。举例来说,多个服务包括3个服务,而每个是指这3个服务中的每一个服务,任一是指这3个服务中的任意一个,可以是第一个,可以是第二个、也可以是第三个。
此外,术语“包括”和“具有”以及它们的任意变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
图1是本申请实施例提供的一种实施环境的示意图。参见图1,该实施环境包括终端110和服务器120。
终端110可以为智能手机、平板电脑、笔记本电脑或者台式计算机等,但并不局限于此。终端110上设有客户端,例如点评类客户端、内容分享类客户端、购物类客户端或者社交类客户端等。
服务器120可以是一台服务器,也可以是由若干台服务器组成的服务器集群或者分布式系统,还可以是一个云计算服务中心。服务器120与终端110通过无线或者有线网络连接,为终端110提供后台服务。
在一种微服务架构中,服务器上部署有多个服务,每个服务具有不同的功能。服务器上还部署有交互接口,该交互接口为终端和多个服务之间的中间层,该交互接口用于接收终端的请求,调用与该请求相关的多个服务来获取响应信息,向终端返回该响应信息。可选地,该交互接口也被称为Web(World Wide Web,万维网)层。
例如,终端响应于订单显示操作,向服务器的交互接口发送信息获取请求,该信息获取请求携带用户账号,用于请求获取该用户账号对应的订单信息;该交互接口接收该信息获取请求,调用订单服务获取该用户账号对应的基础订单信息,该基础订单信息包括至少一个订单编号和每个订单编号对应的至少一个商品编号;该交互接口调用商品服务获取每个商品编号对应的商品信息,以及,调用物流服务,获取每个订单编号对应的物流信息;该交互接口基于获取到的基础订单信息、商品信息和物流信息,生成订单信息,该订单信息包括至少一个订单编号、每个订单编号对应的至少一个商品信息以及每个订单编号对应的物流信息;终端基于接收到的订单信息,显示至少一个订单编号对应的订单,每个订单编号对应的订单包括该订单编号对应的商品信息和物流信息。其中,订单服务具有基础订单信息的查询功能。商品服务具有商品信息的查询功能,商品信息包括商品图像、商品描述文本、商品价格等。物流服务具有物流信息的查询功能,物流信息包括物流状态、商品承运方等,物流状态包括未发货、运输中和已签收。
在微服务架构中,服务器运行多个服务的方式影响着服务运行的整体耗时。例如,若服务器串行运行多个服务,则多个服务运行的整体耗时是多个服务的运行时长之和,会导致终端等待服务器响应的时间过长,信息显示的效率过低,进而导致用户无法及时获取到有效信息,等待时间过长,体验较差,因此,本申请提供了一种服务运行方法,以降低服务运行的整体耗时,提高响应效率,从而减少用户的等待时间,提升用户的体验度,减少用户流失。
图2是本申请实施例提供的一种服务运行方法的流程图。在本申请实施例中,对该服务运行方法进行简要说明,参见图2,该服务运行方法包括以下步骤。
201、服务器获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,表示该后继服务在该前驱服务运行完成后才开始运行。
任一依赖关系包括的两个服务是依赖与被依赖的关系。例如,一个依赖关系中的后继服务的运行需要该依赖关系中的前驱服务的运行结果的支持,也即是,该后继服务依赖于该前驱服务,因此,该后继服务需要在该前驱服务运行完成之后才开始运行。
需要说明的是,前驱服务和后继服务是相对的。在一个依赖关系中,需要先运行完成的服务称为前驱服务;在依赖关系中的另一服务运行完成之后才能开始运行的服务称为后继服务。任一依赖关系包括一个前驱服务和一个后继服务,也可以理解为,任一依赖关系包括一个服务以及该服务对应的前驱服务,或者,任一依赖关系包括一个服务以及该服务对应的后继服务。另外,一个依赖关系包括两个不同的服务,任一服务都不能作为该服务本身对应的前驱服务或者该服务本身对应的后继服务。
例如,一个依赖关系表示为“<s1,s2>”,该依赖关系包括服务s1和服务s2,其中,服务s2在服务s1运行完成之后才能开始运行,服务s2为服务s1对应的后继服务,服务s1为服务s2对应的前驱服务,也可以理解为,该依赖关系包括服务s1以及服务s1对应的后继服务s2,或者,该依赖关系包括服务s2以及服务s2对应的前驱服务s1。
可选地,服务器接收终端或其他服务器发送的请求消息,通过调用与该请求消息相关的多个服务,为终端或其他服务器提供功能支持。为了使多个服务有序运行并降低服务运行的整体耗时,服务器运行该多个服务之前,获取包括该多个服务的多个依赖关系,以基于该多个依赖关系,运行该多个服务。
在一种可能的实现方式中,服务器获取多个依赖关系的步骤包括:服务器接收终端或其他服务器发送的请求消息;从该请求消息中获取请求内容;确定该请求内容对应的多个服务;基于所确定的多个服务,获取多个依赖关系,所获取的每个依赖关系包括该多个服务中的两个服务。
其中,请求内容用于指示服务器进行数据处理,服务器基于该请求内容的指示,从所包括的多个服务中,确定用以完成该请求内容的指示的多个服务。可选地,服务器存储有请求内容与多个服务的对应关系,基于所存储的对应关系,确定该请求内容对应的多个服务。另外,在一些实施例中,请求内容对应一个服务,服务器确定该请求内容对应的一个服务之后,直接运行该服务即可。本申请实施例针对需要运行多个服务的情况进行说明,但并不局限于此。
可选地,服务器存储有多个依赖关系,该多个依赖关系表示该服务器提供的多个服务之间的依赖情况。服务器从所存储的多个依赖关系中,基于所确定的多个服务,进行依赖关系的选取。例如,所确定的多个服务包括服务s1、服务s2、服务s3、服务s4和服务s5,服务器从所存储的多个依赖关系中,获取包括上述多个服务中的两个服务的依赖关系,得到依赖关系<s1,s4>、<s2,s4>和<s3,s5>。
202、服务器基于多个依赖关系,确定多个依赖关系包括的每个服务对应的前驱服务。
对于多个依赖关系包括的每个服务,该服务所属的多个依赖关系能够表示该服务对应的前驱服务的情况以及该服务对应的后继服务的情况。例如,参见图3,多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,该多个依赖关系包括服务s1、服务s2、服务s3、服务s4和服务s5。该多个依赖关系能够表示的每个服务对应的前驱服务和后继服务的情况如下:(1)服务s1和服务s2没有对应的前驱服务;(2)服务s1对应的后继服务为服务s4;(3)服务s2对应的后继服务为服务s4;(3)服务s4对应的前驱服务包括服务s1和服务s2;(4)服务s5对应的前驱服务为服务s3;(5)服务s3对应的后继服务为服务s5;(6)服务s4和服务s5没有对应的后继服务。
因此,基于多个依赖关系,能够确定出每个服务对应的前驱服务。例如,多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,基于该多个依赖关系,能够确定服务s4对应的前驱服务包括服务s1和服务s2,服务s5对应的前驱服务为服务s3。
需要说明的是,可选地,一个服务对应有一个前驱服务;或者,一个服务对应有多个前驱服务;或者,一个服务没有对应的前驱服务;或者,一个服务对应有一个后继服务;或者,一个服务对应有多个后继服务;或者,一个服务没有对应的后继服务,本申请对此不加以限定。
203、服务器响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行该任一服务。
若某一服务还未开始运行,且该服务未对应有还未运行完成的前驱服务,也即是,该服务未对应有前驱服务或者该服务对应的至少一个前驱服务已运行完成,则表示该服务开始运行并不依赖其他服务或者该服务开始运行所依赖的前驱服务已运行完成,当前已达到该服务开始运行的条件,开始运行该服务。需要说明的是,若在该服务开始运行时,已有服务正在运行中,则该服务与运行中的服务并行运行。
例如,多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,其中,服务s1、服务s2和服务s3未对应有前驱服务,服务s1、服务s2和服务s3开始并行运行;若服务s1、服务s2和服务s3开始运行的时间为第0毫秒,且服务s1需要20毫秒运行完成,服务s2需要30毫秒运行完成,服务s3需要50毫秒运行完成,则在第30毫秒,服务s1和服务s2均运行完成时,开始运行服务s4,服务s4与服务s3并行运行;在第50毫秒,服务s3运行完成时,开始运行服务s5。
本申请实施例提供的技术方案,针对具有复杂的依赖关系的多个服务,从该多个服务对应的多个依赖关系中,确定了每个服务对应的前驱服务,对于每个还未开始运行的服务,均按照若该服务开始运行并不依赖于其他服务或者该服务开始运行所依赖的前驱服务已运行完成,则开始运行该服务的方式来启动运行,从而依赖于前驱服务运行完成而开始运行的服务能够在其所依赖的前驱服务均运行完成时,立即开始运行,既保证了多个服务的有序运行,又减少了从前驱服务运行完成开始到后继服务开始运行之间的空闲时间,并且,每个服务开始运行之后,与正在运行中的服务并行运行,也降低了多个服务运行所消耗的时间,从而在多个服务有序运行的基础上,降低了服务运行的整体耗时。
图4是本申请实施例提供的一种服务运行方法的流程图。在本申请实施例中,以服务器基于多个依赖关系以及多个依赖关系中的每个服务的数量参数,来运行多个服务为例进行详细说明,参见图4,该服务运行方法包括以下步骤。
401、服务器获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,任一第一依赖关系表示后继服务在前驱服务运行完成后才开始运行。
步骤401与步骤201同理,在此不再赘述。
402、服务器基于多个第一依赖关系,确定多个第一依赖关系中未对应有前驱服务的多个第一服务。
例如,多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,其中,服务s1、服务s2和服务s3未对应有前驱服务,服务s1、服务s2和服务s3即为多个第一服务。
403、服务器创建虚拟的起始服务,基于起始服务和多个第一服务,建立多个第二依赖关系。
其中,起始服务为多个第一依赖关系包括的多个服务的运行启动接口,是该多个服务开始运行的起点。任一第二依赖关系包括起始服务和一个第一服务,表示一个第一服务在起始服务运行完成后才开始运行。
例如,起始服务表示为服务s0,多个第一服务包括服务s1、服务s2和服务s3,则多个第二依赖关系包括<s0,s1>、<s0,s2>和<s0,s3>。
上述技术方案,为多个未对应有前驱服务的服务创建了一个起始服务,从而服务器查询到该起始服务,即可启动多个服务的运行,相较于服务器查询多个未对应有前驱服务的过程,减少了确定初始运行的服务所消耗的时间,进一步提高了响应效率。
404、服务器基于多个第一依赖关系,确定多个第一依赖关系中未对应有后继服务的多个第二服务。
例如,多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,其中,服务s4和服务s5未对应有后继服务,服务s4和服务s5即为多个第二服务。
405、服务器创建虚拟的终止服务,基于终止服务和多个第二服务,建立多个第三依赖关系。
其中,终止服务为多个第一依赖关系包括的多个服务的运行终止接口,是代表该多个服务运行完成的终止点。任一第三依赖关系包括一个第二服务和终止服务,多个第三依赖关系表示终止服务在多个第二服务均运行完成之后才开始运行。
例如,终止服务表示为服务se,多个第二服务包括服务s4和服务s5,则多个第三依赖关系包括<s4,se>和<s5,se>。
上述技术方案,为多个未对应有后继服务的服务创建了一个终止服务,从而服务器在该终止服务运行完成时,即可确定多个服务运行完成,简化了确定多个服务是否运行完成的过程,减少了确定多个服务是否运行完成所消耗的计算资源,提高了资源利用率。
需要说明的是,上述实施例对建立第二依赖关系以及建立第三依赖关系的先后顺序以先建立第二依赖关系,再建立第三依赖关系为例进行说明,而在一些实施例中,上述服务器建立第二依赖关系和建立第三依赖关系还能够按照其他时序进行。例如,服务器同时建立第二依赖关系和第三依赖关系,也即是同时执行步骤402至步骤403以及步骤404至步骤405;或者,服务器先建立第三依赖关系,再建立第二依赖关系,也即是先执行步骤404至步骤405,再执行步骤402至步骤403,本申请对此不加以限定。
可选地,服务器建立多个第二依赖关系和多个第三依赖关系之后,存储请求内容以及多个第一依赖关系、多个第二依赖关系和多个第三依赖关系的对应关系,在下一次获取到与本次的请求内容相同的请求内容时,即可从该对应关系中,获取该请求内容对应的多个依赖关系,从而减少建立多个依赖关系所消耗的时间,进一步降低服务运行的整体耗时。
406、服务器基于多个依赖关系,确定该多个依赖关系包括的每个服务对应的前驱服务,该多个依赖关系包括多个第一依赖关系、多个第二依赖关系和多个第三依赖关系。
例如,多个依赖关系包括<s0,s1>、<s0,s2>、<s0,s3>、<s1,s4>、<s2,s4>、<s3,s5>、<s4,se>和<s5,se>,基于该多个依赖关系,能够确定服务s1、服务s2和服务s3对应的前驱服务均为服务s0;服务s4对应的前驱服务包括服务s1和服务s2;服务s5对应的前驱服务为服务s3;服务se对应的前驱服务包括服务s4和服务s5。
407、对于每个服务,服务器将该服务对应的还未运行完成的前驱服务的数量,确定为该服务的数量参数。
其中,未运行完成包括未开始运行和运行中两种状态。每个服务的初始状态均为未开始运行,服务器将一个服务对应的前驱服务的数量确定为该服务初始的数量参数即可。
例如,服务s0没有对应的前驱服务,服务s0的数量参数为0;服务s1、服务s2和服务s3对应的前驱服务均为服务s0,服务s1、服务s2和服务s3的数量参数均为1;服务s4对应的前驱服务包括服务s1和服务s2,服务s4的数量参数为2;服务s5对应的前驱服务为服务s3,服务s5的数量参数为1;服务se对应的前驱服务包括服务s4和服务s5,服务se的数量参数为2。
408、服务器响应于还未开始运行的任一服务的数量参数为0,开始运行该任一服务。
还未开始运行的服务的数量参数为0表示该服务没有对应的前驱服务或者该服务对应的前驱服务已运行完成,也即是达到了该服务的运行条件,则开始运行该服务。
若该服务开始运行时,已有服务正在运行中,则该服务与运行中的服务并行运行。例如,若服务s4开始运行时,服务s3正在运行中,则服务s4与服务s3并行运行。可选地,多个服务并行运行以服务的回调能力为基础实现。具有回调能力的服务开始运行之后,服务器不等待该服务产生运行结果,而是继续执行其他操作,例如,开始运行其他还未开始运行且数量参数为0的服务。
在一种可能的实现方式中,每个服务的初始状态均为未开始运行,在多个服务均未开始运行的情况下,数量参数为0表示对应的服务没有对应的前驱服务,服务器从多个依赖关系包括的多个服务中,确定数量参数为0的服务;开始运行数量参数为0的服务。另外,数量参数更新为0表示对应的服务初始的数量参数不为0,也即是该服务对应有至少一个前驱服务,该服务在对应的至少一个前驱服务执行完成之后数量参数才能更新为0,进而才能开始执行,该服务在数量参数更新为0之前一直未开始运行,因此,在该服务的数量参数更新为0时,隐含的表示了该服务还未开始运行,相应的,在多个服务中已经有服务开始运行之后,服务器响应于任一服务的数量参数更新为0,开始运行该任一服务。
上述技术方案,由于每个服务的初始状态均为未开始运行,数量参数更新为0这一操作隐含表示着服务还未开始运行,因此在某一服务的数量参数更新为0时,即可开始运行该服务,省去了判断服务是否还未开始运行的过程,减少了计算资源的消耗,提高了资源利用率。
在另一种可能的实现方式中,服务器存储有每个服务的状态,其中,服务的状态为未开始运行、运行中或者运行完成。每个服务的初始状态均为未开始运行。服务器从多个依赖关系包括的多个服务中,确定状态为未开始运行且数量参数为0的服务;开始运行该服务,以及,将该服务的状态更新为运行中。可选地,服务器周期性地执行从多个依赖关系包括的多个服务中,确定状态为未开始运行且数量参数为0的服务的步骤;或者,服务器响应于任一服务的数量参数更新为0,执行从多个依赖关系包括的多个服务中,确定状态为未开始运行且数量参数为0的服务的步骤,本申请对此不加以限定。
上述技术方案,通过确定开始运行的服务的状态是否为未开始运行,确保了开始运行的服务还未运行过,能够避免服务重复运行,减少不必要的计算资源的消耗,提高资源利用率。
需要说明的是,若上述任一服务未对应有前驱服务,则服务器直接开始运行该任一服务即可,也即是,服务器响应于还未开始运行的任一服务未对应有前驱服务,开始运行该任一服务。若上述任一服务对应有前驱服务,且该任一服务开始运行依赖于对应的前驱服务的运行结果,服务器开始运行该任一服务之前,还响应于该任一服务对应的任一前驱服务运行完成,获取该任一前驱服务的运行结果,相应的,服务器开始运行该任一服务的步骤包括:服务器基于该任一服务对应的至少一个前驱服务的运行结果,开始运行该任一服务。可选地,服务器调用该任一前驱服务的回调接口,得到该任一前驱服务的运行结果。
409、服务器响应于该任一服务运行完成,将该任一服务对应的后继服务的数量参数减1。
其中,任一服务对应的后继服务的数量参数减1表示该后继服务对应的还未运行完成的前驱服务减少了1个。可选地,该任一服务的回调接口封装了将该任一服务对应的后继服务的数量参数减1的功能,服务器响应于该任一服务运行完成,调用该任一服务的回调接口,将该任一服务对应的后继服务的数量参数减1。可选地,服务器在一个进程中运行该任一服务,在该任一服务运行完成时,在该进程中调用该任一服务的回调接口。
可选地,若服务器存储有每个服务的状态,则服务器还响应于该任一服务运行完成,将该任一服务的状态更新为运行完成。可选地,服务器调用该任一服务的回调接口,将该任一服务的状态更新为运行完成。
需要说明的是,服务器循环执行步骤408至步骤409,直至多个依赖关系包括的多个服务均运行完成。
上述技术方案,通过数量参数来记录每个服务对应的还未运行完成的前驱服务的数量,以数量参数为0来表示服务未对应有前驱服务或者对应的前驱服务均已运行完成,也即是达到了服务开始运行的条件,从而通过数量参数是否为0的判断,即可确定是否达到了服务开始运行的条件,减少了确定开始运行的服务所消耗的时间,进一步降低了服务运行的整体耗时。
另外,相关技术中,会根据多个服务之间的依赖关系,对多个服务进行分组;同一分组中的多个服务并行执行,不同分组串行执行,其中,一个分组中的服务与在该分组之前运行的分组中的至少一个服务具有依赖关系。例如,分组一包括3个服务a,b和c,分组二包括2个服务d和e,其中,d依赖于a和b运行完成而开始运行,e依赖于c运行完成而开始运行,那么,先并行运行分组一中的3个服务,分组一中的3个服务全部运行完成之后,再并行运行分组二中的2个服务。相较于相关技术,本申请实施例提供的技术方案不是以一个分组为单位来运行,而是以单个服务为单位,不会等待与某一服务依赖的服务属于同一分组的多个服务全部运行完成之后,再运行该服务,而是在该服务依赖的服务运行完成之后,就开始运行该服务,减少了不必要的等待时间的消耗,极大的降低了服务运行的整体耗时。在实际应用中,本申请实施例提供的技术方案相较于相关技术的方案,使服务运行的整体耗时下降了25%。
图5是本申请实施例提供的一种服务运行方法的流程图。在本申请实施例中,以服务器基于AOV网,进行服务运行为例进行说明,参见图5,该服务运行方法包括以下步骤。
501、服务器获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,表示该后继服务在该前驱服务运行完成后才开始运行。
步骤501与步骤201或步骤401至步骤405同理,在此不再赘述。
502、对于多个依赖关系中的每个依赖关系,服务器创建该依赖关系中的前驱服务对应的前驱节点,以及,创建该依赖关系中的后继服务对应的后继节点;创建从前驱节点指向后继节点的有向线。
其中,所创建的多个节点以及节点与节点之间的有向线构成AOV网。在一个示例中,步骤501与步骤201同理,服务器获取到的多个依赖关系包括<s1,s4>、<s2,s4>和<s3,s5>,服务器创建服务s1对应的节点v1;创建服务s2对应的节点v2;创建服务s3对应的节点v3;创建服务s4对应的节点v4;创建服务s5对应的节点v5;创建从节点v1指向节点v4的有向线;创建从节点v2指向节点v4的有向线;创建从节点v3指向节点v5的有向线,所创建的多个节点以及节点与节点之间的有向线构成了如图6所示的AOV网。
在另一个示例中,服务器创建如图6所示的AOV网之后,还创建虚拟节点v0和虚拟节点ve,创建从虚拟节点v0指向未对应有前驱节点的节点的有向线,创建未对应有后继节点的节点指向虚拟节点ve的有向线,从而得到如图7所示的AOV网。
在另一个示例中,步骤501与步骤401至步骤405同理,相应的,服务器创建得到如图7所示的AOV网。
可选地,服务器创建AOV网之后,存储请求内容以及AOV网的对应关系,在下一次获取到与本次的请求内容相同的请求内容时,即可从该对应关系中,直接获取该请求内容对应的多个依赖关系。
可选地,服务器创建AOV网之后,还构造该AOV网对应的拓扑序列,基于该拓扑序列,运行多个服务,本申请实施例以服务器基于AOV网运行多个服务为例进行说明,但并不局限于此。可选地,服务器构造拓扑序列之后,也可以存储请求内容与拓扑序列的对应关系,在下一次获取到与本次的请求内容相同的请求内容时,即可从该对应关系中,直接获取该请求内容对应的拓扑序列。
503、服务器确定每个服务的数量参数,任一服务的数量参数表示任一服务对应的前驱服务中还未运行完成的前驱服务的数量。
步骤503与步骤407同理,在此不再赘述。
504、对于AOV网中的每个节点,将该节点对应的前驱节点的数量确定为该节点的数量参数。
例如,服务器得到如图7所示的AOV网,其中,节点v0的数量参数为0;节点v1、节点v2和节点v3的数量参数均为1;节点v4的数量参数为2;服务v5的数量参数为1;节点ve的数量参数为2。
可选地,继续参见图7,每个节点还对应有状态参数,状态参数用于表示节点对应的服务的状态。例如,状态参数为0、1或者2,0表示节点对应的服务的状态为未开始运行,1表示节点对应的服务的状态为运行中,2表示节点对应的服务的状态为运行完成。其中,每个节点对应的初始的状态参数为0。
505、服务器响应于AOV网中的任一节点的数量参数为0,且该任一节点对应的服务还未开始运行,开始运行该任一节点对应的服务。
步骤505与步骤408同理,在此不再赘述。
可选地,服务器开始运行该任一节点对应的服务,还更新该任一节点的状态参数,使该任一节点的状态参数表示该任一节点对应的服务正在运行中。例如,服务器将该任一节点对应的状态参数由0更新为1。
506、服务器响应于该任一节点对应的服务运行完成,基于AOV网中的包括该任一节点的有向线,确定该任一节点指向的后继节点,将该后继节点的数量参数减1。
可选地,服务器响应于该任一节点对应的服务运行完成,还更新该任一节点的状态参数,使该任一节点的状态参数表示该任一节点对应的服务运行完成。例如,服务器将该任一节点对应的状态参数由1更新为2。
例如,参见图8,该AOV网中的节点v0初始的数量参数为0;节点v1、节点v2和节点v3初始的数量参数均为1;节点v4初始的数量参数为2;服务v5初始的数量参数为1;节点ve初始的数量参数为2;节点v1、节点v2、节点v3、节点v4和节点v5对应的状态参数均为0。服务器先开始运行数量参数为0且状态参数为0的节点v0对应的服务,将节点v0对应的状态参数由0更新为1;响应于节点v0对应的服务运行完成,将节点v1、节点v2和节点v3的数量参数减1,以及,将节点v0的状态参数由1更新为2;响应于节点v1、节点v2和节点v3的数量参数为0且状态参数为0,开始运行节点v1对应的服务、节点v2对应的服务以及节点v3对应的服务,将节点v1、节点v2和节点v3的状态参数由0更新为1;响应于节点v1对应的服务运行完成,将节点v4对应的数量参数减1,将节点v1的状态参数由1更新为2;响应于节点v3对应的服务运行完成,将节点v5对应的数量参数减1,将节点v3的状态参数由1更新为2;响应于节点v5的数量参数为0且状态参数为0,开始运行节点v5对应的服务,将节点v5对应的状态参数由0更新为1;响应于节点v2对应的服务运行完成,将节点v4对应的数量参数减1,将节点v2的状态参数由1更新为2;响应于节点v4的数量参数为0且状态参数为0,开始运行节点v4对应的服务,将节点v4对应的状态参数由0更新为1;响应于节点v4运行完成,将节点ve对应的数量参数减1,将节点v4对应的状态参数由1更新为2;响应于节点v5运行完成,将节点ve对应的数量参数减1,将节点v5对应的状态参数由1更新为2;响应于节点ve对应的数量参数为0且状态参数为0,开始运行节点ve对应的服务,将节点ve对应的状态参数由0更新为1;响应于节点ve对应的服务运行完成,将节点ve对应的状态参数由1更新为2,至此,AOV网所表示的多个服务运行完成。
上述技术方案,通过构建AOV网来表示多个服务之间的依赖关系,由于AOV网是一种有向无环图,能够表示任意两个服务之间的单向依赖关系,基于AOV网所表示的各个节点之间的先后顺序,来运行节点对应的服务,能够使多个服务有序运行,保证多个服务运行的顺序性。
图9是本申请实施例提供的一种服务运行方法的流程图。在本申请实施例中,以服务器基于服务的状态,进行服务运行为例进行说明,参见图9,该服务运行方法包括以下步骤。
901、服务器获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,表示该后继服务在该前驱服务运行完成后才开始运行。
步骤901与步骤201或者步骤401至步骤405同理,在此不再赘述。
902、服务器基于多个依赖关系,确定多个依赖关系包括的每个服务对应的前驱服务。
步骤902与步骤202同理,在此不再赘述。
903、服务器响应于状态为未开始运行的任一服务未对应有前驱服务或者状态为未开始运行的任一服务对应的至少一个前驱服务的状态均为运行完成,开始运行该任一服务,将该任一服务的运行状态更新为运行中。
服务器存储有服务的状态,服务的状态包括未开始运行、运行中和运行完成。每个服务初始的状态均为未开始运行,服务器会随着服务的运行来更新服务的状态。例如,服务器在服务开始运行时,将服务的状态更新为运行中,在服务运行完成时,将服务的状态更新为运行完成。
服务器从多个服务中确定状态为未开始运行的服务,获取该服务对应的至少一个前驱服务的状态;响应于该服务未对应有前驱服务或者所获取的该至少一个前驱服务的状态均为运行完成,则开始运行该服务。可选地,服务器周期性地执行从多个服务中确定状态为未开始运行的服务,获取该服务对应的至少一个前驱服务的状态的步骤;或者,服务器响应于任一服务的状态更新为运行完成,执行从多个服务中确定状态为未开始运行的服务,获取该服务对应的至少一个前驱服务的状态的步骤,本申请对此不加以限定。
903、服务器响应于该任一服务运行完成,将该任一服务的状态更新为运行完成。
服务器循环执行上述步骤902至903,直至多个依赖关系包括的多个服务均运行完成。
上述技术方案,随着服务运行过程的推进,对服务的状态进行更新,服务的状态不仅仅能够对服务当前运行的状态进行表示,还能够通过与依赖关系结合,来判断是否达到某一服务开始运行的条件,从而实现了对不断更新的服务的状态的有效利用。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图10是本申请实施例提供的一种服务运行装置的框图。参见图10,该装置包括:
依赖关系获取模块1001,用于获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,任一依赖关系表示后继服务在前驱服务运行完成后才开始运行;
前驱服务确定模块1002,用于基于多个依赖关系,确定多个依赖关系包括的每个服务对应的前驱服务;
服务运行模块1003,用于响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行任一服务。
本申请实施例提供的技术方案,针对具有复杂的依赖关系的多个服务,从该多个服务对应的多个依赖关系中,确定了每个服务对应的前驱服务,对于每个还未开始运行的服务,均按照若该服务开始运行并不依赖于其他服务或者该服务开始运行所依赖的前驱服务已运行完成,则开始运行该服务的方式来启动运行,从而依赖于前驱服务运行完成而开始运行的服务能够在其所依赖的前驱服务均运行完成时,立即开始运行,既保证了多个服务的有序运行,又减少了从前驱服务运行完成开始到后继服务开始运行之间的空闲时间,并且,每个服务开始运行之后,与正在运行中的服务并行运行,也降低了多个服务运行所消耗的时间,从而在多个服务有序运行的基础上,降低了服务运行的整体耗时。
在一种可能的实现方式中,该装置还包括:
数量参数确定模块,用于对于每个服务,将服务对应的还未运行完成的前驱服务的数量,确定为服务的数量参数;
服务运行模块1003,用于响应于还未开始运行的任一服务的数量参数为0,开始运行任一服务;
数量参数扣减模块,用于响应于任一服务运行完成,将任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,数量参数扣减模块,用于响应于任一服务运行完成,调用任一服务的回调接口,将任一服务对应的后继服务的数量参数减1。
在另一种可能的实现方式中,该装置还包括:
AOV网创建模块,用于对于多个依赖关系中的每个依赖关系,创建依赖关系中的前驱服务对应的前驱节点,以及,创建依赖关系中的后继服务对应的后继节点;创建从前驱节点指向后继节点的有向线,所创建的多个节点以及节点与节点之间的有向线构成AOV网;
数量参数确定模块,用于对于AOV网中的每个节点,将节点对应的前驱节点的数量确定为节点的数量参数。
在另一种可能的实现方式中,服务运行模块1003,用于:
响应于AOV网中的任一节点的数量参数为0,且任一节点对应的服务还未开始运行,开始运行任一节点对应的服务;
响应于任一服务运行完成,将任一服务对应的后继服务的数量参数减1,包括:
响应于任一节点对应的服务运行完成,基于AOV网中的包括任一节点的有向线,确定任一节点指向的后继节点;
将后继节点的数量参数减1。
在另一种可能的实现方式中,多个服务的初始状态为未开始运行,该装置还包括:
状态更新模块,用于将任一服务的状态更新为运行中;响应于任一服务运行完成,将任一服务的状态更新为运行完成。
在另一种可能的实现方式中,服务运行模块1003,用于响应于状态为未开始运行的任一服务未对应有前驱服务或者任一服务对应的至少一个前驱服务的状态为运行完成,开始运行任一服务。
在另一种可能的实现方式中,依赖关系获取模块1001,用于:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,任一第一依赖关系表示后继服务在前驱服务运行完成后才开始运行;
基于多个第一依赖关系,确定多个第一依赖关系中未对应有前驱服务的多个第一服务;
创建虚拟的起始服务,起始服务为多个第一依赖关系包括的多个服务的运行启动接口;
基于起始服务和多个第一服务,建立多个第二依赖关系,任一第二依赖关系包括起始服务和一个第一服务,表示一个第一服务在起始服务运行完成后才开始运行。
在另一种可能的实现方式中,依赖关系获取模块1001,用于:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,任一第一依赖关系表示后继服务在前驱服务运行完成后才开始运行;
基于多个第一依赖关系,确定多个第一依赖关系中未对应有后继服务的多个第二服务;
创建虚拟的终止服务,终止服务为多个第一依赖关系包括的多个服务的运行终止接口;
基于终止服务和多个第二服务,建立多个第三依赖关系,任一第三依赖关系包括一个第二服务和终止服务,多个第三依赖关系表示终止服务在多个第二服务均运行完成之后才开始运行。
在另一种可能的实现方式中,该装置还包括:
运行结果获取模块,用于响应于任一服务对应的任一前驱服务运行完成,获取任一前驱服务的运行结果;
服务运行模块1003,用于响应于还未开始运行的任一服务对应的至少一个前驱服务运行完成,基于任一服务对应的至少一个前驱服务的运行结果,开始运行任一服务;或者,响应于还未开始运行的任一服务未对应有前驱服务,开始运行任一服务。
在另一种可能的实现方式中,运行结果获取模块,用于响应于任一服务对应的任一前驱服务运行完成,调用任一前驱服务的回调接口,得到任一前驱服务的运行结果。
需要说明的是:上述实施例提供的服务运行装置在运行多个服务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务运行装置与服务运行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图11是本申请实施例提供的一种服务器的框图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1101和一个或一个以上的存储器1102,其中,存储器1102中存储有至少一条程序代码,至少一条程序代码由处理器1101加载并执行以实现上述各个方法实施例提供的服务运行方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,上述至少一条程序代码可由服务器中的处理器执行以完成上述实施例中的服务运行方法。例如,计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
本申请还提供了一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括计算机程序代码,该计算机程序代码被服务器执行,使得该服务器实现上述实施例中的服务运行方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种服务运行方法,其特征在于,所述方法包括:
获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,所述任一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务;
响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务。
2.根据权利要求1所述的方法,其特征在于,所述基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务之后,所述方法还包括:
对于所述每个服务,将所述服务对应的还未运行完成的前驱服务的数量,确定为所述服务的数量参数;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于还未开始运行的任一服务的数量参数为0,开始运行所述任一服务;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1。
3.根据权利要求2所述的方法,其特征在于,所述响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1,包括:
响应于所述任一服务运行完成,调用所述任一服务的回调接口,将所述任一服务对应的后继服务的数量参数减1。
4.根据权利要求2所述的方法,其特征在于,所述获取多个依赖关系之后,所述方法还包括:
对于所述多个依赖关系中的每个依赖关系,创建所述依赖关系中的前驱服务对应的前驱节点,以及,创建所述依赖关系中的后继服务对应的后继节点;创建从所述前驱节点指向所述后继节点的有向线,所创建的多个节点以及节点与节点之间的有向线构成用顶点表示活动AOV网;
所述对于所述每个服务,将所述服务对应的还未运行完成的前驱服务的数量,确定为所述服务的数量参数,包括:
对于所述AOV网中的每个节点,将所述节点对应的前驱节点的数量确定为所述节点的数量参数。
5.根据权利要求4所述的方法,其特征在于,所述响应于还未开始运行的任一服务的数量参数为0,开始运行所述任一服务,包括:
响应于所述AOV网中的任一节点的数量参数为0,且所述任一节点对应的服务还未开始运行,开始运行所述任一节点对应的服务;
所述响应于所述任一服务运行完成,将所述任一服务对应的后继服务的数量参数减1,包括:
响应于所述任一节点对应的服务运行完成,基于所述AOV网中的包括所述任一节点的有向线,确定所述任一节点指向的后继节点;
将所述后继节点的数量参数减1。
6.根据权利要求1所述的方法,其特征在于,所述多个服务的初始状态为未开始运行,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
将所述任一服务的状态更新为运行中;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之后,所述方法还包括:
响应于所述任一服务运行完成,将所述任一服务的状态更新为运行完成。
7.根据权利要求6所述的方法,其特征在于,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于状态为未开始运行的任一服务未对应有前驱服务或者所述任一服务对应的至少一个前驱服务的状态为运行完成,开始运行所述任一服务。
8.根据权利要求1所述的方法,其特征在于,所述获取多个依赖关系,包括:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有前驱服务的多个第一服务;
创建虚拟的起始服务,所述起始服务为所述多个第一依赖关系包括的多个服务的运行启动接口;
基于所述起始服务和所述多个第一服务,建立多个第二依赖关系,任一第二依赖关系包括所述起始服务和一个第一服务,表示所述一个第一服务在所述起始服务运行完成后才开始运行。
9.根据权利要求1所述的方法,其特征在于,所述获取多个依赖关系,包括:
获取多个第一依赖关系,任一第一依赖关系包括一个前驱服务和一个后继服务,所述任一第一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
基于所述多个第一依赖关系,确定所述多个第一依赖关系中未对应有后继服务的多个第二服务;
创建虚拟的终止服务,所述终止服务为所述多个第一依赖关系包括的多个服务的运行终止接口;
基于所述终止服务和所述多个第二服务,建立多个第三依赖关系,任一第三依赖关系包括一个第二服务和所述终止服务,所述多个第三依赖关系表示所述终止服务在所述多个第二服务均运行完成之后才开始运行。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务之前,所述方法还包括:
响应于所述任一服务对应的任一前驱服务运行完成,获取所述任一前驱服务的运行结果;
所述响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务,包括:
响应于还未开始运行的任一服务对应的至少一个前驱服务运行完成,基于所述任一服务对应的至少一个前驱服务的运行结果,开始运行所述任一服务;或者,
响应于还未开始运行的任一服务未对应有前驱服务,开始运行所述任一服务。
11.根据权利要求10所述的方法,其特征在于,所述响应于所述任一服务对应的任一前驱服务运行完成,获取所述任一前驱服务的运行结果,包括:
响应于所述任一服务对应的任一前驱服务运行完成,调用所述任一前驱服务的回调接口,得到所述任一前驱服务的运行结果。
12.一种服务运行装置,其特征在于,所述装置包括:
依赖关系获取模块,用于获取多个依赖关系,任一依赖关系包括一个前驱服务和一个后继服务,所述任一依赖关系表示所述后继服务在所述前驱服务运行完成后才开始运行;
前驱服务确定模块,用于基于所述多个依赖关系,确定所述多个依赖关系包括的每个服务对应的前驱服务;
服务运行模块,用于响应于还未开始运行的任一服务未对应有还未运行完成的前驱服务,开始运行所述任一服务。
13.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1-11任一项所述的服务运行方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1-11任一项所述的服务运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349649.4A CN113098960A (zh) | 2021-03-31 | 2021-03-31 | 服务运行方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110349649.4A CN113098960A (zh) | 2021-03-31 | 2021-03-31 | 服务运行方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113098960A true CN113098960A (zh) | 2021-07-09 |
Family
ID=76672505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110349649.4A Withdrawn CN113098960A (zh) | 2021-03-31 | 2021-03-31 | 服务运行方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113098960A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778568A (zh) * | 2021-09-09 | 2021-12-10 | 网易(杭州)网络有限公司 | 一种服务控制的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132692A1 (en) * | 2007-11-15 | 2009-05-21 | Bea Systems, Inc. | System and method for starting server services |
US20100162245A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Runtime task with inherited dependencies for batch processing |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
CN110609740A (zh) * | 2019-09-19 | 2019-12-24 | 深圳前海微众银行股份有限公司 | 一种确定任务间依赖关系的方法及装置 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
CN112306471A (zh) * | 2020-10-19 | 2021-02-02 | 北京金山云网络技术有限公司 | 一种任务的调度方法和装置 |
US20210049050A1 (en) * | 2019-08-14 | 2021-02-18 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
CN112527474A (zh) * | 2020-12-10 | 2021-03-19 | 北京百度网讯科技有限公司 | 任务处理方法及装置、设备、可读介质、计算机程序产品 |
-
2021
- 2021-03-31 CN CN202110349649.4A patent/CN113098960A/zh not_active Withdrawn
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132692A1 (en) * | 2007-11-15 | 2009-05-21 | Bea Systems, Inc. | System and method for starting server services |
US20100162245A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Runtime task with inherited dependencies for batch processing |
CN109783158A (zh) * | 2019-01-14 | 2019-05-21 | 深圳市脸萌科技有限公司 | 应用启动任务处理方法及装置 |
US20210049050A1 (en) * | 2019-08-14 | 2021-02-18 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
CN110609740A (zh) * | 2019-09-19 | 2019-12-24 | 深圳前海微众银行股份有限公司 | 一种确定任务间依赖关系的方法及装置 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
CN112306471A (zh) * | 2020-10-19 | 2021-02-02 | 北京金山云网络技术有限公司 | 一种任务的调度方法和装置 |
CN112527474A (zh) * | 2020-12-10 | 2021-03-19 | 北京百度网讯科技有限公司 | 任务处理方法及装置、设备、可读介质、计算机程序产品 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778568A (zh) * | 2021-09-09 | 2021-12-10 | 网易(杭州)网络有限公司 | 一种服务控制的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103810023B (zh) | 一种云平台中分布式应用的智能部署方法及系统 | |
CN111506412A (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
CN110677462B (zh) | 多区块链网络的访问处理方法、系统、装置及存储介质 | |
CN112114950A (zh) | 任务调度方法和装置、以及集群管理系统 | |
CN110166507B (zh) | 多资源调度方法和装置 | |
CN113067850B (zh) | 一种多云场景下的集群编排系统 | |
CN113645262A (zh) | 云计算服务系统和方法 | |
CN111221643A (zh) | 任务处理方法和任务处理装置 | |
JP7161560B2 (ja) | 人工知能開発プラットフォームの管理方法及び装置、媒体 | |
CN115550354A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN114116149A (zh) | 一种任务调度方法、装置、设备及介质 | |
CN114840310B (zh) | 容器创建方法、装置、电子设备和计算机可读存储介质 | |
CN117633102A (zh) | 区块链的数据整合方法、装置、计算机设备及存储介质 | |
CN113098960A (zh) | 服务运行方法、装置、服务器及存储介质 | |
CN114490048A (zh) | 任务执行方法、装置、电子设备及计算机存储介质 | |
CN110286954B (zh) | 一种应用程序的启动方法、装置及存储介质 | |
CN114222003A (zh) | 服务调用方法、系统、装置、设备及存储介质 | |
CN113448650A (zh) | 直播功能插件加载方法、装置、设备及存储介质 | |
CN115543647A (zh) | 一种函数调用方法 | |
CN115361382B (zh) | 基于数据群组的数据处理方法、装置、设备和存储介质 | |
CN116821187A (zh) | 基于数据库的数据处理方法、装置、介质和电子设备 | |
CN110929126A (zh) | 一种基于远程过程调用实现的分布式爬虫调度方法 | |
CN110362314A (zh) | 信息处理方法及装置、计算机可读介质、电子设备 | |
CN114116220B (zh) | 一种gpu共享控制方法、gpu共享控制装置及存储介质 | |
CN114237858A (zh) | 一种基于多集群网络的任务调度方法及系统 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210709 |