CN111767161A - 远程调用深度识别方法、装置、计算机设备及可读存储介质 - Google Patents

远程调用深度识别方法、装置、计算机设备及可读存储介质 Download PDF

Info

Publication number
CN111767161A
CN111767161A CN202010622759.9A CN202010622759A CN111767161A CN 111767161 A CN111767161 A CN 111767161A CN 202010622759 A CN202010622759 A CN 202010622759A CN 111767161 A CN111767161 A CN 111767161A
Authority
CN
China
Prior art keywords
remote
calling
call
application system
depth
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
CN202010622759.9A
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.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China 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 Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202010622759.9A priority Critical patent/CN111767161A/zh
Publication of CN111767161A publication Critical patent/CN111767161A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种应用系统的远程调用深度识别方法、装置、计算机设备及计算机可读存储介质。属于系统开发技术领域,实现应用系统的远程调用深度识别时,通过获取应用系统的访问日志,访问日志中包含远程调用内容,远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符,根据上述三个跟踪标识符构建每次远程调用各自所对应的远程调用链路树,得到若干个远程调用链路树,统计所有远程调用链路树中从根节点至叶子节点的路径长度最大值以得到应用系统的远程调用深度,能够提高应用系统进行远程调用所对应的调用深度识别的效率和准确性。

Description

远程调用深度识别方法、装置、计算机设备及可读存储介质
技术领域
本申请涉及系统开发技术领域,尤其涉及一种应用系统的远程调用深度识别方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着应用系统越来越强大,应用系统也越来越复杂,若应用系统还是由一台计算机设备进行集中处理,通过本地调用进行应用业务的处理,越来越难以面对复杂的业务。为了提高应用系统的处理效率,会对应用系统进行服务化改造,将系统中的方法由原来的本地远程调用改造成远程调用,实现由集中控制改造成分散处理,在面对复杂的业务时,可以提高应用系统的处理性能和效率。应用系统进行服务化改造后,系统中的方法由原来的本地远程调用改造成了远程调用,由于远程调用通过网络进行通信,远程调用需要消耗通信等服务资源,消耗的服务资源以及响应时间较本地调用大幅增加。
为了提高服务化系统改造后的响应时间,需要控制系统的复杂度,即需要对应用系统中方法的远程调用深度进行限制。传统技术中,根据计算机程序中的远程调用函数对远程调用深度进行统计,若计算机程序比较繁杂,对应用系统远程调用深度的统计将会十分繁琐,效率较低。
发明内容
本申请实施例提供了一种应用系统的远程调用深度识别方法、装置、计算机设备及计算机可读存储介质,能够解决传统技术中对应用系统远程调用深度的统计存在效率较低的问题。
第一方面,本申请实施例提供了一种应用系统的远程调用深度识别方法,所述方法包括:获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
第二方面,本申请实施例还提供了一种应用系统的远程调用深度识别装置,包括:获取单元,用于获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;构建单元,用于根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;统计单元,用于统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
第三方面,本申请实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述应用系统的远程调用深度识别方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器执行所述应用系统的远程调用深度识别方法的步骤。
本申请实施例提供了一种应用系统的远程调用深度识别方法、装置、计算机设备及计算机可读存储介质。本申请实施例实现应用系统的远程调用深度识别时,由于在应用系统进行远程调用过程中设置了三种标识符,进而获取包含三种标识符的访问日志后,根据三种标识符构建远程调用链路树,从而通过统计链路树的深度,更准确的识别出进行远程调用所涉及的接口远程调用之间的关联关系,以计算应用系统的远程调用深度,从而能够自动根据实时的访问日志动态识别远程调用所经过的系统和方法,相比传统技术中根据计算机程序中的远程调用函数对远程调用深度进行统计,能够提高应用系统进行远程调用所对应的远程调用深度识别的效率和准确性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的应用系统的远程调用深度识别方法的一个流程示意图;
图2为本申请实施例提供的应用系统的远程调用深度识别方法中一个具体远程调用链路树示意图;
图3为本申请实施例提供的应用系统的远程调用深度识别方法的一个子流程示意图;
图4为本申请实施例提供的应用系统的远程调用深度识别装置的一个示意性框图;以及
图5为本申请实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
请参阅图1,图1为本申请实施例提供的应用系统的远程调用深度识别方法的一个流程示意图。如图1所示,该方法包括以下步骤S101-S103:
S101、获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符。
其中,在本申请实施例中通过采用三种调用路径追踪标识符对远程调用进行追踪,针对三种追踪标识符,即全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符各自定义如下:
1)全链路调用追踪标识符,英文为TraceId,用于描述每次远程调用的全局跟踪ID,是跟踪的入口点,应用系统进行远程调用请求发起时,检查远程调用请求头中是否存在traceId,若不存在traceId,即自动生成traceId,并随请求向下一起携带。请参阅图2,图2为本申请实施例提供的应用系统的远程调用深度识别方法中一个具体远程调用链路树示意图,如图2所示,图2所示的远程调用中的全局跟踪ID为traceIdA,traceIdA用于描述应用系统一次完整调用所对应的全局的跟踪ID。
2)每次远程调用中每层的下一层请求跟踪标识符,英文为SpanId,用于描述下一层的请求跟踪ID,同属于一个方法中的远程调用,spanId均相同。其中,span标签是超文本标记语言(即HTML)的行内标签,被用来组合文档中的行内元素。spanId用于描述远程调用中对下一层进行调用时下一层的请求跟踪ID。请继续参阅图2,如图2所示,A层下面包含B和C两个方法的调用,spanIdB用于描述对B调用,spanIdC用于描述对C调用。
3)每次远程调用中每层的上一层请求跟踪标识符,英文为ParentSpanId,上一次请求跟踪ID,用于将前后的请求串联起来。请继续参阅图2,如图2所示,parentSpanIdA用于描述该调用的上一层为A进行的调用,对于首层的调用,parentSpanIdA为其本身,A系统的parentSpanId为parentSpanIdA,parentSpanIdB用于描述该调用的上一层为B进行的调用。通过traceId、spanId及parentSpanId即可将远程调用中涉及的多层之间的调用关系串联起来。
具体地,为了跟踪应用系统进行远程调用时的调用过程,从而构建远程调用链路树,在系统进行远程调用时,在远程调用所对应的调用请求中设置全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符,根据全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符之间的关联关系描述远程调用中涉及到的调用路径。应用系统在进行远程调用时,系统会产生访问日志,所述访问日志用于应用系统对访问对象的访问记录,其中,所述访问日志中包含远程调用内容,所述调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符,在识别应用系统的远程调用深度时,获取应用系统的访问日志,即可得到应用系统的远程调用内容,从而通过远程调用内容中包含的每次进行远程调用时各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符获取远程调用所对应的调用路径。比如,应用系统进行远程调用时,可以通过Access日志记录应用系统进行远程调用,在应用系统运行一段时间后,应用系统会根据处理的业务进行不同的远程调用,每一次的远程调用会记录到Access日志,Access日志又会通过日志服务器采集而集中到日志服务器,进行应用系统调用深度识别时,从日志服务器上获取Access日志,即可获取到应用系统进行远程调用的远程调用内容。
S102、根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树。
具体地,由于一次远程调用可以包括对多个节点的分别调用,在对多个节点分别进行调用时,在该次远程调用中包含一个相同的唯一的全链路调用追踪标识符,由于该次远程调用会对多个节点进行调用,因此,相对该次远程调用,会形成一个调用链路,通过全链路调用追踪标识符,可以筛选出同一次远程调用中调用各个节点时所对应形成的对于各个节点的调用关系。请继续参阅图2,图2中针对每个节点,用一个字段集合描述该次远程调用中对每个节点的调用关系,图2中用traceIdA描述应用系统对于该次远程调用中完整调用过程所对应的全局跟踪ID,再结合个节点所对应的spanId及parentSpanId,从而通过三个追踪标识符之间的关联关系,可以得到整个调用链路,以便后续构建链路树。
由于应用系统的访问日志中包含远程调用内容,而远程调用内容中又包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符,获取应用系统的访问日志后,从所述访问日志中提取每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符。
进一步地,获取每次远程调用所涉及的全链路调用追踪标识符、下一层请求跟踪标识符及所述上一层请求跟踪标识符,根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,从而实现根据所述日志内容构建远程调用请求所对应的链路树。其中,链路树采用树结构描述应用系统进行远程调用的链路,其实质是一种树结构,树是一种重要的非线性数据结构,它是数据元素(在树中称为结点)按分支关系组织起来的结构。一棵树(tree)是由n(n>0)个元素组成的有限集合,其中:
(1)每个元素称为结点(英文为Node);
(2)有一个特定的结点,称为根结点或根(英文为Root);
(3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子集又都是一棵树(称为原树的子树)
本申请实施例中,对同一traceId中的日志,通过日志中的spanId,parentSpanId,据此建立请求链路的树,每个树的节点内容为<system、interface>,对应于每个节点系统名、接口名等信息。请继续参阅图2所示的本申请实施例提供的应用系统的远程调用深度识别方法中一个具体远程调用链路树示意图。
更进一步地,所述根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树的步骤包括:
通过预设提取方式提取包含同一所述全链路调用追踪标识符的日志内容,所述日志内容中包含同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符;
根据所述同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建该次远程调用所对应的远程调用链路树。
其中,预设提取方式包括日志分析工具方式及采用预设正则表达式方式。
具体地,对日志服务器中采集上来的各模块的日志,通过日志分析工具,如EventLogAnalyzer日志管理软件,或者Graylog日志分析工具等,提取同一TraceId的日志内容,同一TraceId的日志内容会有预设格式关联,如<system、interface>。或者,提取日志文本中特定的文本语句,并对里面的数值进行整理和计算均值,比如使用Python的re包可以轻易地实现,并且可以结合正则表达式来进行提取。比如,从日志服务器中获取日志内容后,通过日志分析工具或者使用正则表达式等方式,提取同一追踪标识符traceId的日志内容,所述日志内容中包含traceId、spanId,parentSpanId,即可获得该次远程调用所涉及的接口和方法之间的关系。
S103、统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
具体地,应用系统的每次远程调用是独立的,相互之间没有关联,一次远程调用对应一个调用深度,而最能描述整个应用系统远程调用深度的,是在应用系统的所有远程调用中,深度值最大的深度,现在要获得该尽可能最大值的深度,来描述整个应用系统的深度,所以需要通过对每次远程调用深度的统计,来得到这个尽可能最大值的深度。但是访问日志中,一般会包括多次独立的远程调用的内容,在对远程调用进行分析时,需要分析每次远程调用的深度,而每次远程调用对用一个远程调用链路树,通过获取多个所述远程调用链路树,从而统计所有所述远程调用链路树中最大的深度,以得到所述应用系统的远程调用深度。
根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用所对应的远程调用链路树后,根据所述树结构可以获得树结构从根节点至叶子节点(或者从叶子节点至根节点)的路径长度的最大值,比如树的深度、树的层数或者树的高度等参数,统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值,即可得到所述应用系统的远程调用深度,从而实现通过采集系统的Access日志,计算应用系统进行远程调用所包含方法的调用深度,能够自动根据实时的访问日志动态识别方法调用所经过的系统及方法,能够实现动态的识别应用系统的依赖及调用深度,并能够准确的获得调用深度,提高识别应用系统的依赖及调用深度的效率,能够使开发人员根据调用深度对应用系统中方法的调用深度进行限制,控制系统的复杂度,提高服务化系统改造后的响应时间。
本申请实施例实现应用系统的远程调用深度识别时,由于在应用系统进行远程调用过程中设置三个追踪标识符,进而获取包含三个追踪标识符的访问日志后,根据三个追踪标识符构建远程调用链路树,从而通过统计链路树的深度,更准确的识别出进行远程调用所涉及的接口远程调用之间的关联关系,从而计算应用系统的远程调用深度,能够自动根据实时的访问日志动态识别远程调用所经过的系统和方法,相比传统技术中根据计算机程序中的远程调用函数对远程调用深度进行统计,能够提高应用系统进行远程调用所对应的远程调用深度识别的效率和准确性。
在一个实施例中,所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度的步骤包括:
统计每个所述远程调用链路树所包含的所有叶子节点的深度;
将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该远程调用链路树所对应的远程调用深度;
将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度。
具体地,对同一TraceId,构建链路树结构后,应用系统所进行的该次远程调用的完整链路便可直观的描述出来了,通过对构建出的远程调用链路树,计算当前树的深度,统计每个所述远程调用链路树所包含的所有叶子节点的深度,并对于树中的所有节点,去重后得到的值即为此接口的关联系统,将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该远程调用链路树所对应的远程调用深度,将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度,即为应用系统的调用深度。
进一步地,在树结构中,节点n的深度是指从根节点到节点n唯一的路径的长,根节点深度为1。例如,请继续参阅图2,图2中,A节点的深度为1,B和C节点的深度分别为2,X、Y和Z节点的深度分别为3。
进一步地,树的深度是指树内所有节点深度的最大值,也就是所有叶子节点深度的最大值。请继续参阅图2,可知,图2中树的深度为3,对节点X、Y和Z,由于此三个节点的深度相同,进行去重后得到3作为树的深度即可。
更进一步地,请参阅图2,如图2所示,在计算树的深度时,可以依次计算路径XBA、YBA、ZBA及CA路径的长度,取其中长度最大的值为树的深度。其中,<system、interface>,对应于每个节点的系统名及接口名,计算XBA的深度时,获得X的追踪标识符的内容为(traceIdA、spanIdX,parentSpanIdB),根据上述对追踪标识符traceId、spanId、parentSpanId的定义,根据traceIdA和parentSpanIdB,去寻找追踪标识符中包含内容为traceIdA和spanIdB,会寻找到节点B,可知该X的上一节点为B,同样,可知B的上一节点为A,由于A的parentSpanId为parentSpanIdA,可知A为根节点,A之上没有其其它的节点,根据计数,可知,XBA的路径长度为3,即X的深度为3。同样的,可知YBA及ZBA的长度也为3,CA路径的长度为2,便可知叶节点X、Y、Z及节点C的深度分别为3、3、3及2,去掉重复的节点长度3,并取节点最大值,可知图1所示树的深度为3。
除用树的深度描述链路树的调用深度外,还可以采用树的高度或者树的层数来描述调用深度。其中,树的节点n的高度为n节点到叶子节点所有路径上包含节点个数的最大值。叶子节点的高度为1,往上节点的高度依次递增。树的层数为根节点为第一层,往下一次递增。
由于节点n的深度为从根节点到节点n唯一的路径的长,根节点深度为1。树的深度为树内所有节点深度的最大值,也就是所有叶子节点深度的最大值,也就是树的层数。树的高度为树内所有节点高度的最大值,也就是根节点的高度,也就是数的层数。因此,树中节点的最大层数称之为树的深度或者高度,所以在基数为1时树的深度=树的高度=最大层数。可知,系统调用深度除了用树的深度描述之外,还可以用树的层数或者树的高度来描述。
在一个实施例中,所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值的步骤之后,还包括:
统计预设时间周期内,所述应用系统进行远程调用所对应的所有远程调用深度,获取远程调用深度最大值作为所述应用系统的远程调用深度。
具体地,实际应用中,每次traceId对应的接口调用,只能识别某次调用所经过的系统和方法,需要对接口进行一段时间的统计分析,才能更准确的识别出接口调用的关联系统及调用深度,才能更准确的描述应用系统的依赖及调用深度。通过统计预设时间段内,应用系统进行多次远程调用所对应的多个调用深度,取深度最大值为系统调用深度,能够更全秒的进行应用系统的远程调用,获得的远程调用深度最大值才能更准确的描述应用系统的远程调用深度。
在一个实施例中,所述获取应用系统的访问日志的步骤之前,还包括:
采集应用系统的访问日志。
进一步地,请参阅图3,图3为本申请实施例提供的应用系统的远程调用深度识别方法的一个子流程示意图。如图3所示,在该实施例中,所述采集应用系统的访问日志的步骤包括:
S301、启动远程调用时,判断所述远程调用所对应的调用请求中是否包含预设全链路调用追踪标识符;若所述调用请求中包含所述预设全链路调用追踪标识符,进入步骤S303。
具体地,为了对应用系统的依赖及调用深度进行识别,对应用系统每一次进行远程调用时,在调用请求中设置一个追踪标识符traceId,用于追踪远程调用的调用轨迹。为了确定所述调用请求中确定包含追踪标识符traceId,应用系统启动远程调用时,首先判断远程调用所对应的调用请求中是否包含追踪标识符traceId,追踪标识符traceId是一个字段,可以通过判断traceId是否存在有赋值或者赋值是否与曾经的赋值相同,判断所对应的调用请求中是否包含追踪标识符traceId。若traceId存在有赋值,且该赋值与曾经的赋值不相同,判断远程调用所对应的调用请求中包含追踪标识符traceId,即若所述调用请求中包含所述预设全链路调用追踪标识符,发起远程调用,即进入步骤S303,若traceId未存在有赋值,即traceId为空,或者赋值与曾经的赋值相同,即该赋值为曾经的远程调用所对应的赋值,判断远程调用所对应的调用请求中未包含追踪标识符traceId,进入步骤S302。
S302、若所述调用请求中未包含所述预设全链路调用追踪标识符,在所述远程调用请求中按照预设生成方式生成预设全链路调用追踪标识符,并进入步骤S303;
S303、发起所述远程调用。
具体地,若判断所述调用请求中包含追踪标识符traceId,表明应用系统的远程调用符合要求,发起所述远程调用,若判断所述调用请求中未包含追踪标识符traceId,在所述调用请求中生成所述追踪标识符traceId,即为traceId生成一个未曾使用过的赋值,以使应用系统的远程调用符合要求,并发起所述远程调用。
应用系统发起远程调用时,应用系统会产生包含调用信息的Access日志。其中,Access日志,即为Accesslog,Accesslog是Apache或者Nginx等WebService生成的日志,对应于网页的每一次请求,包含有大量的信息。
进一步地,应用系统发起远程调用时,在本地打印接口的Access日志,Access日志的内容除包括追踪标识符traceId外,为了明确调用过程中上下层之间的调用关系,根据上述对技术方案的描述,Access日志还包括系统名、接口名、spanId,parentSpanId,其中,追踪标识符traceId、spanId,parentSpanId的定义如上所描述。
S304、打印所述远程调用所产生的包含所述调用请求的访问日志,并将所述访问日志采集到日志服务器。
其中,打印日志,即记录日志或者输出日志,由于生成日志采用的是Print方法,又可以称为打印日志。比如,在Java中实现记录日志的方式有很多种,例如,包括以下几种方式:1)最简单的方式,就是system.println.out(error),这样直接在控制台打印消息了。2)Java.util.logging,在JDK1.4版本之后,提供了日志的API,可以往文件中写日志了。3)log4j,最强大的记录日志的方式。可以通过配置.properties或是.xml的文件,配置日志的目的地及格式等。4)Commons-logging,最综合和常见的日志记录方式,经常是和log4j结合起来使用。
具体地,由于应用系统不止具有一项功能,每一项功能会对应不同的远程调用,也即应用系统代码每一次远程调用根据实际应用的不同而存在不同,应用系统可以通过采集模块,把应用系统进行每一次远程调用产生的Access日志所对应的日志数据集中采集到日志服务器,以便后续对Access日志所包括的多次的所有远程调用进行分析,从而从整体上判断应用系统的依赖及调用深度。
需要说明的是,上述各个实施例所述的应用系统的远程调用深度识别方法,可以根据需要将不同实施例中包含的技术特征重新进行组合,以获取组合后的实施方案,但都在本申请要求的保护范围之内。
请参阅图4,图4为本申请实施例提供的应用系统的远程调用深度识别装置的一个示意性框图。对应于上述所述应用系统的远程调用深度识别方法,本申请实施例还提供一种应用系统的远程调用深度识别装置。如图4所示,该应用系统的远程调用深度识别装置包括用于执行上述所述应用系统的远程调用深度识别方法的单元,该应用系统的远程调用深度识别装置可以被配置于计算机设备中。具体地,请参阅图4,该应用系统的远程调用深度识别装置400包括获取单元401、构建单元402及统计单元403。
其中,获取单元401,用于获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;
构建单元402,用于根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;
统计单元403,用于统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
在一个实施例中,所述统计单元403包括:
第一统计子单元,用于统计每个所述远程调用链路树所包含的所有叶子节点的深度;
去重子单元,用于将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该远程调用链路树所对应的远程调用深度;
得到子单元,用于将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度。
在一个实施例中,所述统计单元403还包括:
第二统计子单元,用于统计预设时间周期内,所述应用系统进行远程调用所对应的所有远程调用深度,取远程调用深度最大值作为所述应用系统的远程调用深度。
在一个实施例中,所述构建单元402包括:
提取子单元,用于通过预设提取方式提取包含同一所述全链路调用追踪标识符的日志内容,所述日志内容中包含同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符;
构建子单元,用于根据所述同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建该次远程调用所对应的远程调用链路树。
在一个实施例中,所述应用系统的远程调用深度识别装置400还包括:
采集单元,用于采集应用系统的访问日志;
所述采集单元包括:
判断子单元,用于启动远程调用时,判断所述远程调用所对应的调用请求中是否包含预设全链路调用追踪标识符;
第一发起子单元,用于若所述调用请求中包含所述预设全链路调用追踪标识符,发起所述远程调用;
第二发起子单元,用于若所述调用请求中未包含所述预设全链路调用追踪标识符,在所述远程调用请求中按照预设生成方式生成预设全链路调用追踪标识符,并发起所述远程调用;
打印子单元,用于打印所述远程调用所产生的包含所述调用请求的访问日志,并将所述访问日志采集到日志服务器。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述应用系统的远程调用深度识别装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
同时,上述应用系统的远程调用深度识别装置中各个单元的划分和连接方式仅用于举例说明,在其他实施例中,可将应用系统的远程调用深度识别装置按照需要划分为不同的单元,也可将应用系统的远程调用深度识别装置中各单元采取不同的连接顺序和方式,以完成上述应用系统的远程调用深度识别装置的全部或部分功能。
上述应用系统的远程调用深度识别装置可以实现为一种计算机程序的形式,该计算机程序可以在如图5所示的计算机设备上运行。
请参阅图5,图5是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是台式机电脑或者服务器等计算机设备,也可以是其他设备中的组件或者部件。
参阅图5,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行一种上述应用系统的远程调用深度识别方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种上述应用系统的远程调用深度识别方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图5所示实施例一致,在此不再赘述。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
在一实施例中,所述处理器502在实现所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度的步骤时,具体实现以下步骤:
统计每个所述远程调用链路树所包含的所有叶子节点的深度;将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该远程调用链路树所对应的远程调用深度;将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度。
在一实施例中,所述处理器502在实现所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值的步骤之后,还实现以下步骤:
统计预设时间周期内,所述应用系统进行远程调用所对应的所有远程调用深度,获取远程调用深度最大值作为所述应用系统的远程调用深度。
在一实施例中,所述处理器502在实现所述根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树的步骤时,具体实现以下步骤:
通过预设提取方式提取包含同一所述全链路调用追踪标识符的日志内容,所述日志内容中包含同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符;
根据所述同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建该次远程调用所对应的远程调用链路树。
在一实施例中,所述处理器502在实现所述获取应用系统的访问日志的步骤之前,还实现以下步骤:
采集应用系统的访问日志;
所述处理器502在实现所述采集应用系统的访问日志的步骤时,具体实现以下步骤:
启动远程调用时,判断所述远程调用所对应的调用请求中是否包含预设全链路调用追踪标识符;
若所述调用请求中包含所述预设全链路调用追踪标识符,发起所述远程调用;
若所述调用请求中未包含所述预设全链路调用追踪标识符,在所述远程调用请求中按照预设生成方式生成预设全链路调用追踪标识符,并发起所述远程调用;
打印所述远程调用所产生的包含所述调用请求的访问日志,并将所述访问日志采集到日志服务器。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来完成,该计算机程序可存储于一计算机可读存储介质。该计算机程序被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本申请还提供一种计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时使处理器执行如下步骤:
一种计算机程序产品,当其在计算机上运行时,使得计算机执行以上各实施例中所描述的所述应用系统的远程调用深度识别方法的步骤。
所述计算机可读存储介质可以是前述设备的内部存储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述存储介质为实体的、非瞬时性的存储介质,例如可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储计算机程序的实体存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,终端,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
以上所述,仅为本申请的具体实施方式,但本申请明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种应用系统的远程调用深度识别方法,其特征在于,所述方法包括:
获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;
根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;
统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
2.根据权利要求1所述应用系统的远程调用深度识别方法,其特征在于,所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度的步骤包括:
统计每个所述远程调用链路树所包含的所有叶子节点的深度;
将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该远程调用链路树所对应的远程调用深度;
将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度。
3.根据权利要求1或者2所述应用系统的远程调用深度识别方法,其特征在于,所述统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值的步骤之后,还包括:
统计预设时间周期内,所述应用系统进行远程调用所对应的所有远程调用深度,获取远程调用深度最大值作为所述应用系统的远程调用深度。
4.根据权利要求1所述应用系统的远程调用深度识别方法,其特征在于,所述根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树的步骤包括:
通过预设提取方式提取包含同一全链路调用追踪标识符的日志内容,所述日志内容中包含同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符;
根据所述同一次远程调用所涉及的所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建该次远程调用所对应的远程调用链路树。
5.根据权利要求1所述应用系统的远程调用深度识别方法,其特征在于,所述获取应用系统的访问日志的步骤之前,还包括:
采集应用系统的访问日志;
所述采集应用系统的访问日志的步骤包括:
启动远程调用时,判断所述远程调用所对应的调用请求中是否包含预设全链路调用追踪标识符;
若所述调用请求中包含所述预设全链路调用追踪标识符,发起所述远程调用;
若所述调用请求中未包含所述预设全链路调用追踪标识符,在所述远程调用请求中按照预设生成方式生成预设全链路调用追踪标识符,并发起所述远程调用;
打印所述远程调用所产生的包含所述调用请求的访问日志,并将所述访问日志采集到日志服务器。
6.一种应用系统的远程调用深度识别装置,其特征在于,包括:
获取单元,用于获取应用系统的访问日志,所述访问日志中包含远程调用内容,所述远程调用内容包含每次远程调用各自所对应的全链路调用追踪标识符、每次远程调用中每层的下一层请求跟踪标识符及每次远程调用中每层的上一层请求跟踪标识符;
构建单元,用于根据所述全链路调用追踪标识符、所述下一层请求跟踪标识符及所述上一层请求跟踪标识符构建每次远程调用各自所对应的远程调用链路树,以得到若干个所述远程调用链路树;
统计单元,用于统计所有所述远程调用链路树中从根节点至叶子节点的路径长度最大值以得到所述应用系统的远程调用深度。
7.根据权利要求6所述应用系统的远程调用深度识别装置,其特征在于,所述统计单元包括:
第一统计子单元,用于统计每个所述远程调用链路树所包含的所有叶子节点的深度;
去重子单元,用于将每个所述远程调用链路树的所有叶子节点的深度进行去重后得到的最大值作为该所述远程调用链路树所对应的远程调用深度;
得到子单元,用于将所有所述远程调用链路树中的最大远程调用深度作为所述应用系统的远程调用深度。
8.根据权利要求6或者7所述应用系统的远程调用深度识别装置,其特征在于,所述统计单元还包括:
第二统计子单元,用于统计预设时间周期内,所述应用系统进行远程调用所对应的所有远程调用深度,取远程调用深度最大值作为所述应用系统的远程调用深度。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器以及与所述存储器相连的处理器;所述存储器用于存储计算机程序;所述处理器用于运行所述计算机程序,以执行如权利要求1-5任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1-5中任一项所述方法的步骤。
CN202010622759.9A 2020-06-30 2020-06-30 远程调用深度识别方法、装置、计算机设备及可读存储介质 Pending CN111767161A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010622759.9A CN111767161A (zh) 2020-06-30 2020-06-30 远程调用深度识别方法、装置、计算机设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010622759.9A CN111767161A (zh) 2020-06-30 2020-06-30 远程调用深度识别方法、装置、计算机设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN111767161A true CN111767161A (zh) 2020-10-13

Family

ID=72724498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010622759.9A Pending CN111767161A (zh) 2020-06-30 2020-06-30 远程调用深度识别方法、装置、计算机设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111767161A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112702191A (zh) * 2020-12-11 2021-04-23 福建天晴在线互动科技有限公司 一种链路追踪方法及终端
CN112964120A (zh) * 2021-03-16 2021-06-15 台嘉成都玻纤有限公司 成布热交换机改进方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112702191A (zh) * 2020-12-11 2021-04-23 福建天晴在线互动科技有限公司 一种链路追踪方法及终端
CN112964120A (zh) * 2021-03-16 2021-06-15 台嘉成都玻纤有限公司 成布热交换机改进方法

Similar Documents

Publication Publication Date Title
CN106656536B (zh) 一种用于处理服务调用信息的方法与设备
CN107957940B (zh) 一种测试日志处理方法、系统及终端
CN108628748B (zh) 自动化测试管理方法和自动化测试管理系统
CN114500690B (zh) 接口数据处理方法、装置、电子设备及存储介质
CN111866016A (zh) 日志的分析方法及系统
CN114817968B (zh) 无特征数据的路径追溯方法、装置、设备及存储介质
CN108228664B (zh) 非结构化数据处理方法及装置
CN111767161A (zh) 远程调用深度识别方法、装置、计算机设备及可读存储介质
CN114357943A (zh) 一种通用高效Excel读取处理方法、工具、介质及设备
CN111126058A (zh) 文本信息自动抽取方法、装置、可读存储介质和电子设备
CN109698798B (zh) 一种应用的识别方法、装置、服务器和存储介质
CN107330031B (zh) 一种数据存储的方法、装置及电子设备
CN111966339B (zh) 埋点参数的录入方法、装置、计算机设备和存储介质
CN111581057B (zh) 一种通用日志解析方法、终端设备及存储介质
CN110442439B (zh) 任务进程处理方法、装置和计算机设备
CN111193631B (zh) 信息处理方法、系统和计算机可读存储介质
US8429458B2 (en) Method and apparatus for system analysis
CN111917848A (zh) 基于边缘计算和云计算协同的数据处理方法及云服务器
CN112287643B (zh) 消息监听方法、装置、设备及计算机可读存储介质
US20140337069A1 (en) Deriving business transactions from web logs
CN114492324A (zh) 组件数据统计方法及装置
WO2021129849A1 (zh) 日志处理方法、装置、设备和存储介质
CN109067726B (zh) 建站系统识别方法、装置、电子设备及存储介质
CN117972399B (zh) 用于二进制sca的特征提取方法、装置、设备及介质
CN113641523B (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