一种服务的依赖关系的确定方法及装置制造方法及图纸

技术编号:35273999 阅读:28 留言:0更新日期:2022-10-19 10:50
本说明书一个或多个实施例提供一种服务间依赖关系的确定方法,该方法包括:响应于调用所述类方法的服务调用请求,对所述服务调用请求进行分布式链路追踪以生成与所述服务调用请求对应的调用链路;基于所述调用链路中类方法之间的调用关系,确定所述类方法之间的依赖关系;基于所述调用链路中的调用数据自动生成与所述类方法对应的类方法间调用脚本;对所述被调用方的类方法进行故障代码注入,并在故障代码注入完成后执行与所述类方法间调用脚本,并根据执行结果来确定所述类方法之间的依赖关系的强弱程度;基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系。依赖关系。依赖关系。

【技术实现步骤摘要】
一种服务的依赖关系的确定方法及装置


[0001]本说明书一个或多个实施例涉及计算机
,尤其涉及一种服务的依赖关系的确定方法、装置、电子设备及机器可读存储介质。

技术介绍

[0002]单体架构应用是指将所有的业务场景的表现层、业务逻辑层、数据访问层放在一个工程中,经过编译、打包后,可以部署在一台服务器上的应用程序,单体架构的应用只需要通过建立一个工程就可以完成一个应用的开发,因此具有开发速度快、成本低的特点。但是随着业务的发展,业务逻辑越来越复杂,需要在原有代码中不断新增新的代码,因此使得该工程内的代码量暴增,导致代码的可读性和可维护性较低,不利于后期该应用的数据维护。基于此,提出了微服务架构应用。
[0003]微服务架构是指将一个大型的单个应用程序和服务拆分成多个更小的服务,每个服务运行在其独立的进程中。通过多个服务之间相互调用共同完成一个业务对应的程序。微服务架构通常采用多层结构,并逐层调用服务节点程序提供服务。微服务架构可以通过扩展单个组件,来满足服务等级协议。每个服务中包含至少一个类方法,对服务的调用实际是对其类方法的调用。因此,在对服务进行扩展时,实际可以是对服务中的类方法进行扩展。
[0004]利用这一特性,在微服务架构的应用中,如需扩展新的业务或者新的功能时,只需要通过在特定的某种服务中增加所需功能、或者新增某种服务的方式,来实现新业务或者新功能,并且也不会对应用整体进程的架构有其他影响。

技术实现思路

[0005]本申请提供一种服务间依赖关系的确定方法,应用于采用微服务架构的分布式服务系统中,所述分布式服务系统包含至少两个服务,所述服务包含至少一个类方法,所述方法包括:
[0006]响应于调用所述类方法的服务调用请求,对所述服务调用请求进行分布式链路追踪以生成与所述服务调用请求对应的调用链路;其中,所述调用链路包括在调用方的类方法调用被调用方的类方法的过程中所生成的调用数据及所述类方法之间的调用关系;
[0007]基于所述调用链路中类方法之间的调用关系,确定所述类方法之间的依赖关系;
[0008]基于所述调用链路中的调用数据自动生成与所述类方法对应的类方法间调用脚本;
[0009]对所述被调用方的类方法进行故障代码注入,并在故障代码注入完成后执行与所述类方法间调用脚本,并根据执行结果来确定所述类方法之间的依赖关系的强弱程度;
[0010]基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系。
[0011]可选的,所述类方法间调用脚本包括测试脚本;所述根据执行结果来确定所述类
方法之间依赖关系的强弱程度,包括:确定所述测试脚本是否执行成功;如果所述测试脚本执行成功,则确定所述类方法之间的依赖关系为弱依赖关系;如果所述测试脚本执行不成功,则清除所述故障代码,并再次执行所述类方法间调用脚本;如果所述测试脚本执行成功,则确定所述类方法之间的依赖关系为强依赖关系。
[0012]可选的,所述故障代码包括超时故障代码;所述确定所述测试脚本是否执行成功,包括:在执行所述测试脚本之后,确定是否在预设的延时时长内获取到所述测试脚本的执行结果;如果是,则确定所述测试脚本执行成功;反之,则确定所述测试调用脚本执行失败。
[0013]可选的,所述被调用方的类方法的执行代码中包含所述故障代码,其中,所述故障代码的执行状态默认为不可执行状态;所述对所述被调用方的类方法进行故障代码注入包括将所述故障代码的执行状态从不可执行状态更新为可执行状态;所述清除所述故障代码,包括:响应于清除故障代码的指令,将所述故障代码的执行状态从可执行状态更新为不可执行状态。
[0014]可选的,所述调用方的类方法包含于调用方服务;所述被调用方的类方法包含于被调用方服务;所述基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系,包括:如果所述调用方服务与所述被调用方服务之间为直接调用关系,则确定所述调用方服务与所述被调用方服务分别包含的类方法之间的依赖关系中是否包含有强依赖关系;如果是,则确定所述调用方服务与所述被调用方服务之间的依赖关系为强依赖关系;反之,则确定所述调用方服务与所述被调用方服务之间的依赖关系为弱依赖关系。
[0015]可选的,所述方法还包括:如果所述调用方服务与所述被调用方服务之间为间接调用关系,则确定所述调用方服务与所述被调用方服务之间的调用链路中为直接调用关系的服务之间是否存在弱依赖关系;如果是,则确定所述调用方服务与所述被调用方服务之间的依赖关系为弱依赖关系;反之,则确定所述调用方服务与所述被调用方服务之间的依赖关系为强依赖关系。
[0016]可选的,所述方法还包括:基于所述服务间的依赖关系,构建服务间依赖关系图,并将所述依赖关系图向测试人员进行输出展示。
[0017]本申请还提供一种服务间依赖关系的确定装置,应用于采用微服务架构的分布式服务系统中,所述分布式服务系统包含至少两个服务,所述服务包含至少一个类方法,所述装置包括:
[0018]类方法调用链路生成模块,用于响应于调用所述类方法的服务调用请求,对所述服务调用请求进行分布式链路追踪以生成与所述服务调用请求对应的调用链路;其中,所述调用链路包括在调用方的类方法调用被调用方的类方法的过程中所生成的调用数据及所述类方法之间的调用关系;
[0019]依赖关系确定模块,用于基于所述调用链路中类方法之间的调用关系,确定所述类方法之间的依赖关系;
[0020]类方法间调用脚本生成模块,用于基于所述调用链路中的调用数据自动生成与所述类方法对应的类方法间调用脚本;
[0021]类方法间依赖关系的强弱程度确定模块,用于对所述被调用方的类方法进行故障代码注入,并在故障代码注入完成后执行与所述类方法间调用脚本,并根据执行结果来确
定所述类方法之间的依赖关系的强弱程度;
[0022]服务间依赖关系的强弱程度确定模块,用于基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系;
[0023]依赖关系展示模块,用于基于所述服务间的依赖关系,构建服务间依赖关系图,并将所述依赖关系图向测试人员进行输出展示。
[0024]本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
[0025]所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。
[0026]本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
[0027]以上技术方案具有如下的技术效果:
[0028]第一方面,由于可以通过分布式链路追踪技术,来生成针对至少两个类方法组成的调用链路,并基于该调用链路来确定该链路上的类方法之间的依赖关系,可以不再基于类方法之间互相调用所产生的调用数据来分析上述类方法之间的依赖关系;因此,本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种服务间依赖关系的确定方法,应用于采用微服务架构的分布式服务系统中,所述分布式服务系统包含至少两个服务,所述服务包含至少一个类方法,其特征在于,所述方法包括:响应于调用所述类方法的服务调用请求,对所述服务调用请求进行分布式链路追踪以生成与所述服务调用请求对应的调用链路;其中,所述调用链路包括在调用方的类方法调用被调用方的类方法的过程中所生成的调用数据及所述类方法之间的调用关系;基于所述调用链路中类方法之间的调用关系,确定所述类方法之间的依赖关系;基于所述调用链路中的调用数据自动生成与所述类方法对应的类方法间调用脚本;对所述被调用方的类方法进行故障代码注入,并在故障代码注入完成后执行与所述类方法间调用脚本,并根据执行结果来确定所述类方法之间的依赖关系的强弱程度;基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系。2.根据权利要求1所述的方法,其特征在于,所述类方法间调用脚本包括测试脚本;所述根据执行结果来确定所述类方法之间依赖关系的强弱程度,包括:确定所述测试脚本是否执行成功;如果所述测试脚本执行成功,则确定所述类方法之间的依赖关系为弱依赖关系;如果所述测试脚本执行不成功,则清除所述故障代码,并再次执行所述类方法间调用脚本;如果所述测试脚本执行成功,则确定所述类方法之间的依赖关系为强依赖关系。3.根据权利要求2所述的方法,其特征在于,所述故障代码包括超时故障代码;所述确定所述测试脚本是否执行成功,包括:在执行所述测试脚本之后,确定是否在预设的延时时长内获取到所述测试脚本的执行结果;如果是,则确定所述测试脚本执行成功;反之,则确定所述测试调用脚本执行失败。4.根据权利要求2所述的方法,其特征在于,所述被调用方的类方法的执行代码中包含所述故障代码,其中,所述故障代码的执行状态默认为不可执行状态;所述对所述被调用方的类方法进行故障代码注入包括将所述故障代码的执行状态从不可执行状态更新为可执行状态;所述清除所述故障代码,包括:响应于清除故障代码的指令,将所述故障代码的执行状态从可执行状态更新为不可执行状态。5.根据权利要求1所述的方法,其特征在于,所述调用方的类方法包含于调用方服务;所述被调用方的类方法包含于被调用方服务;所述基于所述类方法之间依赖关系的强弱程度,确定所述类方法对应服务之间的依赖关系,包括:如果所述调用方服务与所述被调用方服务之间为直接调用关系,则确定所述调用方服务与所述被调用方服务分别包含的类方法之间的依赖关系中是否包...

【专利技术属性】
技术研发人员:王晓虎肖启川汪亮
申请(专利权)人:浙江吉利控股集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1