CN112527619A - 一种基于有向无环图结构的分析链路调用方法及系统 - Google Patents

一种基于有向无环图结构的分析链路调用方法及系统 Download PDF

Info

Publication number
CN112527619A
CN112527619A CN202011512651.0A CN202011512651A CN112527619A CN 112527619 A CN112527619 A CN 112527619A CN 202011512651 A CN202011512651 A CN 202011512651A CN 112527619 A CN112527619 A CN 112527619A
Authority
CN
China
Prior art keywords
component
link
calling
distributed
identifier
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
Application number
CN202011512651.0A
Other languages
English (en)
Inventor
徐军
李�学
何宁波
章书乐
李军
詹开洪
彭涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Internet Technology Wuhan Co ltd
Datang Telecom Convergence Communications Co Ltd
Original Assignee
Datang Internet Technology Wuhan Co ltd
Datang Telecom Convergence Communications Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Datang Internet Technology Wuhan Co ltd, Datang Telecom Convergence Communications Co Ltd filed Critical Datang Internet Technology Wuhan Co ltd
Priority to CN202011512651.0A priority Critical patent/CN112527619A/zh
Publication of CN112527619A publication Critical patent/CN112527619A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于有向无环图结构的分析链路调用方法及系统,所述方法包括:为每个加入到微服务的组件分配一个唯一的组件标识符;在每个组件的运行日志中加入调用链的事务标识;每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成链路调用完整过程;实时收集组件运行日志,并进行解析、转换、存储、展示。本发明基于有向无环图结构的链路调用分析,开发与运维人员能够高效、精准地发现与定位故障。

Description

一种基于有向无环图结构的分析链路调用方法及系统
技术领域
本发明属于运维管理技术领域,具体涉及一种基于有向无环图结构的分析链路调用方法及系统。
背景技术
随着互联网时代的发展,分布式软件系统正广泛的被应用,如何提升系统运维笑了效率,保障器服务的可靠与稳定,是当前正面临的问题,并且需要解决的问题。分布式软件系统节点规模庞大、节点之间的依赖关系复杂,随着产品的多元化、丰富话,分布式软件系统会持续更新,规模会持续升级。分布式软件系统存在大量并发的服务请求,请求执行的逻辑复杂,即使是单个服务请求也会经过分布在大量节点上的不同组件的处理。导致了分布式软件系统的行为难以理解,请求执行的异常难以检测与定位,分布式软件系统的性能瓶颈难以分析与优化,给分布式软件系统中的故障诊断、性能调优、系统理解等一系列运维任务带来了严峻的挑战。
传统的以节点为中心的系统监控与追踪方法只能揭示分布式系统单个组件的行为与状态,难以支持分布式系统中的运维的各项任务。因此,需要一种对系统运行行为进行整体、精准刻画技术,满足分布式系统的故障诊断、性能调优、系统理解等运维管理任务的需求。
发明内容
有鉴于此,本发明提出了一种基于有向无环图结构的分析链路调用方法及系统,用于解决分布式系统链路调用分析单一、无法精准地发现与定位故障的问题。
本发明第一方面,公开一种基于有向无环图结构的分析链路调用方法,所述方法包括:
通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;
根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成链路调用完整过程。
优选的,所述通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符之后还包括:
在每个组件的运行日志中加入调用链的事务标识。
优选的,通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符具体为:
应用组件管理系统录入组件的基本信息后,给组件分配唯一的组件标识符;
分布式部署时,相同的组件部署在不同的服务器上时,以组件标识符号相同但应用名称不同的方式进行组合管理;不同的组件应用标识符互不相同。
优选的,利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息具体包括:
组件启动的时候通过读取配置文件加载组件的标识符;
组件启动时加载注入的链路追踪代码;
当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集。
优选的,在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
优选的,所述形成链路调用完整过程之后还包括:
实时收集组件运行日志,将收集到的日志存储并进行展示。
优选的,所述实时收集组件运行日志,将收集到的日志存储并进行展示具体包括:
通过Filebeat实时收集组件运行日志,通过Logstash解析Filebeat收集到的数据;
Logstash通过预定义的数据模板将集组件运行日志数据按照模板进行解析后存储至Elasticsearch;
通过Kibana将Elasticsearch将收集到的数据进行展示。
本发明第二方面,公开一种基于有向无环图结构的分析链路调用系统,所述系统包括:
组件标识模块:用于通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
代码注入模块:用于为每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
链路追踪模块:用于利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成链路调用完整过程。
优选的,所述系统还包括:
日志收集模块:用于在每个组件的运行日志中加入调用链的事务标识,当微服务平台响应用户请求时,实时收集组件运行日志,将收集到的日志存储并进行展示。
优选的,所述链路追踪模块具体包括:
启动加载单元:用于在组件启动的时候通过读取配置文件加载组件的标识符;组件启动时加载注入的链路追踪代码;
信息采集单元:用于当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集;在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
本发明相对于现有技术具有以下有益效果:
1)本发明利用唯一标识符及链路追踪代码采集微服务平台中组件响应请求时的链路调用详细过程,根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系及堆栈信息,以形成链路调用完整过程,可以快速的定位分布式系统中的异常信息,降低异常排查的难度;可以通过链路调用时的状态,快速筛选出异常响应的服务组件,通过调用链路的事务标识在日志系统中查询错误日志信息,从而快速的定位具体异常问题。
2)本发明基于有向无环图结构的链路调用分析,开发与运维人员能够高效、精准地发现与定位故障并进行分析,准确地发现、分析并理解系统中的性能瓶颈,在缺乏技术文档的条件下可以理解分布式软件系统的部署结构和运行状态。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于有向无环图结构的分析链路调用方法流程示意图;
图2为各分布式组件之间的调用关系示例;
图3为组件运行日志处理流程示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
请参阅图1,本发明公开一种基于有向无环图结构的分析链路调用方法,所述方法包括:
S1、通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
应用组件管理系统录入组件的基本信息后,给组件分配唯一的组件标识符;
分布式部署时,相同的组件部署在不同的服务器上时,以组件标识符号相同但应用名称不同的方式进行组合管理,如appname+ip;不同的组件应用标识符互不相同,确保各个组件可以快速定位。
S2、在每个组件的运行日志中加入调用链的事务标识。
S3、每个组件根据分配的唯一标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
具体的,组件在部署时通过配置文件来设置组件的标识符,通过vertx中eventbus实现链路调用链追踪,生成链路追踪代码,组件启动时,通过java字节增强技术在组件中注入所述链路追踪代码。
S4、利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;
具体的,组件启动时通过读取配置文件加载组件的标识符和注入的链路追踪代码;
当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集;
在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
S5、根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成链路调用完整过程。
通过收集到的链路调用的详细信息以及调用的堆栈信息,采用拓扑排序算法进行链路分析,形成完整的有向无环结构的链路调用过程。
图2为各分布式组件之间的调用关系示例,不同的应用组件/节点之前形成了有向无环结构的调用链路图,比如图2中分别用实线和虚线展示不同链路的调用关系。
S6、实时收集组件运行日志,并进行解析、转换、存储、展示。
具体的,请参阅图3,组件运行日志处理流程示意图,本发明通过Filebeat实时收集组件运行日志,通过Logstash解析Filebeat收集到的数据;Logstash通过预定义的数据模板将集组件运行日志数据按照模板进行解析后存储至Elasticsearch;通过Kibana将Elasticsearch将收集到的数据进行展示。
通过收集到的组件堆栈的信息,可以对接口相关性能参数有很直观的展示,基于展示结果可以对性能较差的接口进行优化,优化后可能对优化的结果有很直观的反馈;
通过收集到的链路信息,可以对接口响应链路有很直观的展示,即响应一个请求,触发了哪些服务调用,触发调用的服务响应的时间、响应的状态等参数可以很直观进行查看。
本发明基于有向无环结构的链路调用分析,可以快速的定位分布式系统中的异常信息,降低异常排查的难度;可以通过链路调用时的状态,快速筛选出异常响应的服务组件,通过调用链路的事务标识在日志系统中查询,可以查询到错误日志信息,通过信息可以快速的定位具体异常问题,从而解决问题。
与上述方法实施例相对应,本发明还提出一种基于有向无环图结构的分析链路调用系统,所述系统包括组件标识模块、代码注入模块、链路追踪模块、日志收集模块;
组件标识模块:用于通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
代码注入模块:用于为每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
链路追踪模块:用于利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成链路调用完整过程;所述链路追踪模块具体包括:
启动加载单元:用于在组件启动的时候通过读取配置文件加载组件的标识符;组件启动时加载注入的链路追踪代码;
信息采集单元:用于当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集;在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
日志收集模块:用于在每个组件的运行日志中加入调用链的事务标识,当微服务平台响应用户请求时,实时收集组件运行日志,将收集到的日志存储并进行展示。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于有向无环图结构的分析链路调用方法,其特征在于,所述方法包括:
通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;
根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成有向无环结构的链路调用完整过程。
2.根据权利要求1所述基于有向无环图结构的分析链路调用方法,其特征在于,所述通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符之后还包括:
在每个组件的运行日志中加入调用链的事务标识。
3.根据权利要求1所述基于有向无环图结构的分析链路调用方法,其特征在于,通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符具体为:
应用组件管理系统录入组件的基本信息后,给组件分配唯一的组件标识符;
分布式部署时,相同的组件部署在不同的服务器上时,以组件标识符号相同但应用名称不同的方式进行组合管理;不同的组件应用标识符互不相同。
4.根据权利要求3所述基于有向无环图结构的分析链路调用方法,其特征在于,利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息具体包括:
组件启动的时候通过读取配置文件加载组件的标识符;
组件启动时加载注入的链路追踪代码;
当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集。
5.根据权利要求4所述基于有向无环图结构的分析链路调用方法,其特征在于,在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
6.根据权利要求2所述基于有向无环图结构的分析链路调用方法,其特征在于,所述形成链路调用完整过程之后还包括:
实时收集组件运行日志,并进行解析、转换、存储、展示。
7.根据权利要求5所述基于有向无环图结构的分析链路调用方法,其特征在于,所述实时收集组件运行日志,实时收集组件运行日志,并进行解析、转换、存储、展示具体包括:
通过Filebeat实时收集组件运行日志,通过Logstash解析Filebeat收集到的数据;
Logstash通过预定义的数据模板将集组件运行日志数据按照模板进行解析后存储至Elasticsearch;
通过Kibana将Elasticsearch将收集到的数据进行展示。
8.一种基于有向无环图结构的分析链路调用系统,其特征在于,所述系统包括:
组件标识模块:用于通过应用组件管理系统为每个加入到微服务的组件分配一个唯一的组件标识符;
代码注入模块:用于为每个组件根据分配的唯一应用标识符,利用字节码增强技术,将链路追踪代码注入到分布式应用的程序中;
链路追踪模块:用于利用链路追踪代码,采集微服务平台中组件响应请求时的链路调用详细过程以及堆栈信息;根据各分布式组件、链路调用过程以及调用堆栈信息区分各分布式组件之间的调用关系,以形成有向无环结构的链路调用完整过程。
9.根据权利要求8所述一种基于有向无环图结构的分析链路调用系统,其特征在于,所述系统还包括:
日志收集模块:用于在每个组件的运行日志中加入调用链的事务标识,当微服务平台响应用户请求时,实时收集组件运行日志,将收集到的日志存储并进行展示。
10.根据权利要求8所述一种基于有向无环图结构的分析链路调用系统,其特征在于,所述链路追踪模块具体包括:
启动加载单元:用于在组件启动的时候通过读取配置文件加载组件的标识符;组件启动时加载注入的链路追踪代码;
信息采集单元:用于当微服务平台响应用户请求时,注入的拦截器代码根据组件的标识符进行分布式链路程序采集;在分布式组件各个结点之间相互调用即发生消息传递时,注入的增强代码添加组件标识符作为消息之间的关联,以追踪组件之间、结点之间的链路调用过程及堆栈信息。
CN202011512651.0A 2020-12-20 2020-12-20 一种基于有向无环图结构的分析链路调用方法及系统 Pending CN112527619A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011512651.0A CN112527619A (zh) 2020-12-20 2020-12-20 一种基于有向无环图结构的分析链路调用方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011512651.0A CN112527619A (zh) 2020-12-20 2020-12-20 一种基于有向无环图结构的分析链路调用方法及系统

Publications (1)

Publication Number Publication Date
CN112527619A true CN112527619A (zh) 2021-03-19

Family

ID=75001760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011512651.0A Pending CN112527619A (zh) 2020-12-20 2020-12-20 一种基于有向无环图结构的分析链路调用方法及系统

Country Status (1)

Country Link
CN (1) CN112527619A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114239872A (zh) * 2021-11-15 2022-03-25 浙江中控技术股份有限公司 Mes系统的运行维护方法、系统、设备和存储介质
CN114726714A (zh) * 2022-02-18 2022-07-08 珠海紫讯信息科技有限公司 一种WebRPA运维方法及系统
CN114844957A (zh) * 2022-04-27 2022-08-02 工银科技有限公司 链路报文转换方法、装置、设备、存储介质和程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377116A (zh) * 2012-04-27 2013-10-30 国际商业机器公司 用于在分布式信息系统中记录和分析日志的方法和装置
CN106502907A (zh) * 2016-10-28 2017-03-15 中国科学院软件研究所 一种基于执行轨迹追踪的分布式软件异常诊断方法
CN110784527A (zh) * 2019-10-18 2020-02-11 三体云智能科技有限公司 一种信息管理系统及方法
CN111797014A (zh) * 2020-06-30 2020-10-20 中国工商银行股份有限公司 跨应用的案例追踪方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103377116A (zh) * 2012-04-27 2013-10-30 国际商业机器公司 用于在分布式信息系统中记录和分析日志的方法和装置
CN106502907A (zh) * 2016-10-28 2017-03-15 中国科学院软件研究所 一种基于执行轨迹追踪的分布式软件异常诊断方法
CN110784527A (zh) * 2019-10-18 2020-02-11 三体云智能科技有限公司 一种信息管理系统及方法
CN111797014A (zh) * 2020-06-30 2020-10-20 中国工商银行股份有限公司 跨应用的案例追踪方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114239872A (zh) * 2021-11-15 2022-03-25 浙江中控技术股份有限公司 Mes系统的运行维护方法、系统、设备和存储介质
CN114726714A (zh) * 2022-02-18 2022-07-08 珠海紫讯信息科技有限公司 一种WebRPA运维方法及系统
CN114844957A (zh) * 2022-04-27 2022-08-02 工银科技有限公司 链路报文转换方法、装置、设备、存储介质和程序产品
CN114844957B (zh) * 2022-04-27 2024-03-08 工银科技有限公司 链路报文转换方法、装置、设备、存储介质和程序产品

Similar Documents

Publication Publication Date Title
CN112612675B (zh) 微服务架构下的分布式大数据日志链路跟踪方法及系统
CN112527619A (zh) 一种基于有向无环图结构的分析链路调用方法及系统
US10467316B2 (en) Systems and methods for web analytics testing and web development
Xu et al. POD-Diagnosis: Error diagnosis of sporadic operations on cloud applications
US10067855B2 (en) Error developer association
Mariani et al. Compatibility and regression testing of COTS-component-based software
US9697104B2 (en) End-to end tracing and logging
US6584491B1 (en) Arrangement for monitoring a progress of a message flowing through a distributed multiprocess system
US11366713B2 (en) System and method for automatically identifying and resolving computing errors
US10073755B2 (en) Tracing source code for end user monitoring
US20200117587A1 (en) Log File Analysis
CN111737033A (zh) 一种基于运行时图谱分析的微服务故障定位方法
US10528456B2 (en) Determining idle testing periods
CN111008105A (zh) 一种分布式系统调用关系可视化方法及装置
CN114168421A (zh) 基于微服务调用链的客户化代码兼容性分析系统及方法
CN114697232A (zh) Skywalking探针的指标数据采集系统、方法及电子设备
CN109559121B (zh) 交易路径调用异常分析方法、装置、设备及可读存储介质
Alonso et al. Software rejuvenation: Do it & telco industries use it?
CN109274533B (zh) 一种基于规则引擎的Web服务故障的定位装置和方法
CN116467188A (zh) 一种多环境场景下的通用本地复现系统和方法
CN113934642B (zh) 一种基于动静态结合的软件兼容性测试方法
CN113132143B (zh) 服务调用追踪方法及相关产品
CN112631906A (zh) 基于服务端的页面性能的检测方法与系统
CN113900902A (zh) 日志处理方法、装置、电子设备及存储介质
CN112181759A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210319