一种基于AOP注解的调用链追踪与业务分析方法技术

技术编号:32129033 阅读:15 留言:0更新日期:2022-01-29 19:24
本发明专利技术公开了一种基于AOP注解的调用链追踪与业务分析方法,包括在开发时加入注解,发起调用链追踪;用日志记录调用链信息,TraceID将微服务和调用关系串联;在微服务调用链间加StepID,标识调用链中服务调用的嵌套关系;进行双向关联并建立调用链与业务间的关系,用日志记录调用链TraceID与业务ID之间的关系;进行判断系统是否异常,若没有异常,判断追踪是否结束;若异常,定位并用日志标记异常信息,判断追踪是否结束;最后开发人员从不同维度查询日志和异常信息进行优化代码解决异常。本发明专利技术通过记录调用链和业务之间的关系,实现微服务调用链和业务分析功能,当程序发生异常时,从调用链和业务两个方面入手排查定,帮助开发人员快速定位异常修复漏洞。员快速定位异常修复漏洞。员快速定位异常修复漏洞。

【技术实现步骤摘要】
一种基于AOP注解的调用链追踪与业务分析方法


[0001]本专利技术涉及微服务调用链追踪
,具体来说,涉及一种基于AOP注解的调用链追踪与业务分析方法。

技术介绍

[0002]近年来,随着互联网的迅速发展,对软件交付、迭代速度和运行效率的要求越来越高,微服务架构应运而生,并且凭借其简单清晰、灵活可扩展、独立部署等优势,越来越成为了分布式架构中的主流。
[0003]OpenTracing是分布式跟踪系统,当我们把系统拆成服务化、分布式系统的时候,查询一个问题,很可能需要登录多台机器。OpenTracing通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。OpenTracing中的调用链通过归属于此调用链的Span来隐性的定义。一条调用链可以被认为是一个由多个Span组成的有向无环图。Span可以理解为一次方法调用, 一个程序块的调用, 或者一次RPC/数据库访问。OpenTracing给调用链的追踪与分析提供了一个可依据的标准。
[0004]在分布式架构下,应用中的业务逻辑就变成微服务之间的请求与调用。在业务情况复杂的情况下,一个前端请求需要调用多个微服务共同完成,同时一个微服务也不仅仅给一个前端应用提供服务。随着请求与调用的不断增加,系统内部的调用路径就变得纷繁复杂,一旦系统出现异常,很难从海量的调用数据中准确定位异常。分布式应用在提高了软件开发运行效率的同时,加大了运维难度,更加大了对异常服务和异常业务的定位与分析。

技术实现思路

[0005]针对相关技术中的上述技术问题,本专利技术提出一种基于AOP注解的调用链追踪与业务分析方法,能够克服现有技术方法的上述不足。
[0006]为实现上述技术目的,本专利技术的技术方案是这样实现的:一种基于AOP注解的调用链追踪与业务分析方法,包括以下步骤:S1: Spring Boot框架在服务开发时,加入注解发起调用链的追踪;S2: 然后,用日志记录发起的调用链的信息,通过TraceID将一次请求所涉及的若干微服务和调用关系串联在一起;S3: 再在所述若干微服务调用链之间加入StepID,通过圆点分隔的形式来标识调用链中服务调用的嵌套关系;S4: 进行双向关联调用链和对应业务,在用日志记录调用链信息和业务信息的基础上,建立调用链与业务之间的关系,在调用链追踪的同时,再用日志记录调用链TraceID与业务ID之间的关系;S5:进行判断系统是否出现异常,若没有出现异常,再判断追踪是否结束;若出现异常,定位异常,再用日志标记所有出现的异常信息,再判断追踪是否结束;所述判断追踪是否结束时,若结束,最后执行一次查询供分析,若没有结束,重新调用记录调用链信息进
行执行;S6:最后,在记录日志信息的基础上,开发人员根据TraceID、业务ID的信息,从不同的维度查询日志信息和异常信息,进行优化代码,解决异常问题。
[0007]进一步地,步骤S4中,所述调用链信息包括TraceId、调用链深度Step、用于标识服务调用嵌套层级关系的StepID、微服务信息以及请求信息。
[0008]进一步地,步骤S4中,所述业务信息包括业务ID、业务名称和业务类型。
[0009]进一步地,所述微服务相关信息包括微服务ID、微服务名称、IP和方法名称,所述请求信息包括调用的地址Url信息和请求头Header信息。
[0010]进一步地,步骤S5中,定位异常是通过以发生异常的调用链或发生异常的业务ID为切入点进行异常定位。
[0011]进一步地,所述以发生异常的调用链为切入点进行异常定位时,是根据该调用链的TraceID对该调用链经过的服务层逐层排查,查看各服务运行状态、响应时间、调用地址、服务名称以及方法名称的参数,定位出异常所在的服务层、方法或代码块,然后进行解决异常,恢复系统正常。
[0012]进一步地,所述以发生异常的业务ID为切入点进行异常定位时,查询业务ID、业务名称、业务类型、服务名称、调用地址及响应时间的参数,通过对比分析来定位异常和修复程序。
[0013]进一步地,记载有调用链信息、业务信息和调用链与业务之间的关系信息的日志信息的存储方式,是通过将所述日志信息异步发布到一个监听线程池来处理,从原业务系统完全独立出来,通过独立的监听线程池将日志消息发到消息队列MQ,当本次调用结束或发生异常时,通知消息队列MQ进行日志信息的存储。
[0014]本专利技术的有益效果:通过采用加入注解的方式,记录调用链相关信息,同步记录调用链和业务之间的关系信息,从而可以达到代码埋点的目的;同时通过日志的形式记录调用链及业务之间的关系和通过日志分析调用链在服务间的传递,进一步分析在调用链中的业务情况,实现微服务调用链和业务分析功能;当程序发生异常时,可以从调用链和业务两个方面入手排查定,进一步从不同的维度分析定位到异常的具体位置,从而帮助开发人员快速排查代码错误,优化程序、修复漏洞。
附图说明
[0015]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]图1是根据本专利技术实施例所述的基于AOP注解的调用链追踪与业务分析方法的调用链追踪和业务关联记录流程图。
[0017]图2是根据本专利技术实施例所述的基于AOP注解的调用链追踪与业务分析方法的调用链服务嵌套示意图。
具体实施方式
[0018]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围,为了方便理解本专利技术的上述技术方案,以下通过具体使用方式上对本专利技术的上述技术方案进行详细说明。
[0019]如图1所示,根据本专利技术实施例所述的基于AOP注解的调用链追踪与业务分析方法,步骤包括:首先,Spring Boot框架在服务开发时,加入少量注解@BizLog,用于记录调用链相关信息,同步记录调用链和业务之间的关系信息,从而达到代码埋点的目的,从而发起调用链的追踪。
[0020]在调用链启动后,需要自动记录和存储包括有调用链信息、业务信息、调用链与业务关联信息的日志信息。具体的存储方式是通过将所述日志信息异步发布到一个监听线程池来处理,从原业务系统完全独立出来,通过独立的监听线程池将日志消息发到消息队列MQ,当本次调用结束或发生异常时,通知消息队列MQ进行日志信息的存储。同时,在程序发生异常时,进行异常信息标记,便于在大量日志信息中查找相关异常信息。
[0021]然后,用日志记录发起的调用链的信息,通过TraceID将一次请求所涉及的若干微服务和调用关系串联在一起,再在所述若干微服务调用链之间加入StepID(Step:微服务本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于AOP注解的调用链追踪与业务分析方法,其特征在于,包括以下步骤:S1: Spring Boot框架在服务开发时,加入注解发起调用链的追踪;S2: 然后,用日志记录发起的调用链的信息,通过TraceID将一次请求所涉及的若干微服务和调用关系串联在一起;S3: 再在所述若干微服务调用链之间加入StepID,通过圆点分隔的形式来标识调用链中服务调用的嵌套关系;S4: 进行双向关联调用链和对应业务,在用日志记录调用链信息和业务信息的基础上,建立调用链与业务之间的关系,在调用链追踪的同时,再用日志记录调用链TraceID与业务ID之间的关系信息;S5:进行判断系统是否出现异常,若没有出现异常,再判断追踪是否结束;若出现异常,定位异常,再用日志标记所有出现的异常信息,再判断追踪是否结束;所述判断追踪是否结束时,若结束,最后执行一次查询供分析,若没有结束,重新调用记录调用链信息进行执行;S6:最后,在记录日志信息的基础上,开发人员根据TraceID、业务ID的信息,从不同的维度查询日志信息和异常信息,进行优化代码,解决异常问题。2.根据权利要求1所述的基于AOP注解的调用链追踪与业务分析方法,其特征在于,步骤S4中,所述调用链信息包括TraceId、调用链深度Step、用于标识服务调用嵌套层级关系的StepID、微服务信息以及请求信息。3.根据权利要求1所述的基于AOP注解的调用链追踪与业务分析方法,其特征在于,步骤S4中,所述业务信息包括业务ID、业务名称和业务...

【专利技术属性】
技术研发人员:贺彩玲于聪妍刘东丽王翀刘明
申请(专利权)人:北京航天云路有限公司
类型:发明
国别省市:

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

1