CN117194063A - 组件调度方法、装置、计算设备以及存储介质 - Google Patents
组件调度方法、装置、计算设备以及存储介质 Download PDFInfo
- Publication number
- CN117194063A CN117194063A CN202310924151.5A CN202310924151A CN117194063A CN 117194063 A CN117194063 A CN 117194063A CN 202310924151 A CN202310924151 A CN 202310924151A CN 117194063 A CN117194063 A CN 117194063A
- Authority
- CN
- China
- Prior art keywords
- component
- components
- sag
- request
- object group
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000004044 response Effects 0.000 claims abstract description 75
- 238000012545 processing Methods 0.000 claims description 30
- 230000000977 initiatory effect Effects 0.000 claims description 29
- 230000002159 abnormal effect Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 8
- 238000005457 optimization Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 15
- 238000012423 maintenance Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种组件调度方法、装置、计算设备以及存储介质,涉及云计算技术领域。在本申请中,计算节点可以通过对已响应请求的组件历史调用信息确定多个组件中每个组件的松弛度,其中,松弛度为组件在不增加已响应请求的响应时长的情况下的最大延迟调用时间长度。然后基于松弛度确定被调度至其他计算节点的组件。这样一来,本申请实施例提供的方法通过根据每个组件的松弛度确定被调度的组件。由于被调度的组件的松弛度较大,因此,在组件调度完成后,当接收到用户输入的服务请求调用组件时,不会增加计算节点响应服务请求的总时长,能够保障用户的使用体验。并且通过对已部署的组件进行调度,能够为节约资源成本提供优化空间。
Description
技术领域
本申请涉及云计算技术领域,特别涉及一种组件调度方法、装置、计算设备以及存储介质。
背景技术
随着云技术的不断发展,云系统的软件架构通常为通过远程过程调用(remoteprocedure call,RPC)将多个组件联结形成服务运行逻辑的微服务体系结构。在微服务体系结构中,为了完成用户的服务请求,需要响应于用户发送的服务请求,调用多个组件以实现对应的服务功能。其中,多个组件可以由网络通信能力作为支撑,分别独立部署在相同或不同的计算节点。出于对组件的部署成本计算节点的负载能力考虑,通常需要将部分已部署的组件在多个计算节点之间进行调度。
相关技术中,通常将已部署的组件中与其他组件之间的通信数据量较小的组件进行调度。然而,这种调度方式在调度完成后,当响应用户发送的服务请求通过RPC调用多个部署在不同计算节点的组件的过程中,由于一些组件可能调度至距离较远的计算节点,因此调用这些组件的时间延迟可能会增加,进而增加计算节点响应服务请求的总时长,导致影响服务质量,从而影响用户的使用体验。
发明内容
本申请提供了一种组件调度方法、装置、计算设备以及存储介质,可以基于多个组件中每个组件的松弛度对组件进行调度,能够减少各组件的资源成本,也就是减少各组件的部署成本。并且在组件调度完成后,不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
为达到上述目的,本申请的实施例采用如下技术方案。
第一方面,本申请提供了一种组件调度方法。该组件调度方法包括:第一节点获取第一指令,第一指令用于指示:将多个组件中的目标数量个组件调度至第二节点。响应于第一指令,获取请求追踪数据,请求追踪数据包括第一节点已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系。根据请求追踪数据,确定多个组件中每个组件的松弛度,松弛度为在不增加已响应请求的响应时长的情况下的组件的最大延迟调用时间长度。根据松弛度从多个组件中确定目标数量个组件,将目标数量个组件部署在第二节点。本申请提供的方法通过根据请求追踪数据确定多个组件中每个组件的松弛度,然后将根据松弛度确定被调度的组件。由于松弛度反映被调度的组件的延迟调用时间长度。因此,在组件调度完成后,当接收到用户输入的服务请求调用组件时,即使组件被调度后的调用时间延迟增加,但是由于松弛度能够给被调度的组件提供延迟调用的灵活度,因此不会增加响应用户的服务请求的总时长,进而能够提升服务质量,从而提升用户的使用体验。
在第一方面的一种可能的实现方式中,根据请求追踪数据,确定多个组件中每个组件的松弛度,包括:根据请求追踪数据确定至少一个对象组,对象组包括一个父组件和至少一个子组件,子组件为父组件调用的下一级组件;确定对象组中每个组件的松弛度,以得到多个组件中每个组件的松弛度。本申请提供的方法通过将多个组件基于请求追踪数据划分为多个对象组,然后确定每个对象组中每个组件的松弛度,进而基于多个组件中每个组件的松弛度对组件进行调度,能够减少各组件的资源成本,也就是减少各组件的部署成本。并且在组件调度完成后,本申请提供的方法不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
在第一方面的一种可能的实现方式中,组件历史调用信息包括已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系;确定对象组中每个组件的松弛度,包括:根据上下级调用关系确定对象组中的父组件的松弛度;根据调用请求发起时间和调用请求响应时间确定对象组中的每个子组件的松弛度。本申请提供的方法通过将多个组件基于请求追踪数据划分为多个对象组,以对象组为单位确定了对象组中每个组件的松弛度,然后基于多个组件中每个组件的松弛度对组件进行调度,能够减少各组件的资源成本,也就是减少各组件的部署成本。并且在组件调度完成后,本申请提供的方法不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
在第一方面的一种可能的实现方式中,根据上下级调用关系确定对象组中的父组件的松弛度,包括:在对象组中的父组件不存在上一级组件的情况下,将父组件的松弛度确定为0。在对象组中的父组件存在上一级组件的情况下,确定父组件在目标对象组中的松弛度,将父组件在目标对象组中的松弛度确定为父组件的松弛度,目标对象组还包括父组件的父组件。本申请提供的方法基于每个组件之间的组件调用关系确定每个对象组中的父组件的松弛度,进而能够得到每个组件的松弛度,然后将松弛度较大的组件确定为被调度的组件,然后基于多个组件中每个组件的松弛度对组件进行调度,能够减少各组件的资源成本,也就是减少各组件的部署成本。并且在组件调度完成后,本申请提供的方法不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
在第一方面的一种可能的实现方式中,根据调用请求发起时间和调用请求响应时间确定对象组中的每个子组件的松弛度,包括:从对象组中确定至少一个子对象组,子对象组包括至少一个子组件,每个子对象组中的子组件按时间顺序依次被串行调用;将对象组包括的多个子组件的调用请求响应时间中的最大值确定为第一时间;将每个子对象组包括的子组件的调用请求响应时间中的最大值确定为第二时间;确定第一时间和每个子对象组对应的第二时间的差值,将差值与每个子对象组中的每个子组件的父组件的松弛度的加和,确定为每个子对象组中的每个子组件的松弛度。本申请提供的方法通过将多个对象组中的每个对象组中的子组件划分为至少一个子对象组,然后基于每个组件的调用请求发起时间和调用请求响应时间确定松弛度,进而能够根据每个组件的松弛度确定被调度的组件,以完成对组件的调度。这样一来,一方面,本申请提供的方法能够减少各组件的资源成本,也就是减少各组件的部署成本。另一方面,本申请提供的方法在组件调度完成后,不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
在第一方面的一种可能的实现方式中,根据松弛度从多个组件中确定目标数量个组件,包括:根据多个组件中每个组件的松弛度多个组件进行降序排序,得到多个组件的松弛度序列;从松弛度序列中确定排序在前的目标数量个组件。本申请提供的方法通过对多个组件按照松弛度进行排序,并将排序中松弛度大的组件确定为被调度的组件。由于被调度的组件的松弛度较大,也可以理解为被调度的组件在不增加已响应请求的响应时长的情况下的最大延迟调用时间长度较大。因此,本申请提供的方法在通过对组件进行调度降低组件的部署成本的情况下,在组件调度完成后,当接收到用户输入的服务请求调用组件时,即使组件被调度后的调用时间延迟增加,但是由于松弛度能够给被调度的组件提供延迟调用的灵活度,因此不会增加响应用户的服务请求的总时长,从而保障用户使用服务的体验。
在第一方面的一种可能的实现方式中,在请求追踪数据包括第一节点的多个已响应请求的组件历史调用信息的情况下,确定多个组件中每个组件的松弛度,包括:基于请求追踪数据,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度;将组件对应的多个已响应请求中每个已响应请求的松弛度的平均值确定为组件的松弛度。本申请提供的方法分别确定多个已响应的服务请求中每个服务请求的工作流对应的多个组件中每个组件的松弛度,能够得到每个组件的多个松弛度,并将多个松弛度的平均值确定为该组件的松弛度。通过多个已响应请求得到的松弛度更能反映组件的实际运行情况,提升组件调度的准确性,避免调度后的组件影响用户的服务质量,从而避免影响用户的使用体验。
在第一方面的一种可能的实现方式中,上述方法还包括:获取第二指令,第二指令用于指示从多个组件中检测异常组件;响应于第二指令,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度,得到每个组件对应的多个松弛度;将对应的多个松弛度中存在大于预设阈值的松弛度的组件确定为异常组件。本申请提供的方法通过在每个组件的多个松弛度中确定大于预设阈值的松弛度,并将存在大于预设阈值的松弛度的组件确定为异常组件,这样一来,本申请提供的方法根据每个组件的多个松弛度能够快速从多个组件中确定出异常组件,节约组件维护时间,降低组件维护成本。
第二方面,本申请提供一种组件调度装置。该组件调度装置包括:获取单元和处理单元。获取单元,用于获取第一指令,第一指令用于指示:将多个组件中的目标数量个组件调度至第二节点;获取单元,还用于响应于第一指令,获取请求追踪数据,请求追踪数据包括第一节点已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系;处理单元,用于根据请求追踪数据,确定多个组件中每个组件的松弛度,每个组件的松弛度用于指示:在不增加已响应请求的响应时长的情况下,每个组件的最大延迟调用时间长度;处理单元,还用于根据松弛度从多个组件中确定目标数量个组件,将目标数量个组件部署在第二节点。
在第二方面的一种可能的实现方式中,处理单元,具体用于根据请求追踪数据确定至少一个对象组,对象组包括一个父组件和至少一个子组件,子组件为父组件调用的下一级组件;确定对象组中每个组件的松弛度,以得到多个组件中每个组件的松弛度。
在第二方面的一种可能的实现方式中,处理单元,具体用于根据上下级调用关系确定对象组中的父组件的松弛度;根据调用请求发起时间和调用请求响应时间确定对象组中的每个子组件的松弛度。
在第二方面的一种可能的实现方式中,处理单元,具体用于在对象组中的父组件不存在上一级组件的情况下,将父组件的松弛度确定为0。在对象组中的父组件存在上一级组件的情况下,确定父组件在目标对象组中的松弛度,将父组件在目标对象组中的松弛度确定为父组件的松弛度,目标对象组还包括父组件的父组件。
在第二方面的一种可能的实现方式中,处理单元,具体用于从对象组中确定至少一个子对象组,子对象组包括至少一个子组件,每个子对象组中的子组件按时间顺序依次被串行调用;将对象组包括的多个子组件的调用请求响应时间中的最大值确定为第一时间;将每个子对象组包括的子组件的调用请求响应时间中的最大值确定为第二时间;确定第一时间和每个子对象组对应的第二时间的差值,将差值与每个子对象组中的每个子组件的父组件的松弛度的加和,确定为每个子对象组中的每个子组件的松弛度。
在第二方面的一种可能的实现方式中,处理单元,具体用于根据多个组件中每个组件的松弛度对多个组件进行降序排序,得到多个组件的松弛度序列;从松弛度序列中确定排序在前的目标数量个组件。
在第二方面的一种可能的实现方式中,在请求追踪数据包括第一节点的多个已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系的情况下,处理单元,具体用于基于请求追踪数据,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度;将组件对应的多个已响应请求中每个已响应请求的松弛度的平均值确定为组件的松弛度。
在第二方面的一种可能的实现方式中,获取单元还用于获取第二指令,第二指令用于指示从多个组件中检测异常组件;处理单元,还用于响应于第二指令,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度,得到每个组件对应的多个松弛度;将对应的多个松弛度中存在大于预设阈值的松弛度的组件确定为异常组件。
在第二方面的一种可能的实现方式中,处理单元,具体用于根据请求追踪数据确定至少一个对象组,对象组包括一个父组件和至少一个子组件,子组件为父组件调用的下一级组件;确定对象组中每个组件的松弛度,以得到多个组件中每个组件的松弛度。
第三方面,本申请提供了一种计算设备。该计算设备包括:处理器和存储器,处理器与存储器连接。存储器用于存储计算机执行指令,处理器执行存储器存储的计算机执行指令,从而实现第一方面提供的任意一种方法。
第四方面,本申请提供了一种计算设备集群。该计算设备集群包括至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,从而实现第一方面提供的任意一种方法。
第五方面,本申请提供了一种芯片。该芯片包括:处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器,用于运行代码指令以执行上述第一方面提供的任意一种方法。
第六方面,本申请提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。
第七方面,本申请提供了一种计算机程序产品。该计算机程序产品包括计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。
其中,第二方面至第七方面中任一种设计方式所带来的技术效果可以参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例示出的一种确定关键路径的过程示意图;
图2为本申请实施例示出的一种组件调度系统的架构示意图;
图3为本申请实施例示出的一种计算设备的硬件结构示意图;
图4为本申请实施例示出的一种组件调度方法的流程示意图;
图5为本申请实施例示出的一种请求追踪数据的示意图;
图6为本申请实施例示出的一种服务请求的工作流的历史执行图;
图7为本申请实施例示出的另一种组件调度方法的流程示意图;
图8为本申请实施例示出的另一种服务请求的工作流的历史执行图;
图9为本申请实施例示出的又一种组件调度方法的流程示意图;
图10为本申请实施例示出的又一种组件调度方法的流程示意图;
图11为本申请实施例示出的又一种组件调度方法的流程示意图;
图12为本申请实施例示出的一种组件调度装置的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。
本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请的一些实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
此外,本申请实施例描述的网络架构以及业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
随着云技术的不断发展,云系统的软件架构通常为通过远程过程调用(remoteprocedure call,RPC)将多个组件联结形成服务运行逻辑的微服务体系结构。在微服务体系结构中,为了完成用户的服务请求,需要响应于用户发送的服务请求,通过调用多个组件形成的工作流能够实现对应的服务功能。其中,多个组件可以由网络通信能力作为支撑,分别独立部署在相同或不同的计算节点。
出于对组件的部署成本考虑,通常需要将部分已部署的组件在多个计算节点之间进行调度。相关技术中,通常首先确定出当前已部署组件的工作流的关键路径,然后将位于关键路径的多个组件中与其他组件之间的通信数据量较小的组件进行调度,以避免组件之间的通讯数据量较大的两个组件分别部署在不同的计算节点,从而避免增加计算节点间的通信网络压力。其中,工作流中从起点到终点的所有路径为工作流的简单路径,关键路径为简单路径中路径长度最长的路径,路径长度为该路径上所有组件的执行时间和调用时间的总和。参见图1,图1为一种确定关键路径的过程示意图,基于请求1和请求2的历史执行图确定每个服务请求的关键路径,其中,请求1的关键路径由A、B、C、D四个组件构成,请求2的关键路径由A、B、C、M四个组件构成,然后对这两个关键路径进行聚合,得到该计算节点的关键路径,如图所示,组件A、B、C、D和M为关键组件,组件X和Y为非关键组件。以及将关键路径上的组件确定为关键组件。然后将位于关键路径的多个组件中与其他组件之间的通信数据量较小的组件进行调度。
然而,由于这种调度方式通常只对关键组件进行考量,并未考虑非关键组件对计算节点的服务请求的响应时间的影响,并且在调度完成后,当响应用户发送的服务请求通过RPC调用多个部署在不同计算节点的组件的过程中,由于组件可能调度至距离较远的计算节点,因此调用该组件的时间延迟可能会增加,进而增加响应服务请求的总时长,导致影响服务质量,从而影响用户的使用体验。
鉴于此,本申请实施例提供了一种组件调度方法,应用于计算节点,通过对已响应请求的组件历史调用信息确定多个组件中每个组件的松弛度。其中,松弛度为组件在不增加已响应请求的响应时长的情况下的最大延迟调用时间长度。换言之,每个服务请求对应的工作流包括的多个并行运行的组件,也就是多个被调用的组件形成并行运行结构。由于每个被调用的组件的运行的路径长度不同,运行较快的组件,相较于较慢组件,存在可松弛的运行时长,也就是延迟调用运行较快的组件不会对运行较慢的组件造成影响,进而增加服务请求的响应总时长。这个可松弛的运行时长即为该组件的松弛度。因此,一方面,本申请实施例提供的方法基于松弛度对组件进行调度,能够降低组件的部署成本,进而为节约资源提供优化空间。另一方面,本申请实施例提供的方法在组件调度完成后,不会增加计算节点响应服务请求的总时长,从而保障用户使用服务的体验。
参见图2,图2为本申请实施例提供的一种组件调度系统的架构示意图,组件调度系统包括第一节点210、第二节点220以及终端设备230。其中,第一节点210和第二节点220部署有多个组件,多个组件用于响应于接收到的服务请求,通过远程过程调用实现对应的服务功能。
其中,本申请实施例提供的组件调度方法可以应用于第一节点210或第二节点220。以下以本申请实施例提供的组件调度方法应用于第一节点210进行示例性说明。
当第一节点210接收到用于指示将目标数量个组件调度至第二节点220的第一指令时,获取请求追踪数据。请求追踪数据为第一节点210接收第一指令之前,响应于终端设备230发送的服务请求调用多个组件实现服务功能时生成的,请求追踪数据包括第一节点210已响应请求的组件历史调用信息。第一节点210根据组件历史调用信息确定已部署的多个组件中每个组件的松弛度,然后根据松弛度从多个组件中确定出被调度的组件,并将被调度的组件部署在第二节点220。
在一些实施例中,第一节点210、第二节点220以及终端设备230之间建立有通信连接。通信连接可以包括有线通信连接或无线通信连接。例如,无线通信连接可以包括蓝牙通信连接、近场通信连接以及无线局域网通信连接等近距离无线通信连接。其中,第一节点210、第二节点220以及终端设备230之间建立无线通信连接的无线通信技术包括但不限于以下的至少一种:无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT)(例如,传统蓝牙或者低功耗(bluetooth low energy,BLE)蓝牙),近距离无线通信(near field communication,NFC),紫蜂(Zigbee),调频(frequency modulation,FM)以及红外(infrared,IR)等。
可以理解的是,本申请实施例中第一节点210和第二节点220可以是部署有任意计算处理能力的计算设备的结算节点,或者是上述计算设备中的功能模块。作为示例,上述计算设备可以是通用计算机、笔记本电脑或服务器等,本申请实施例对第一节点210、第二节点220的具体形式不做特殊限制。
本申请实施例中终端设备230可以为手机、平板电脑、个人计算机(personalcomputer,PC)、个人数字助理(personal digital assistant,PDA)、智能手表、上网本、可穿戴设备、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、车载设备、智慧屏、智能汽车、智能音响、机器人等,本申请对该终端设备230的具体形式不做特殊限制。
并且,第一节点210部署的计算设备、第二节点220部署的计算设备以及终端设备230安装的操作系统包括但不限于或者其他操作系统。本申请对第一节点210、第二节点220以及终端设备230的具体类型、在有安装操作系统下操作系统的类型均不作限制。
为了便于理解,以下实施例以第一节点210、第二节点220为计算设备为例进行示例性说明。
图3示出了本申请实施例提供的计算设备的结构示意图。该计算设备300包括处理器310、存储器320以及至少一个通信接口330。
处理器310可以包括一个或者多个处理核心。处理器310利用各种接口和线路连接计算设备300内的各个部分,通过运行或执行存储在存储器320内的指令、程序、代码集或指令集,以及调用存储在存储器320内的数据,执行计算设备300的各种功能和处理数据。可选的,处理器310可以采用数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmable logicarray,PLA)中的至少一种硬件形式来实现。处理器310可集成中央处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)和调制解调器等中的一种或几种的组合。可以理解的是,上述调制解调器也可以不集成到处理器310中,单独通过一块通信芯片进行实现。
存储器320可用于存储指令、程序、代码、代码集或指令集。存储器320可包括存储程序区。其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如指令接收功能、组件调用功能等),用于实现下文所述各个方法实施例的指令等。
通信接口330,用于与通信网络或通讯网络中的设备通信,如以太网,无线接入网(RAN),无线局域网(wireless local area networks,WLAN)或WLAN网络中的AP等。例如,计算设备300的通信接口330与终端设备230或其他节点部署的计算设备进行通信。
具体实现时,在物理实现上,上述各器件(如处理器310、存储器320和通信接口330)可以是同一个计算设备中的器件;或者,其中的至少两个器件可以设置在同一个计算设备中,即作为一个计算设备中的不同器件,如类似于分布式系统中的设备或器件的部署方式。
可以理解的是,本实施例示意的结构并不构成对计算设备300的具体限定。在一些实施例中,计算设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
以下结合说明书附图,对本申请实施例提供的组件调度方法进行说明。
图4为本申请实施例提供的一种组件调度方法的方法流程图。可选的,该方法可以由上述图2所示的第一节点210执行,也可以理解为由具有图3所示硬件结构的计算设备300执行。该方法可以包括如下步骤:
S11、第一节点获取第一指令,第一指令用于指示:将多个组件中的目标数量个组件调度至第二节点。
具体的,第一节点部署有多个组件,以下为了便于解释,以下将被调度的目标数量个组件称为目标数量个的目标组件,也就是可以理解为目标组件为多个组件中的一个或多个,第一指令用于指示将目标组件调度至第二节点。
在一些实施例中,第一指令可以具体指示将第一节点部署的多个组件中的预设数量个的目标组件调度至第二组件。例如,将第一节点部署的多个组件中的i个组件调度至第二节点,其中,i为正整数。也可以具体指示将第一节点部署的多个组件中的预设比例的目标组件调度至第二节点,例如,将第一节点部署的多个组件中的20%数量的组件调度至第二节点。
应理解的是,上述第一指令可以为用户在第一节点对应的计算设备300显示的界面中输入的,以指示将第一节点部署的多个组件中的一个或多个组件调度至其他节点(例如第二节点)。上述第一指令也可以为用户在与计算设备300通信的部署在其他节点(例如第二节点)的计算设备上输入的,并发送给计算设备300。以指示将第一节点部署的多个组件中的一个或多个组件调度至其他节点。本申请实施例对第一指令的具体输入方式不作特别限制。
具体的,当第一节点确定完成被调度的目标组件后,向第二节点发送组件调度指令,该组件调度指令中携带有被调度的目标组件对应的元数据,第二节点响应于组件调度指令,根据被调度的目标组件对应的元数据将被调度的目标组件部署在第二节点。应理解的是,以上目标组件的调度过程仅为示例性说明,也可以采用其他方式完成目标组件的调度,本申请实施例对此不作特别限制。
S12、第一节点响应于第一指令,获取请求追踪数据。
具体的,当第一节点调用该服务请求对应的多个组件形成工作流时,第一节点部署的一个组件在运行过程中,可能需要作为执行主体调用其他多个并行运行的组件,以接收每个组件返回的数据后实现对应的服务功能,也就是响应接收到的服务请求。第一节点部署的一个组件在运行过程中,也可能需要作为被其他组件调用的并行运行的多个组件中的一个,以向调用这个组件的组件返回数据,以实现服务请求对应的服务功能,也就是响应接收到的服务请求。
请求追踪数据包括第一节点已响应请求包括的工作流对应的多个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系。在第一节点接收上述第一指令之前,第一节点响应于用户输入的服务请求,第一节点调用该服务请求对应的多个组件形成工作流,以实现用户的服务功能。请求追踪数据即为第一节点调用该服务请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系,也可以理解为请求追踪数据包括第一节点响应的每个服务请求的历史执行图。
具体的,该每个组件的调用请求发起时间为调用该组件的组件向这个组件发送调用请求的时间。
每个调用请求响应时间为该组件响应于调用请求向调用这个组件的组件返回数据的时间。
上下级调用关系包括第一节点每个已响应请求对应的多个组件中每个组件的上一级组件和下一级组件。换句话说,上下级调用关系即表征每个服务请求对应的工作流的多个组件中每个组件被哪些组件调用,以及每个组件调用哪些组件的信息。举例来说,组件A被组件B调用,那么组件B即为组件A的上一级组件。组件A即为组件B的下一级组件。同理,组件A调用的组件C就是组件A的下一级组件。
结合上述的请求追踪数据,本实施例提供了一种可能的实现方式,参见图5,图5为本申请实施例示出的一种请求追踪数据的示意图,该示意图中包括第一节点已响应的多个服务请求中每个服务请求对应的多个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系。如图右侧所示,每个组件具有每个服务请求对应的调用请求发起时间和调用请求响应时间。从图左侧也可以看出每个组件的上一级组件和下一级组件,也就是每个组件的上下级调用关系。
在一种可能的实现方式中,上述请求追踪数据基于开源Jeager采样工具获取。其中,Jeager采样工具是一种用于监视和诊断基于微服务体系结构的分布式跟踪系统。应理解的是,以上Jeager采样工具仅为示例性说明,本申请实施例提供的请求追踪数据也可以通过其他工具或实现方式获取,本申请实施例对获取请求追踪数据的具体实现方式不作特别限制。
S13、第一节点根据请求追踪数据,确定多个组件中每个组件的松弛度。
其中,松弛度为在不增加已响应请求的响应时长的情况下的组件的最大延迟调用时间长度。
应理解的是,组件存在松弛度的主要原因在于进行远程服务调用时,每个服务请求对应的工作流包括多个并行运行的组件,也就是多个被调用的组件形成并行运行结构。
由于每个组件的运行的路径长度不同,运行较快的组件(运行路径较短的组件),相较于较慢组件(运行路径较长的组件),存在可松弛的运行时长,也就是适当延时调用运行较快的组件不会对运行较慢的组件造成影响,也不会增加第一节点响应服务请求的总时长。这个可松弛的运行时长即为该组件的松弛度。
示例性的,参见图6,图6为本申请实施例示出的一种服务请求的工作流的历史执行图,该工作流包括3个被调用的组件,分别为组件A、组件B和组件C,从图中可以看出,组件B和组件C为被组件A调用的并行运行的组件,且组件C运行较快,组件B运行较慢,延时调用运行较快的组件C不会对运行较慢的组件B造成影响,因此,组件C相较于组件B存在时间差,即为组件C的松弛度。
以图6提供的示例进行说明,在组件C延迟被调用的时间小于松弛度的情况下,不会影响组件B的正常运行,进而不会增加工作流的运行时间,也就是不会增加该工作流对应的服务请求的响应时长。
在一些实施例中,参见图7,上述S13,具体包括以下步骤:
S131、第一节点根据请求追踪数据确定至少一个对象组,对象组包括一个父组件和至少一个子组件,子组件为父组件调用的下一级组件。
具体的,根据请求追踪数据中的上下级调用关系能够确定每个服务请求的工作流中每个组件的下一级组件。对于一个服务请求对应的工作流包括的多个组件来说,将一个组件和该组件的下一级组件划分为一个对象组,将这个组件确定为父组件,将父组件的下一级组件确定为子组件。进而将一个服务请求对应的工作流包括的多个组件划分为多个对象组。应理解的是,每个对象组仅包括一个父组件和至少一个子组件。在子组件具有下一级组件的情况下,将该子组件和子组件的下一级组件划分为另一个对象组。换言之,一个对象组中仅包括一个父组件和这个父组件的所有的下一级组件。
示例性的,参见图8,图8为本申请实施例示出的一种服务请求的组件历史调用信息的示意图。该服务请求对应的工作流包括组件a、组件b、组件c、组件d、组件e和组件f。从图中可以看出,组件a分别调用组件b、组件c、组件d和组件e,则组件a为组件b、组件c、组件d和组件e的上一级组件。组件e调用组件f,则组件e为组件f的上一级组件。因此基于该组件历史调用信息确定两个对象组,分别为对象组x和对象组y。其中,对象组x包括父组件a、子组件b、子组件c、子组件d和子组件e。对象组y包括父组件d和子组件e。
应理解的是,在一个服务请求的工作流中可能多次调用同一个组件,在这种情况下,在确定对象组的过程中将每次调用的组件分别作为一个子组件划分至相同或不同的对象组,例如在一个工作流中组件o需要调用组件p两次,那么确定的对象组中包括一个父组件o和两个子组件p。例如在另一个工作流中,组件o和组件q分别调用组件p一次,那么确定的对象组为两个,一个对象组包括一个父组件o和子组件p,另一个对象组包括一个父组件q和子组件p。
S132、第一节点确定对象组中每个组件的松弛度,以得到多个组件中每个组件的松弛度。
具体的,对于一个对象组来说,首先确定对象组中父组件的松弛度,然后根据请求追踪数据中的调用请求发起时间、调用请求响应时间确定这个对象组中每个子组件的松弛度,得到对象组中每个组件的松弛度,从而得到部署在第一节点的多个组件中每个组件的松弛度。
在一种可能的实现方式中,参见图9,上述S132,具体包括以下步骤:
S1321、第一节点根据上下级调用关系确定对象组中的父组件的松弛度。
可选地,在对象组中的父组件不存在上一级组件的情况下,将父组件的松弛度确定为0。在对象组中的父组件存在上一级组件的情况下,确定父组件在目标对象组中的松弛度,将父组件在目标对象组中的松弛度确定为父组件的松弛度,目标对象组还包括父组件的父组件。
其中,在一个工作流包括的多个对象组的,在一个组件存在上一级组件和下一级组件的情况下,这个组件分别为一个对象组中的父组件,和另一个对象组中的子组件。将这个组件作为子组件的松弛度确定为这个组件作为父组件的松弛度,也就是这个组件的松弛度。
应理解的是,在对象组中的父组件不存在上一级组件的情况下,说明该父组件为被用户发送的服务请求调用的,那么该父组件无法延迟被调用,因为一旦该父组件延迟,会增加第一节点响应服务请求的总时长,因此将不存在上一级组件的父组件的松弛度确定为0。在对象组中的父组件存在上一级组件的情况下,说明该父组件为被其他组件调用的组件,也就是说明该父组件为目标对象组中的子组件,并且父组件或子组件仅为概念上的划分,因此该组件作为子组件时的松弛度与该组件作为父组件时的松弛度相同,因此就把该组件作为子组件的松弛度确定为该组件的松弛度。
结合上述图8,对象组x中的组件a不存在上一级组件,因此组件a的松弛度为0。对象组y中的父组件e存在上一级组件,那么确定对象组x为组件e的目标对象组,进而确定组件e在对象组x中的松弛度,组件e在对象组x中为组件a的子组件,将组件e在对象组x中的松弛度确定为组件e在对象组y中的松弛度。
S1322、第一节点根据调用请求发起时间和调用请求响应时间确定对象组中的每个子组件的松弛度。
在一种可能的实现方式中,参见图10,上S1322,具体包括以下步骤:
S13221、第一节点从对象组中确定至少一个子对象组,子对象组包括至少一个子组件,每个子对象组中的子组件按时间顺序依次被串行调用。
具体的,按时间顺序依次被串行调用可以理解为每个子对象组中的多个子组件按顺序依次运行,当前一个组件运行完成后,下一个组件才被调用并开始运行。
在一种可能的实现方式中,从对象组中确定至少一个子对象组,具体包括以下步骤:以一个工作流对应的一个对象组为例,首先将该对象组包括的多个子组件的调用请求响应时间中的最大值确定为标记时间,将调用请求响应时间中的最大值对应的组件确定为标记组件1。然后将标记组件1的调用请求发起时间确定为标记时间,然后将调用请求响应时间距离标记时间最近的组件确定为标记组件2,接着然后将标记组件2的调用请求发起时间确定为标记时间。在标记时间之前不存在组件的调用请求响应时间的情况下,将标记组件1和标记组件2确定为一个子对象组。然后基于对象组中除标记组件1和标记组件2之外的其他组件,重复上述步骤,得到至少一个子对象组。
结合图8,以对象组x为例,对象组x包括子组件b、组件c、组件d和组件e。组件b的调用请求响应时间为多个子组件的调用请求响应时间中的最大值,因此将组件b的调用请求响应时间确定为标记时间,将组件b确定为标记组件1。然后将组件b的调用请求发起时间确定为标记时间。然后将调用请求响应时间距离标记时间最近的组件c确定为标记组件2。接着然后将组件c的调用请求发起时间确定为标记时间,在组件c的调用请求发起时间之前不存在其他组件的调用请求响应时间的情况下,将组件b和组件c划分为一个子对象组m。重复上述步骤,将组件d和组件e划分为另一个子对象组n。
同理,以对象组y为例,对象组y只有一个子组件f。划分组件f为一个子对象组l。
这样一来,图8所示的服务请求对应的工作流包括的多个组件被划分为2个对象组,分别为对象组x和对象组y。其中,对象组x包括父组件a和子组件b、c、d和e。对象组x的子组件被划分为2个子对象组分别为子对象组m和子对象组n。子对象组m包括子组件b和子组件c。子对象组n包括子组件d和子组件e。对象组y包括父组件e和子组件f。对象组y的子组件被划分为子对象组l,子对象组l包括子组件f。
S13222、第一节点将对象组包括的多个子组件的调用请求响应时间中的最大值确定为第一时间。
具体的,对象组包括的多个子组件的调用请求响应时间中的最大值即为多个并行运行的子组件的最晚调用请求响应时间。也就是多个并行运行的子组件的调用请求响应时间的约束时间,一旦任一子组件超过上述第一时间,那么将增加响应服务请求的总时长。
示例性的,以上述对象组x为例,组件b的调用请求响应时间为所有子组件的调用请求响应时间的最大值,因此第一时间为组件b的调用请求响应时间。
S13223、第一节点将每个子对象组包括的子组件的调用请求响应时间中的最大值确定为每个子对象组的第二时间。
具体的,子对象组包括的多个子组件的调用请求响应时间中的最大值即为子对象组中多个并行运行的子组件的最晚调用请求响应时间。
示例性的,以上述子对象组m为例,第二时间为组件b的调用请求响应时间。以上述子对象组n为例,第二时间为组件e的调用请求响应时间。
S13224、第一节点确定第一时间和每个子对象组对应的第二时间的差值,将差值与每个子对象组中的每个子组件的父组件的松弛度的加和,确定为每个子对象组中的每个子组件的松弛度。
示例性的,对于子对象组m来说,第一时间和对象组m的第二时间的差值为0,且子对象组m的父组件a的松弛度为0,因此确定子对象组m中子组件b和子组件c的松弛度为0。对于子对象组n来说,第一时间和对象组n对应的第二时间的差值为2ms,且子对象组n的父组件a的松弛度为0,因此确定子对象组n中子组件d和子组件e的松弛度均为2ms。对于子对象组l来说,第一时间和对象组l对应的第二时间的差值为0,但子对象组l的父组件为组件e。且组件e在对象组x中的松弛度为2ms。因此组件f的松弛度为第一时间和对象组l对应的第二时间的差值与组件e的松弛度的加和,等于2ms。
在一些实施例中,在请求追踪数据包括第一节点的多个已响应请求的工作流的组件历史调用信息的情况下,确定多个组件中每个组件的松弛度,包括:基于多个已响应请求的工作流的组件历史调用信息,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度;将组件对应的多个已响应请求中每个已响应请求的松弛度的平均值确定为组件的松弛度。
具体的,每个组件对应的多个已响应请求中每个已响应请求的松弛度也就是每个组件对应每个工作流的松弛度。
应理解的是,请求追踪数据包括多个已响应请求的组件历史调用信息。其中,多个已响应请求可以为同一用户发送的不同服务请求。每个服务请求的工作流分别调用不同的多个组件。多个已响应请求可以为相同用户发送的相同服务请求。每个服务请求的工作流分别调用相同的多个组件。本申请实施例对多个已响应请求的发送用户和对应的工作流调用的具体组件不作特别限制。
在请求追踪数据包括第一节点的多个已响应请求的组件历史调用信息的情况下,计算设备通过执行上述S13,基于每个已响应请求分别确定每个已响应请求的工作流对应的多个组件中每个组件的松弛度。也可以理解为得到每个组件对应每个已响应请求的松弛度,也就是得到每个组件的松弛度样本分布情况。松弛度样本分布情况中包括每个组件对应多个工作流的多个松弛度。然后计算设备确定每个组件对应的多个工作流的多个松弛度的平均值,将每个组件的松弛度的平均值确定为每个组件的松弛度。
示例性的,组件e在请求1对应的工作流中的松弛度为2ms。组件e在请求2对应的工作流中的松弛度为6ms。那么组件e的松弛度为4ms。
应理解的是,在一个服务请求的工作流中可能多次调用同一个组件,那么计算设备通过执行上述S13即可得到这个组件的多个松弛度,在一个组件存在多个松弛度的情况下,这个组件的松弛度等于这个组件所有的松弛度的平均值。换言之,一个组件在多个服务请求的工作流中的多个松弛度和在一个服务请求的工作流中的多个松弛度的平均值为这个组件的松弛度。
在一种可能的实现方式中,上述S13,可通过如下代码实现:
示例性的,将图8所示的工作流对应的请求追踪数据输入上述代码。
每个组件的松弛度的确定过程为:
Parent={a:0}
Children_left={b,c,d,e}
CT={a:[0]}
Children_left not null
List_select=[b,c]
Children_left变成{{d,e}
CT={a:[0],b:[0],c:[0]}
Children_left not null
List_select=[e,d]
Children_left变成{{}
CT={a:[0],b:[0],c:[0],d:[2],e[2]}
Parent={e:2}
Children_left={f}
CT={a:[0],b:[0],c:[0],d:[2],e[2],f[2]}
即可得到组件a、组件b、组件c的松弛度为0ms,组件d、组件e和组件f的松弛度为2ms。
应理解的是,上述代码仅为示例性说明,本申请实施例的松弛度确定方式也可以通过其他代码或程序实现,本申请实施例对此不作特别限制。
S14、第一节点根据松弛度从多个组件中确定目标数量个组件,将目标数量个组件部署在第二节点。
上述S14具体包括以下步骤:根据多个组件中每个组件的松弛度对多个组件进行降序排序,得到多个组件的松弛度序列;从松弛度序列中确定排序在前的目标数量个组件。
具体的,也就是将多个组件中松弛度最大的目标数量个组件确定为将要被调度至第二节点的组件。
示例性的,结合上述图8,组件a、组件b、组件c的松弛度为0ms,组件d、组件e和组件f的松弛度为2ms。得到的松弛度序列为d、e、f、a、b、c。在i=3的情况下,确定将要被调度至第二节点的组件为组件d、组件e和组件f。因此,将图8所示的6个组件中松弛度最大的3个组件,即组件d、组件e和组件f调度至第二节点。
在另一些实施例中,第一指令具体用于指示将预设比例的数量的组件调度至第二节点。
上述S14具体包括以下步骤:根据多个组件中每个组件的松弛度对多个组件进行降序排序,得到多个组件的松弛度序列,从松弛度序列中确定排序在前的预设比例的数量的组件。
示例性的,结合上述图8,组件a、组件b、组件c的松弛度为0ms,组件d、组件e和组件f的松弛度为2ms。得到的松弛度序列为d、e、f、a、b、c。在预设比例为50%的情况下,确定将要被调度至第二节点的组件为组件d、组件e和组件f。因此,将组件d、组件e和组件f调度至第二节点。
由上述S11-S14可知,本申请实施例提供的方法通过根据请求追踪数据确定多个组件中每个组件的松弛度,然后将根据松弛度确定被调度的目标组件。由于松弛度反映被调度的组件的延迟调用时间长度。因此,本申请实施例提供的方法基于松弛度对组件进行调度,能够降低组件的部署成本,进而为节约资源提供优化空间。并且,本申请实施例提供的方法在组件调度完成后,当接收到用户输入的服务请求调用组件时,即使组件被调度后的调用时间延迟增加,但是由于松弛度能够给被调度的组件提供延迟调用的灵活度,因此不会增加响应用户的服务请求的总时长,进而能够提升服务质量,从而提升用户的使用体验。
在以微服务体系结构为软件架构的系统的日常使用过程中,已部署的组件可能会由于故障出现异常或需要优化,相关技术中无法对系统中出现异常或需要优化的异常组件进行准确检测,导致维护时间长、维护成本高,影响用户的使用体验。
在一些实施例中,参见图11,本申请实施例提供的方法还包括以下步骤:
S1101、第一节点获取第二指令,第二指令用于指示从多个组件中检测异常组件。
具体的,第二指令可以为用户在第一节点对应的计算设备300显示的界面中输入的,也可以为用户在与计算设备300通信的部署在其他节点(例如第二节点)的计算设备上输入的,并发送给计算设备300。本申请实施例对第二指令的具体输入方式不作特别限制。
S1102、第一节点响应于第二指令,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度,得到每个组件对应的多个松弛度;
具体的,每个组件对应的多个已响应请求中每个已响应请求的松弛度即为每个组件的松弛度样本分布情况。关于每个组件的松弛度样本分布情况的确定方式见上述实施例的描述,此处不再赘述。
S1103、第一节点将对应的多个松弛度中存在大于预设阈值的松弛度的组件确定为异常组件。
具体的,在一个系统中,对于不同用户发送的服务请求,每个组件的松弛度存在预设范围,当一个组件对应的一个服务请求的松弛度超过预设范围时,说明该组件存在异常,此时将该组件确定为异常组件。
由上述可知,本申请实施例提供的方法通过请求追踪数据确定每个组件的松弛度样本分布情况,然后基于每个组件的松弛度样本分布情况能够对存在异常的组件进行检测,能够节约维护时间,降低维护成本,并且提升用户的使用体验。
上述主要从方法的角度对本申请实施例的方案进行了介绍。可以理解的是,上述计算设备300为了实现上述功能,其包含了执行各个功能相应的硬件结构和软件模块中的至少一个。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对计算设备300进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图12出了本申请实施例提供的一种组件调度装置的结构框图。该装置包括获取单元1201和处理单元1202。获取单元1201,用于获取第一指令,第一指令用于指示:将多个组件中的目标数量个组件调度至第二节点;获取单元1201,还用于响应于第一指令,获取请求追踪数据,请求追踪数据包括第一节点已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系;处理单元1202,用于根据请求追踪数据,确定多个组件中每个组件的松弛度,每个组件的松弛度用于指示:在不增加已响应请求的响应时长的情况下,每个组件的最大延迟调用时间长度;处理单元1202,还用于根据松弛度从多个组件中确定目标数量个组件,将目标数量个组件部署在第二节点。
可选的,处理单元1202,具体用于根据请求追踪数据确定至少一个对象组,对象组包括一个父组件和至少一个子组件,子组件为父组件调用的下一级组件;确定对象组中每个组件的松弛度,以得到多个组件中每个组件的松弛度。
可选的,处理单元1202,具体用于根据上下级调用关系确定对象组中的父组件的松弛度;根据调用请求发起时间和调用请求响应时间确定对象组中的每个子组件的松弛度。
可选的,处理单元1202,具体用于在对象组中的父组件不存在上一级组件的情况下,将父组件的松弛度确定为0。在对象组中的父组件存在上一级组件的情况下,确定父组件在目标对象组中的松弛度,将父组件在目标对象组中的松弛度确定为父组件的松弛度,目标对象组还包括父组件的父组件。
可选的,处理单元1202,具体用于从对象组中确定至少一个子对象组,子对象组包括至少一个子组件,每个子对象组中的子组件按时间顺序依次被串行调用;将对象组包括的多个子组件的调用请求响应时间中的最大值确定为第一时间;将每个子对象组包括的子组件的调用请求响应时间中的最大值确定为第二时间;确定第一时间和每个子对象组对应的第二时间的差值,将差值与每个子对象组中的每个子组件的父组件的松弛度的加和,确定为每个子对象组中的每个子组件的松弛度。
可选的,处理单元1202,具体用于根据多个组件中每个组件的松弛度对多个组件进行降序排序,得到多个组件的松弛度序列;从松弛度序列中确定排序在前的目标数量个组件。
可选的,在请求追踪数据包括第一节点的多个已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和已响应请求对应的多个组件之间的上下级调用关系的情况下,处理单元1202,具体用于基于请求追踪数据,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度;将组件对应的多个已响应请求中每个已响应请求的松弛度的平均值确定为组件的松弛度。
可选的,获取单元1201还用于获取第二指令,第二指令用于指示从多个组件中检测异常组件;处理单元1202,还用于响应于第二指令,确定每个组件对应的多个已响应请求中每个已响应请求的松弛度,得到每个组件对应的多个松弛度;将对应的多个松弛度中存在大于预设阈值的松弛度的组件确定为异常组件。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种组件调度装置的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机指令,该至少一条计算机指令由处理器加载并执行以实现如上各个实施例的组件调度方法。关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述组件调度装置的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述单元或处理器可以是中央处理器,通用处理器、特定电路结构(application specific integrated circuit,ASIC)、微处理器(digitalsignal processor,DSP),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD),或者半导体介质(例如SSD)等。
存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。本领域技术人员应该可以意识到,在上述多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种组件调度方法,其特征在于,应用于第一节点,所述第一节点部署有多个组件,所述方法包括:
获取第一指令,所述第一指令用于指示:将所述多个组件中的目标数量个组件调度至第二节点;
响应于所述第一指令,获取请求追踪数据,所述请求追踪数据包括所述第一节点已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和所述已响应请求对应的多个组件之间的上下级调用关系;
根据所述请求追踪数据,确定所述多个组件中每个组件的松弛度,所述每个组件的松弛度用于指示:在不增加所述已响应请求的响应时长的情况下,所述每个组件的最大延迟调用时间长度;
根据所述松弛度从所述多个组件中确定所述目标数量个组件,将所述目标数量个组件部署在所述第二节点。
2.根据权利要求1所述的方法,其特征在于,所述根据所述请求追踪数据,确定所述多个组件中每个组件的松弛度,包括:
根据所述请求追踪数据确定至少一个对象组,所述对象组包括一个父组件和至少一个子组件,所述子组件为所述父组件调用的下一级组件;
确定所述对象组中每个组件的松弛度,以得到所述多个组件中每个组件的松弛度。
3.根据权利要求1或2所述的方法,其特征在于,所述确定所述对象组中每个组件的松弛度,包括:
根据所述上下级调用关系确定所述对象组中的父组件的松弛度;
根据所述调用请求发起时间和所述调用请求响应时间确定所述对象组中的每个子组件的松弛度。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述上下级调用关系确定所述对象组中的父组件的松弛度,包括:
在所述对象组中的父组件不存在上一级组件的情况下,将所述父组件的松弛度确定为0;
在所述对象组中的父组件存在上一级组件的情况下,确定所述父组件在目标对象组中的松弛度,将所述父组件在所述目标对象组中的松弛度确定为所述父组件的松弛度,所述目标对象组还包括所述父组件的父组件。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述根据所述调用请求发起时间和所述调用请求响应时间确定所述对象组中的每个子组件的松弛度,包括:
从所述对象组中确定至少一个子对象组,所述子对象组包括至少一个子组件,每个所述子对象组中的子组件按时间顺序依次被串行调用;
将所述对象组包括的多个子组件的调用请求响应时间中的最大值确定为第一时间;
将每个所述子对象组包括的子组件的调用请求响应时间中的最大值确定为第二时间;
确定所述第一时间和每个子对象组对应的第二时间的差值,将所述差值与每个所述子对象组中的每个子组件的父组件的松弛度的加和,确定为每个所述子对象组中的每个子组件的松弛度。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述根据所述松弛度从所述多个组件中确定所述目标数量个组件,包括:
根据所述多个组件中每个组件的松弛度对所述多个组件进行降序排序,得到所述多个组件的松弛度序列;
从所述松弛度序列中确定排序在前的目标数量个组件。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述请求追踪数据包括所述第一节点的多个已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和所述已响应请求对应的多个组件之间的上下级调用关系的情况下,确定所述多个组件中每个组件的松弛度,包括:
基于所述请求追踪数据,确定每个所述组件对应的所述多个已响应请求中每个已响应请求的松弛度;
将所述组件对应的所述多个已响应请求中每个已响应请求的松弛度的平均值确定为所述组件的松弛度。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取第二指令,所述第二指令用于指示从所述多个组件中检测异常组件;
响应于所述第二指令,确定每个所述组件对应的所述多个已响应请求中每个已响应请求的松弛度,得到每个组件对应的多个松弛度;
将所述对应的多个松弛度中存在大于预设阈值的松弛度的组件确定为异常组件。
9.一种组件调度装置,其特征在于,应用于第一节点,所述第一节点部署有多个组件,所述装置包括:
获取单元,用于获取第一指令,所述第一指令用于指示:将所述多个组件中的目标数量个组件调度至第二节点;
所述获取单元,还用于响应于所述第一指令,获取请求追踪数据,所述请求追踪数据包括所述第一节点已响应请求对应的多个组件中每个组件的调用请求发起时间、调用请求响应时间和所述已响应请求对应的多个组件之间的上下级调用关系;
处理单元,用于根据所述请求追踪数据,确定所述多个组件中每个组件的松弛度,所述每个组件的松弛度用于指示:在不增加所述已响应请求的响应时长的情况下,所述每个组件的最大延迟调用时间长度;
所述处理单元,还用于根据所述松弛度从所述多个组件中确定所述目标数量个组件,将所述目标数量个组件部署在所述第二节点。
10.一种计算设备,其特征在于,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-8中任一项所述的组件调度方法。
11.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-8中任一项所述的组件调度方法。
12.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1-8中任一项所述的组件调度方法。
13.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1-8中任一项所述的组件调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310924151.5A CN117194063A (zh) | 2023-07-25 | 2023-07-25 | 组件调度方法、装置、计算设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310924151.5A CN117194063A (zh) | 2023-07-25 | 2023-07-25 | 组件调度方法、装置、计算设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194063A true CN117194063A (zh) | 2023-12-08 |
Family
ID=88993133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310924151.5A Pending CN117194063A (zh) | 2023-07-25 | 2023-07-25 | 组件调度方法、装置、计算设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194063A (zh) |
-
2023
- 2023-07-25 CN CN202310924151.5A patent/CN117194063A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112363813A (zh) | 资源调度方法、装置、电子设备和计算机可读介质 | |
CN112465359B (zh) | 算力调用方法和装置 | |
US10404616B2 (en) | Virtual resource automatic selection system and method | |
CN115543577B (zh) | 基于协变量的Kubernetes资源调度优化方法、存储介质及设备 | |
CN111464659A (zh) | 节点的调度、节点的预选处理方法、装置、设备及介质 | |
CN111126895A (zh) | 一种复杂场景下调度智能分析算法的管理仓库及调度方法 | |
CN114911615B (zh) | 微服务运行时智能预测调度的方法及应用 | |
CN113553160A (zh) | 用于人工智能物联网的边缘计算节点任务调度方法及系统 | |
CN112559173A (zh) | 资源调节方法、装置、电子设备和可读存储介质 | |
CN114490086A (zh) | 资源动态调整方法、装置、电子设备、介质和程序产品 | |
CN105260245A (zh) | 一种资源调度方法及装置 | |
CN117596247A (zh) | 基于异构边缘计算系统的资源监控和性能评估的方法 | |
CN111143033B (zh) | 基于可伸缩操作系统的操作执行方法及装置 | |
CN107634978B (zh) | 一种资源调度方法及装置 | |
CN117194063A (zh) | 组件调度方法、装置、计算设备以及存储介质 | |
CN110489219B (zh) | 一种调度功能对象的方法、装置、介质和电子设备 | |
CN110365743B (zh) | 一种基于Zookeeper实现的支持多种可自定义负载算法的负载均衡器实现方法 | |
CN115150437B (zh) | 应用于车辆的自动驾驶系统的节点部署方法、装置及设备 | |
CN111385150A (zh) | 用于获取信息的方法及装置 | |
CN113467892B (zh) | 分布式集群资源配置方法及其相应的装置、设备、介质 | |
CN117633102A (zh) | 区块链的数据整合方法、装置、计算机设备及存储介质 | |
CN113176937B (zh) | 任务处理方法、装置和电子设备 | |
CN117667327A (zh) | 作业调度方法、调度器及相关设备 | |
CN114138444A (zh) | 一种任务调度方法、装置、设备、存储介质及程序产品 | |
CN113778850A (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 |