基于Nacos实现服务调用链路可视化的方法及装置制造方法及图纸

技术编号:39002961 阅读:10 留言:0更新日期:2023-10-07 10:34
本申请提供了一种基于Nacos实现服务调用链路可视化的方法及装置,所述方法包括:获取服务注册列表;根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。本申请所述的基于Nacos实现服务调用链路可视化的方法及装置能够用于开发测试过程中识别调用链路,提前发现不合理的服务依赖,保证系统的调用链路层次清晰。统的调用链路层次清晰。统的调用链路层次清晰。

【技术实现步骤摘要】
基于Nacos实现服务调用链路可视化的方法及装置


[0001]本申请属于服务调用
,尤其涉及一种基于Nacos实现服务调用链路可视化的方法及装置。

技术介绍

[0002]随着业务系统的飞快发展以及微服务技术的应用,各个系统被拆分为多个子服务,在各个子服务中均会依赖其他服务所提供的API接口,造成调用链路错综复杂,再加上不同子服务都由不同开发团队开发,如果没有对服务调用链路加以规范,很容易造成调用混乱的情况。同时由于服务提供方所提供的接口拥有众多服务调用方,如果接口发生变更或者迭代升级时,亦需通知服务调用方检查业务。
[0003]目前主流的服务链路监控框架如Skywalking、Sleuth等只是API在真实被调用时监控各个系统的上下游调用链路信息,偏向于事后追踪,无法做到在开发测试阶段识别调用链路,及时规避调用混乱的问题。

技术实现思路

[0004]有鉴于此,本申请旨在提出一种基于Nacos实现服务调用链路可视化的方法及装置,以解决服务链路监控框架仅是API在真实被调用时监控各个系统的上下游调用链路信息,偏向于事后追踪,无法做到在开发测试阶段识别调用链路,及时规避调用混乱的问题。
[0005]为达到上述目的,本申请的技术方案是这样实现的:
[0006]第一方面,本申请提供了一种基于Nacos实现服务调用链路可视化的方法,所述方法包括:
[0007]获取服务注册列表;
[0008]根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;
[0009]根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。
[0010]进一步地,所述获取服务注册列表包括:
[0011]自定义SpringBoot Starter组件,各个子服务通过Maven依赖管理工具引用所述SpringBoot Starter组件;
[0012]各个子服务启动时,从Spring容器中获取Nacos注册中心的DiscoveryClient对象以及拥有@FeignClient注解的对象集合;其中,所述DiscoveryClient表示服务发现操作对象,FeignClient表示服务之间调用的操作类。
[0013]进一步地,所述根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务,包括:
[0014]识别各个子服务所使用的FeignClient;
[0015]解析所述FeignClient中的value值或Url作为所依赖的子服务的唯一标识,通过所述唯一标识得到所述服务列表对应的子服务。
[0016]进一步地,响应于获取普通子服务信息,通过DiscoveryClient.getInstances方法获取注册至Nacos注册中心的所有服务,并获取其服务ID、服务IP、服务端口。
[0017]进一步地,响应于获取API网关路由信息,判断当前Spring容器中是否存在RouteDefinition对象,如果存在则判定为API网关,并获取RouteDefinition定义的所有服务路由信息。
[0018]进一步地,依次解析@FeignClient注解的对象集合,从FeignClient注解中读取相应的属性值,包含服务提供方ID、服务提供方名称、服务提供方Url参数;
[0019]将当前服务ID与所依赖的服务ID的一对多关联关系保存至内存中。
[0020]进一步地,所述根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示,包括:
[0021]以API网关为顶层节点,所有路由清单为二级节点,通过所述当前服务ID和所依赖的服务ID采用遍历的形式获取所有下级节点,直至遍历到最下游节点,以生成链路图;
[0022]前端页面通过图可视化引擎antv G6将所述链路图进行可视化展示,以展示各节点之间的链路状态。
[0023]第二方面,基于同一专利技术构思,本申请还提供了一种基于Nacos实现服务调用链路可视化的装置,所述装置包括:
[0024]获取模块,被配置为获取服务注册列表;
[0025]服务类型确定模块,被配置为根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;
[0026]可视化模块,被配置为根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。
[0027]第三方面,基于同一专利技术构思,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的一种基于Nacos实现服务调用链路可视化的方法。
[0028]第四方面,基于同一专利技术构思,本申请还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如第一方面所述的一种基于Nacos实现服务调用链路可视化的方法。
[0029]相对于现有技术,本申请所述的基于Nacos实现服务调用链路可视化的方法及装置具有以下有益效果:
[0030]本申请所述的基于Nacos实现服务调用链路可视化的方法及装置,所述方法通过获取服务注册列表,根据服务注册列表明确当前服务类型,并根据当前服务类型确定当前服务调用方与被调用方,根据调用关系生成链路图,并将链路图通过前端页面进行可视化展示,本申请可用于开发测试过程中识别调用链路,提前发现不合理的服务依赖,保证系统的调用链路层次清晰。
附图说明
[0031]构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0032]图1为本申请实施例所述的基于Nacos实现服务调用链路可视化的方法流程图;
[0033]图2为本申请实施例所述的基于Nacos实现服务调用链路可视化装置结构示意图;
[0034]图3为本申请实施例所述的电子设备的结构图。
具体实施方式
[0035]为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
[0036]需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Nacos实现服务调用链路可视化的方法,其特征在于,所述方法包括:获取服务注册列表;根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务;根据调用关系生成链路图,并将所述链路图通过前端页面进行可视化展示。2.根据权利要求1所述的一种基于Nacos实现服务调用链路可视化的方法,其特征在于,所述获取服务注册列表,包括:自定义SpringBoot Starter组件,各个子服务通过Maven依赖管理工具引用所述SpringBoot Starter组件;各个子服务启动时,从Spring容器中获取Nacos注册中心的DiscoveryClient对象以及拥有@FeignClient注解的对象集合;其中,所述DiscoveryClient表示服务发现操作对象,FeignClient表示服务之间调用的操作类。3.根据权利要求2所述的一种基于Nacos实现服务调用链路可视化的方法,其特征在于,所述根据所述服务注册列表明确当前服务类型,并根据所述当前服务类型确定当前服务调用方与被调用方,其中所述当前服务类型包括网关或普通服务,包括:识别各个子服务所使用的FeignClient;解析所述FeignClient中的value值或Url作为所依赖的子服务的唯一标识,通过所述唯一标识得到所述服务列表对应的子服务。4.根据权利要求3所述的一种基于Nacos实现服务调用链路可视化的方法,其特征在于:响应于获取普通子服务信息,通过DiscoveryClient.getInstances方法获取注册至Nacos注册中心的所有服务,并获取其服务ID、服务IP、服务端口。5.根据权利要求3所述的一种基于Nacos实现服务调用链路可视化的方法,其特征在于:响应于获取API网关路由信息,判断当前Spring容器中是否存在RouteDefinition对象,如果存...

【专利技术属性】
技术研发人员:邹虎
申请(专利权)人:紫光云技术有限公司
类型:发明
国别省市:

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

1