本申请属于服务调用,尤其涉及一种基于nacos实现服务调用链路可视化的方法及装置。
背景技术:
1、随着业务系统的飞快发展以及微服务技术的应用,各个系统被拆分为多个子服务,在各个子服务中均会依赖其他服务所提供的api接口,造成调用链路错综复杂,再加上不同子服务都由不同开发团队开发,如果没有对服务调用链路加以规范,很容易造成调用混乱的情况。同时由于服务提供方所提供的接口拥有众多服务调用方,如果接口发生变更或者迭代升级时,亦需通知服务调用方检查业务。
2、目前主流的服务链路监控框架如skywalking、sleuth等只是api在真实被调用时监控各个系统的上下游调用链路信息,偏向于事后追踪,无法做到在开发测试阶段识别调用链路,及时规避调用混乱的问题。
技术实现思路
1、有鉴于此,本申请旨在提出一种基于nacos实现服务调用链路可视化的方法及装置,以解决服务链路监控框架仅是api在真实被调用时监控各个系统的上下游调用链路信息,偏向于事后追踪,无法做到在开发测试阶段识别调用链路,及时规避调用混乱的问题。
2、为达到上述目的,本申请的技术方案是这样实现的:
3、第一方面,本申请提供了一种基于nacos实现服务调用链路可视化的方法,所述方法包括:
4、获取服务注册列表;
5、根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;
6、根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。
7、进一步地,所述获取服务注册列表包括:
8、自定义springboot starter组件,各个子服务通过maven依赖管理工具引用所述springboot starter组件;
9、各个子服务启动时,从spring容器中获取nacos注册中心的discoveryclient对象以及拥有@feignclient注解的对象集合;其中,所述discoveryclient表示服务发现操作对象,feignclient表示服务之间调用的操作类。
10、进一步地,所述根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务,包括:
11、识别各个子服务所使用的feignclient;
12、解析所述feignclient中的value值或url作为所依赖的子服务的唯一标识,通过所述唯一标识得到所述服务列表对应的子服务。
13、进一步地,响应于获取普通子服务信息,通过discoveryclient.getinstances方法获取注册至nacos注册中心的所有服务,并获取其服务id、服务ip、服务端口。
14、进一步地,响应于获取api网关路由信息,判断当前spring容器中是否存在routedefinition对象,如果存在则判定为api网关,并获取routedefinition定义的所有服务路由信息。
15、进一步地,依次解析@feignclient注解的对象集合,从feignclient注解中读取相应的属性值,包含服务提供方id、服务提供方名称、服务提供方url参数;
16、将当前服务id与所依赖的服务id的一对多关联关系保存至内存中。
17、进一步地,所述根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示,包括:
18、以api网关为顶层节点,所有路由清单为二级节点,通过所述当前服务id和所依赖的服务id采用遍历的形式获取所有下级节点,直至遍历到最下游节点,以生成链路图;
19、前端页面通过图可视化引擎antv g6将所述链路图进行可视化展示,以展示各节点之间的链路状态。
20、第二方面,基于同一发明构思,本申请还提供了一种基于nacos实现服务调用链路可视化的装置,所述装置包括:
21、获取模块,被配置为获取服务注册列表;
22、服务类型确定模块,被配置为根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;
23、可视化模块,被配置为根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。
24、第三方面,基于同一发明构思,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的一种基于nacos实现服务调用链路可视化的方法。
25、第四方面,基于同一发明构思,本申请还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如第一方面所述的一种基于nacos实现服务调用链路可视化的方法。
26、相对于现有技术,本申请所述的基于nacos实现服务调用链路可视化的方法及装置具有以下有益效果:
27、本申请所述的基于nacos实现服务调用链路可视化的方法及装置,所述方法通过获取服务注册列表,根据服务注册列表明确当前服务类型,并根据当前服务类型确定当前服务调用方与被调用方,根据调用关系生成链路图,并将链路图通过前端页面进行可视化展示,本申请可用于开发测试过程中识别调用链路,提前发现不合理的服务依赖,保证系统的调用链路层次清晰。
1.一种基于nacos实现服务调用链路可视化的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于,所述获取服务注册列表,包括:
3.根据权利要求2所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于,所述根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务,包括:
4.根据权利要求3所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于:
5.根据权利要求3所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于:
6.根据权利要求5所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于:
7.根据权利要求6所述的一种基于nacos实现服务调用链路可视化的方法,其特征在于,所述根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示,包括:
8.一种基于nacos实现服务调用链路可视化的装置,其特征在于,所述装置包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述的一种基于nacos实现服务调用链路可视化的方法。
10.一种非暂态计算机可读存储介质,其特征在于,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1-7任一项所述的一种基于nacos实现服务调用链路可视化的方法。