CN112416557B - 调用关系的确定方法和装置、存储介质及电子装置 - Google Patents
调用关系的确定方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN112416557B CN112416557B CN202011325790.2A CN202011325790A CN112416557B CN 112416557 B CN112416557 B CN 112416557B CN 202011325790 A CN202011325790 A CN 202011325790A CN 112416557 B CN112416557 B CN 112416557B
- Authority
- CN
- China
- Prior art keywords
- log
- call
- calling
- identifier
- determining
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 322
- 230000008569 process Effects 0.000 claims abstract description 237
- 230000000977 initiatory effect Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 13
- 238000011144 upstream manufacturing Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种调用关系的确定方法和装置、存储介质及电子装置,上述方法包括:获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。通过本发明,可以解决相关技术中确定对象间的调用关系效率较低的技术问题,提高了确定对象间的调用关系的效率。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种调用关系的确定方法和装置、存储介质及电子装置。
背景技术
相关技术中,多个系统之间以及相同系统内部的对象之间通常具有复杂的调用关系。以系统为业务系统为例,一个对象(包括但不限于接口)可以作为被调用端被外部系统的对象以及同一系统内的对象调用,也可以作为调用端对外部系统的对象以及同一系统内的对象进行调用。获知每个对象的调用量、调用耗时、调用成功与失败的次数对维护整个系统的稳定性有着至关重要的作用。
相关技术中,针对某个对象分析其调用关系并进行相关信息的统计时,通常采用在系统内部进行代码的硬编写的方式,将用于分析对象之间的调用关系的代码以硬编码的方式写入到调用端的程序代码中,该方式对于调用端的调用逻辑有着较高的要求,并且由于需要写入大量代码,从而导致复杂度较高、效率较低;并且,由于该方式中对程序代码进行了大量的改写,因此将会影响对象自身的稳定性与性能,甚至严重时,写入到程序代码中的用于分析对象调用关系代码导致的错误会导致整个对象不可用;以及,当系统结构复杂时(如出现多个外部系统的相互调用),需要编写更多的代码,从而破坏了代码架构、影响开发效率,消耗了大量的人力与物力。
针对相关技术中,确定对象间的调用关系效率较低的技术问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种调用关系的确定方法和装置、存储介质及电子装置,以至少解决相关技术中确定对象间的调用关系效率较低的技术问题。
根据本发明的一个实施例,提供了一种调用关系的确定方法,包括:获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
可选地,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:在所述调用日志集合中的调用标识均相同的情况下,确定所述一个调用过程包括一个子调用过程;确定所述调用日志集合中的第一日志和第二日志,其中,所述第一日志中的身份标识用于指示生成所述第一日志的第一对象在所述一个调用过程中的身份为调用端,所述第二日志中的身份标识用于指示生成所述第二日志的第二对象在所述一个调用过程中的身份为被调用端;确定所述对象集合中的对象之间的调用关系包括所述第一对象在所述一个调用过程中调用所述第二对象。
可选地,所述方法还包括:确定所述第一日志中的目标发起日志和目标接收日志,其中,所述第一日志包括多个日志,所述多个日志包括所述目标发起日志和所述目标接收日志,所述目标发起日志中的时间戳为所述第一日志中的时间戳的最小值,所述目标接收日志的时间戳为所述第一日志中的时间戳的最大值;确定所述接收日志中的时间戳与所述发起日志中的时间戳的差值;将所述差值确定为所述第一对象调用所述第二对象的调用耗时。
可选地,所述方法还包括:确定所述第一日志中的发起日志的数量,其中,每个所述发起日志用于指示每个所述发起日志是所述第一对象发起对所述第二对象的调用时生成的日志;将所述数量确定为所述第一对象调用所述第二对象的调用次数。
可选地,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的子调用过程所属的一个调用过程;在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
可选地,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:在所述调用日志集合中具有所述第一前缀的调用标识均相同的情况下,确定所述第一调用过程包括一个子调用过程;确定所述调用日志集合中的第三日志和第四日志,其中,所述第三日志和所述第四日志中的调用标识的前缀均为所述第一前缀,所述第三日志中的身份标识用于指示生成所述第三日志的第三对象在所述第一调用过程中的身份为调用端,所述第四日志中的身份标识用于指示生成所述第四日志的第四对象在所述第一调用过程中的身份为被调用端;确定所述第三对象在所述第一调用过程中调用所述第四对象。
可选地,所述每个调用标识还包括后缀,所述每个调用标识的后缀用于标识所述所属的一个调用过程中的一个子调用过程,其中,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:在所述调用日志集合中具有所述第一前缀的调用标识不相同的情况下,确定所述第一调用过程包括多个子调用过程;确定所述调用日志集合中的第一集合,其中,所述第一集合中的每个调用日志的调用标识的前缀为所述第一前缀,重复执行以下步骤,直至当前集合为空,所述当前集合被初始化为所述第一集合,第五对象、第六对象以及当前对象被初始化为空:确定当前集合是否为空,在所述当前集合不为空的情况下,确定所述当前集合中的第五日志和第六日志,其中,所述第五日志和所述第六日志的调用标识的后缀相同,并且所述第五日志和所述第六日志的调用标识的后缀的长度为所述当前集合中的调用日志的调用标识后缀长度的最大值;在所述第五日志中记录的身份标识用于指示生成所述第五日志的对象在当前子调用过程中的身份为调用端,所述第六日志中记录的身份标识用于指示生成所述第六日志的对象在所述当前子调用过程中的身份为被调用端的情况下,将生成所述第五日志的对象确定为所述第五对象、且将生成所述第六日志的对象确定为所述第六对象,其中,所述当前子调用过程为所述第五日志的调用标识的后缀所标识的子调用过程;确定所述第五对象在所述当前子调用过程中调用所述第六对象;将所述第五对象确定为所述当前对象;删除所述当前集合中的目标日志,将得到的日志集合确定为所述当前集合,其中,所述目标日志的调用标识的后缀与所述第五日志的调用标识的后缀相同。
可选地,在所述将所述第五对象确定为所述当前对象之前,所述方法还包括:在所述当前对象不为空的情况下,在所述第六对象与所述当前对象所属的业务系统相同、且所属的子系统相同的情况下,确定所述第六对象在所述第一调用过程中调用所述当前对象,并且所述第六对象对所述当前对象的调用为所述相同子系统中的内部调用,其中,所述每个调用日志中还包括生成所述每个调用日志的对象所属的业务系统和子系统,每个业务系统包括至少一个子系统。
根据本发明的另一个实施例,提供了一种调用关系的确定装置,包括:获取模块,用于获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;确定模块,用于根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
可选地,所述确定模块,还用于:在所述调用日志集合中的调用标识均相同的情况下,确定所述一个调用过程包括一个子调用过程;确定所述调用日志集合中的第一日志和第二日志,其中,所述第一日志中的身份标识用于指示生成所述第一日志的第一对象在所述一个调用过程中的身份为调用端,所述第二日志中的身份标识用于指示生成所述第二日志的第二对象在所述一个调用过程中的身份为被调用端;确定所述对象集合中的对象之间的调用关系包括所述第一对象在所述一个调用过程中调用所述第二对象。
可选地,所述确定模块,还用于:确定所述第一日志中的目标发起日志和目标接收日志,其中,所述第一日志包括多个日志,所述多个日志包括所述目标发起日志和所述目标接收日志,所述目标发起日志中的时间戳为所述第一日志中的时间戳的最小值,所述目标接收日志的时间戳为所述第一日志中的时间戳的最大值;确定所述接收日志中的时间戳与所述发起日志中的时间戳的差值;将所述差值确定为所述第一对象调用所述第二对象的调用耗时。
可选地,所述确定模块,还用于:确定所述第一日志中的发起日志的数量,其中,每个所述发起日志用于指示每个所述发起日志是所述第一对象发起对所述第二对象的调用时生成的日志;将所述数量确定为所述第一对象调用所述第二对象的调用次数。
可选地,所述确定模块,还用于:在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的子调用过程所属的一个调用过程;在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
可选地,所述确定模块,还用于:在所述调用日志集合中具有所述第一前缀的调用标识均相同的情况下,确定所述第一调用过程包括一个子调用过程;确定所述调用日志集合中的第三日志和第四日志,其中,所述第三日志和所述第四日志中的调用标识的前缀均为所述第一前缀,所述第三日志中的身份标识用于指示生成所述第三日志的第三对象在所述第一调用过程中的身份为调用端,所述第四日志中的身份标识用于指示生成所述第四日志的第四对象在所述第一调用过程中的身份为被调用端;确定所述第三对象在所述第一调用过程中调用所述第四对象。
可选地,所述每个调用标识还包括后缀,所述每个调用标识的后缀用于标识所述所属的一个调用过程中的一个子调用过程,其中,所述确定模块,还用于:在所述调用日志集合中具有所述第一前缀的调用标识不相同的情况下,确定所述第一调用过程包括多个子调用过程;确定所述调用日志集合中的第一集合,其中,所述第一集合中的每个调用日志的调用标识的前缀为所述第一前缀,重复执行以下步骤,直至当前集合为空,所述当前集合被初始化为所述第一集合,第五对象、第六对象以及当前对象被初始化为空:确定当前集合是否为空,在所述当前集合不为空的情况下,确定所述当前集合中的第五日志和第六日志,其中,所述第五日志和所述第六日志的调用标识的后缀相同,并且所述第五日志和所述第六日志的调用标识的后缀的长度为所述当前集合中的调用日志的调用标识后缀长度的最大值;在所述第五日志中记录的身份标识用于指示生成所述第五日志的对象在当前子调用过程中的身份为调用端,所述第六日志中记录的身份标识用于指示生成所述第六日志的对象在所述当前子调用过程中的身份为被调用端的情况下,将生成所述第五日志的对象确定为所述第五对象、且将生成所述第六日志的对象确定为所述第六对象,其中,所述当前子调用过程为所述第五日志的调用标识的后缀所标识的子调用过程;确定所述第五对象在所述当前子调用过程中调用所述第六对象;将所述第五对象确定为所述当前对象;删除所述当前集合中的目标日志,将得到的日志集合确定为所述当前集合,其中,所述目标日志的调用标识的后缀与所述第五日志的调用标识的后缀相同。
可选地,所述确定模块,还用于:在所述将所述第五对象确定为所述当前对象之前,在所述当前对象不为空的情况下,在所述第六对象与所述当前对象所属的业务系统相同、且所属的子系统相同的情况下,确定所述第六对象在所述第一调用过程中调用所述当前对象,并且所述第六对象对所述当前对象的调用为所述相同子系统中的内部调用,其中,所述每个调用日志中还包括生成所述每个调用日志的对象所属的业务系统和子系统,每个业务系统包括至少一个子系统。
可选地,根据本发明的另一个实施例,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法。
可选地,根据本发明的另一个实施例,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。
通过本发明,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。由于对象在调用过程中生成调用日志,每个调用日志中均包括一个调用标识和身份标识,从而可以根据调用日志中的调用标识和身份标识确定对象之间的调用关系,因此,可以解决相关技术中确定对象间的调用关系效率较低的技术问题,提高了确定对象间的调用关系的效率,并且不会对系统的稳定性造成影响,有利于维护系统的稳定性和代码架构。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明实施例的调用关系的确定方法的流程图;
图2为根据本发明实施例的调用过程的示意图;
图3为根据本发明另一实施例的调用过程的示意图;
图4为根据本发明实施例的调用日志的示意图;
图5为根据本发明另一实施例的调用日志的示意图;
图6为根据本发明又一实施例的调用过程的示意图(一);
图7为根据本发明又一实施例的调用过程的示意图(二);
图8为根据本发明实施例的调用关系的确定方法的应用环境示意图;
图9为根据本发明实施例的调用关系的确定方法确定出的调用关系的示意图;
图10是根据本发明实施例的调用关系的确定装置的结构框图;
图11为根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本发明实施例提供了一种调用关系的确定方法,图1为根据本发明实施例的调用关系的确定方法的流程图,如图1所示,包括:
步骤S102,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
步骤S104,根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
通过本发明,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。由于对象在调用过程中生成调用日志,每个调用日志中均包括一个调用标识和身份标识,从而可以根据调用日志中的调用标识和身份标识确定对象之间的调用关系,因此,可以解决相关技术中确定对象间的调用关系效率较低的技术问题,提高了确定对象间的调用关系的效率,并且不会对系统的稳定性造成影响,有利于维护系统的稳定性和代码架构。
在上述实施例中,调用过程指的是一次完整的调用过程,一个调用过程可以包括至少一个子调用过程。如图2所示,包括两个调用过程(即两个完整的调用过程)。其中,对于调用过程1,该调用过程仅包括一个子调用过程,即对象1对对象2的调用,该子调用过程即调用过程1本身;对于调用过程2,包括两个子调用过程,即对象1对对象3的调用,以及对象3对对象4的调用。
在如图3所示的调用过程中,对象1在发起对对象2的调用时,生成调用标识:123.0.1,并生成发起日志,该发起日志中记录了以下信息:“标识1,123.0.1,时间戳1”,其中,标识1为身份标识,用于标识生成该日志的对象为调用端,123.0.1为调用标识,该调用标识的前缀为123,时间戳为生成该发起日志的时间戳;对象1将生成的调用标识发送给对象2,对象2接收到对象1的调用后,生成接收日志,该接收日志中记录了以下信息:“标识2,123.0.1,时间戳2”,标识2用于标识生成该接收日志的对象为被调用端,时间戳2为生成该接收日志的时间。在对象2计算得到调用结果后,向对象1返回调用接收,并生成发起日志,对象1接收到调用结果后,生成接收日志。
其中,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:在所述调用日志集合中的调用标识均相同的情况下,确定所述一个调用过程包括一个子调用过程;确定所述调用日志集合中的第一日志和第二日志,其中,所述第一日志中的身份标识用于指示生成所述第一日志的第一对象在所述一个调用过程中的身份为调用端,所述第二日志中的身份标识用于指示生成所述第二日志的第二对象在所述一个调用过程中的身份为被调用端;确定所述对象集合中的对象之间的调用关系包括所述第一对象在所述一个调用过程中调用所述第二对象。
在上述实施例中,在调用日志集合中的调用标识均相同的情况下,确定调用日志集合中的所有调用日志均是与相同调用过程中的相同子调用过程相关的日志,即对象集合中的对象中仅存在一个调用过程。
可选地,上述实施例还用于执行以下技术方案:确定所述第一日志中的目标发起日志和目标接收日志,其中,所述第一日志包括多个日志,所述多个日志包括所述目标发起日志和所述目标接收日志,所述目标发起日志中的时间戳为所述第一日志中的时间戳的最小值,所述目标接收日志的时间戳为所述第一日志中的时间戳的最大值;确定所述接收日志中的时间戳与所述发起日志中的时间戳的差值;将所述差值确定为所述第一对象调用所述第二对象的调用耗时。
通过上述实施例,可以根据对调用日志的分析,确定出调用过程的调用耗时,而不再需要通过硬编码的方式将用于统计调用耗时的相关代码写入到程序代码中,从而降低了确定调用耗时的复杂度、提高了确定调用耗时的效率,有利于维护系统的稳定性。
需要说明的是,上述实施例还可以执行以下技术方案:确定所述第一日志中的发起日志的数量,其中,每个所述发起日志用于指示每个所述发起日志是所述第一对象发起对所述第二对象的调用时生成的日志;将所述数量确定为所述第一对象调用所述第二对象的调用次数。
在上述实施例中,调用日志中还记录有类型标识,调用端生成的调用日志中的类型标识包括:第一类型标识:用于指示发起对其他对象调用,和第二类型标识:用于指示接收其他对象返回的调用结果;被调用端生成的调用日志中的类型标识包括:第三类型标识:用于指示接收其他对象的调用,和第四类型标识:用于指示发起调用结果。因此,通过上述实施例,可以将第一日志中的所有具有第一类型标识的日志确定为第一日志中的发起日志,并将发起日志的数量确定为所述第一对象调用所述第二对象的调用次数。
作为一种可选的实施方式,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的子调用过程所属的一个调用过程;在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
在上述实施例中,具有不同前缀的调用标识所标识的子调用过程为不同调用过程中的子调用过程。如图4所示,调用日志集合中包括具有第一调用标识123.0.1的调用日志和具有第二调用标识456.0.1的调用日志,由于两个调用标识的前缀(即123和456)不同,确定对象集合之间存在两个不同的完整调用过程。
作为一种可选的实施方式,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:在所述调用日志集合中具有所述第一前缀的调用标识均相同的情况下,确定所述第一调用过程包括一个子调用过程;确定所述调用日志集合中的第三日志和第四日志,其中,所述第三日志和所述第四日志中的调用标识的前缀均为所述第一前缀,所述第三日志中的身份标识用于指示生成所述第三日志的第三对象在所述第一调用过程中的身份为调用端,所述第四日志中的身份标识用于指示生成所述第四日志的第四对象在所述第一调用过程中的身份为被调用端;确定所述第三对象在所述第一调用过程中调用所述第四对象。
在上述实施例中,可以采用与确定对象集合中的对象在第一调用过程中的调用关系类似的方式,确定对象集合中的对象在第二调用过程中的调用关系,由于确定方式类似,本申请在此不再赘述。
作为一种可选的实施方式,所述每个调用标识还包括后缀,所述每个调用标识的后缀用于标识所述所属的一个调用过程中的一个子调用过程,其中,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:在所述调用日志集合中具有所述第一前缀的调用标识不相同的情况下,确定所述第一调用过程包括多个子调用过程;确定所述调用日志集合中的第一集合,其中,所述第一集合中的每个调用日志的调用标识的前缀为所述第一前缀,重复执行以下步骤,直至当前集合为空,所述当前集合被初始化为所述第一集合,第五对象、第六对象以及当前对象被初始化为空:确定当前集合是否为空,在所述当前集合不为空的情况下,确定所述当前集合中的第五日志和第六日志,其中,所述第五日志和所述第六日志的调用标识的后缀相同,并且所述第五日志和所述第六日志的调用标识的后缀的长度为所述当前集合中的调用日志的调用标识后缀长度的最大值;在所述第五日志中记录的身份标识用于指示生成所述第五日志的对象在当前子调用过程中的身份为调用端,所述第六日志中记录的身份标识用于指示生成所述第六日志的对象在所述当前子调用过程中的身份为被调用端的情况下,将生成所述第五日志的对象确定为所述第五对象、且将生成所述第六日志的对象确定为所述第六对象,其中,所述当前子调用过程为所述第五日志的调用标识的后缀所标识的子调用过程;确定所述第五对象在所述当前子调用过程中调用所述第六对象;将所述第五对象确定为所述当前对象;删除所述当前集合中的目标日志,将得到的日志集合确定为所述当前集合,其中,所述目标日志的调用标识的后缀与所述第五日志的调用标识的后缀相同。
其中,在所述将所述第五对象确定为所述当前对象之前,所述方法还包括:在所述当前对象不为空的情况下,在所述第六对象与所述当前对象所属的业务系统相同、且所属的子系统相同的情况下,确定所述第六对象在所述第一调用过程中调用所述当前对象,并且所述第六对象对所述当前对象的调用为所述相同子系统中的内部调用,其中,所述每个调用日志中还包括生成所述每个调用日志的对象所属的业务系统和子系统,每个业务系统包括至少一个子系统。
在上述实施例中,可以按照不同的业务类型、业务内容等对系统进行划分,得到多个系统;对于每个系统,可以按照该系统所提供的不同功能划分得到多个子系统,其中不同子系统提供的功能不同。对象集合中的每个对象具有所属的系统,和所属的该系统下的子系统,对象包括但不限于系统、子系统以及接口。作为一个可选的实施例,每个调用日志中还包括生成该调用日志的对象所属的系统、所属的子系统,以及对象标识,即调用日志中还包括以下信息:“所属系统,所属子系统,对象标识”。其中,对象标识包括但不限于对象名称或其他用于标识对象的数据。如图5所示,每个调用日志的调用标识中还包括后缀,例如:0.1,和0.1.1。其中,由于图5中的调用标识的前缀均为123,确定这些调用日志是属于一个相同的完整调用过程的,并且后缀不同的调用标识对应该一个完整调用过程中的不同子调用过程。如图6所示,基于上述实施例,可以确定出对象3在一次子调用过程对调用对象4,对象2在一次子调用过程对调用对象3,对象1在一次子调用过程对调用对象2,以及根据对象2和对象3属于相同系统下的相同子系统,因此确定对象2对对象3的调用为相同子系统内部的调用。
以下结合一示例,对上述实施例中的调用关系的确定方法进行解释说明,但不用于限定本发明实施例的技术方案。
如图7所示,在一次完整的调用过程中,节点1发起对节点2的调用,其中节点2嵌套调用节点3,CS、CR分别为调用端发起调用和接收调用结果时生成的日志,SR、SS分别被调用端接收到调用和发起调用结果时生成的日志。在一个完整的调用过程中,整个链路通过同一个标识(ID)(即上述实施例中的前缀)进行标识,后续在数据处理时便可根据该ID分辨出同一链路,从而对调用过程中的上下游进行分析。
在该完整的调用过程中,通过后缀来标识一个子调用过程,其中,每新发起一个子调用过程,调用标识的后缀中增加新的标识为(例如“1”)。以图7所示,以对象包括节点为例,节点1生成的调用日志中的调用标识为ID.0.1,节点2生成的发起日志中的调用标识为ID.0.1.1,其中,节点2发起对节点3的调用时,将接收到的节点1发送的调用标识的后缀增加一个标识位“1”,从而得到具有新的后缀的调用标识:ID.0.1.1。
在上述实施例中,以节点为接口为例,每个节点在调用过程中生成调用日志,其中记录了该节点所属的系统、子系统以及接口名称,在后续可以根据这些信息分析出上下游接口之间的调用关系。可选地,调用日志中还包括了以下信息:时间戳。
通过上述实施例,还可以确定出对象集合之间的上下游关系。以图6为例,在上述实施例中,可以确定出对象集合中的对象之间具有以下类型的上下游关系:
直接上下游关系:对象1与对象2,对象2与对象3,对象3与对象4,均是直接上下游关系;
间接上下游关系:对象2与对象4之间是间接上下游关系。
上述实施例可以实时处理分析超大数据量的上下游调用关系,并可以被应用在图8所示的应用环境中。如图8所示,各系统日志统一写出到开源流处理平台Kafka中,Kafka可以作为一个高吞吐量的数据缓冲。Flink实时程序1读取各系统日志,并执行上述实施例中的调用关系的确定方法,分析出调用数据(包括但不限于每次调用过程中的调用端、被调用端、对应的时间戳等信息),将调用数据写入数据库(包括但不限于MySQL)中。可选地,可以根据写入到数据库中的调用数据统计每次调用的耗时等信息。同时,为维护调用关系,需建立字典表,但由于字典表数据在写入MySQL时需要去重,会对MySQL造成巨大的压力,因此在上述实施例中将字典表数据回写到Kafka,由Flink实时程序2对数据进行去重,并将去重后的调用数据数据写入到MySQL中。
可选地,实时程序还可以是Spark,SparkStream程序,或其它采用缓存组件提供数据缓存与收集服务的程序或组件。
作为一个示例,上述实施例中的对象包括但不限于系统中的子系统,接口等对象。通过上述实施例,作为一个示例,可以确定出如图9所示的调用关系,其中,图9中的系统包括但不限于应用服务系统(AppServer)、IFTTT系统等系统。
可选地,在上述实施例中可以进一步计算出每个接口的被调用次数、调用耗时以及成功率信息。
通过上述实施例,实现了接口调用过程与分析接口调用关系之间的解耦,因此,即使系统复杂度增加,仍然可以自动维护上下游调用关系及分析接口调用情况,并且支持调用量巨大的多系统调用上下游分析;上述实施例中是基于链式日志分析,接口仅需异步打印日志,对原系统的影响微乎其微对原系统的架构及性能的影响微乎其微,能够实现对于多个系统之间复杂调用关系的确定;当数据量巨大时上述实施例仍然可以进行实时分析,无需人工参与;由于接口调用过程与分析接口调用关系之间的解耦,从而大大减少了程序后期的维护工作量,极大的提升了系统的可扩展性。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,执行拖拽编辑操作时,对各种内容格式的圈中,编辑内容时对各种内容的识别和打开对应的编辑工具,圈中内容的选中以及拖拽不限于右键双击等操作。本发明的保护范围应以权利要求的保护范围为准。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明的另一个实施例,提供了一种调用关系的确定装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明实施例的调用关系的确定装置的结构框图,该装置包括:
获取模块92,用于获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
确定模块94,用于根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
通过本发明,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。由于对象在调用过程中生成调用日志,每个调用日志中均包括一个调用标识和身份标识,从而可以根据调用日志中的调用标识和身份标识确定对象之间的调用关系,因此,可以解决相关技术中确定对象间的调用关系效率较低的技术问题,提高了确定对象间的调用关系的效率,并且不会对系统的稳定性造成影响,有利于维护系统的稳定性和代码架构。
在上述实施例中,所述确定模块94,还用于:在所述调用日志集合中的调用标识均相同的情况下,确定所述一个调用过程包括一个子调用过程;确定所述调用日志集合中的第一日志和第二日志,其中,所述第一日志中的身份标识用于指示生成所述第一日志的第一对象在所述一个调用过程中的身份为调用端,所述第二日志中的身份标识用于指示生成所述第二日志的第二对象在所述一个调用过程中的身份为被调用端;确定所述对象集合中的对象之间的调用关系包括所述第一对象在所述一个调用过程中调用所述第二对象。
其中,所述确定模块94,还用于:确定所述第一日志中的目标发起日志和目标接收日志,其中,所述第一日志包括多个日志,所述多个日志包括所述目标发起日志和所述目标接收日志,所述目标发起日志中的时间戳为所述第一日志中的时间戳的最小值,所述目标接收日志的时间戳为所述第一日志中的时间戳的最大值;确定所述接收日志中的时间戳与所述发起日志中的时间戳的差值;将所述差值确定为所述第一对象调用所述第二对象的调用耗时。
可选地,所述确定模块94,还用于:确定所述第一日志中的发起日志的数量,其中,每个所述发起日志用于指示每个所述发起日志是所述第一对象发起对所述第二对象的调用时生成的日志;将所述数量确定为所述第一对象调用所述第二对象的调用次数。
基于上述实施例,所述确定模块94,还用于:在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的子调用过程所属的一个调用过程;在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
在一个可选的实施例中,所述确定模块,还用于:在所述调用日志集合中具有所述第一前缀的调用标识均相同的情况下,确定所述第一调用过程包括一个子调用过程;确定所述调用日志集合中的第三日志和第四日志,其中,所述第三日志和所述第四日志中的调用标识的前缀均为所述第一前缀,所述第三日志中的身份标识用于指示生成所述第三日志的第三对象在所述第一调用过程中的身份为调用端,所述第四日志中的身份标识用于指示生成所述第四日志的第四对象在所述第一调用过程中的身份为被调用端;确定所述第三对象在所述第一调用过程中调用所述第四对象。
其中,所述每个调用标识还包括后缀,所述每个调用标识的后缀用于标识所述所属的一个调用过程中的一个子调用过程,其中,所述确定模块,还用于:在所述调用日志集合中具有所述第一前缀的调用标识不相同的情况下,确定所述第一调用过程包括多个子调用过程;确定所述调用日志集合中的第一集合,其中,所述第一集合中的每个调用日志的调用标识的前缀为所述第一前缀,重复执行以下步骤,直至当前集合为空,所述当前集合被初始化为所述第一集合,第五对象、第六对象以及当前对象被初始化为空:确定当前集合是否为空,在所述当前集合不为空的情况下,确定所述当前集合中的第五日志和第六日志,其中,所述第五日志和所述第六日志的调用标识的后缀相同,并且所述第五日志和所述第六日志的调用标识的后缀的长度为所述当前集合中的调用日志的调用标识后缀长度的最大值;在所述第五日志中记录的身份标识用于指示生成所述第五日志的对象在当前子调用过程中的身份为调用端,所述第六日志中记录的身份标识用于指示生成所述第六日志的对象在所述当前子调用过程中的身份为被调用端的情况下,将生成所述第五日志的对象确定为所述第五对象、且将生成所述第六日志的对象确定为所述第六对象,其中,所述当前子调用过程为所述第五日志的调用标识的后缀所标识的子调用过程;确定所述第五对象在所述当前子调用过程中调用所述第六对象;将所述第五对象确定为所述当前对象;删除所述当前集合中的目标日志,将得到的日志集合确定为所述当前集合,其中,所述目标日志的调用标识的后缀与所述第五日志的调用标识的后缀相同。
需要说明的是,所述确定模块,还用于:在所述将所述第五对象确定为所述当前对象之前,在所述当前对象不为空的情况下,在所述第六对象与所述当前对象所属的业务系统相同、且所属的子系统相同的情况下,确定所述第六对象在所述第一调用过程中调用所述当前对象,并且所述第六对象对所述当前对象的调用为所述相同子系统中的内部调用,其中,所述每个调用日志中还包括生成所述每个调用日志的对象所属的业务系统和子系统,每个业务系统包括至少一个子系统。
本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
S2,根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
S2,根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述一个子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程。
图11是根据本发明实施例的一种可选的电子装置的结构示意图。可选地,本领域普通技术人员可以理解,图11所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图11中所示更多或者更少的组件(如网络接口等),或者具有与图11所示不同的配置。
其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的调用关系的确定方法和调用关系的确定装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的调用关系的确定方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,上述存储器1002中可以但不限于包括上述调用关系的确定装置的获取模块92,确定模块94。此外,还可以包括但不限于上述调用关系的确定装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输设备1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输设备1006包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输设备1006为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1008,用于显示画面;和连接总线1010,用于连接上述电子装置中的各个模块部件。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种调用关系的确定方法,其特征在于,包括:
获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程;
其中,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:
在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的所述子调用过程所属的一个调用过程;
在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;
根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
2.根据权利要求1所述的方法,其特征在于,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,包括:
在所述调用日志集合中的调用标识均相同的情况下,确定所述一个调用过程包括一个子调用过程;
确定所述调用日志集合中的第一日志和第二日志,其中,所述第一日志中的身份标识用于指示生成所述第一日志的第一对象在所述一个调用过程中的身份为调用端,所述第二日志中的身份标识用于指示生成所述第二日志的第二对象在所述一个调用过程中的身份为被调用端;
确定所述对象集合中的对象之间的调用关系包括所述第一对象在所述一个调用过程中调用所述第二对象。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述第一日志中的目标发起日志和目标接收日志,其中,所述第一日志包括多个日志,所述多个日志包括所述目标发起日志和所述目标接收日志,所述目标发起日志中的时间戳为所述第一日志中的时间戳的最小值,所述目标接收日志的时间戳为所述第一日志中的时间戳的最大值;
确定所述接收日志中的时间戳与所述发起日志中的时间戳的差值;
将所述差值确定为所述第一对象调用所述第二对象的调用耗时。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述第一日志中的发起日志的数量,其中,每个所述发起日志用于指示每个所述发起日志是所述第一对象发起对所述第二对象的调用时生成的日志;
将所述数量确定为所述第一对象调用所述第二对象的调用次数。
5.根据权利要求1所述的方法,其特征在于,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:
在所述调用日志集合中具有所述第一前缀的调用标识均相同的情况下,确定所述第一调用过程包括一个子调用过程;
确定所述调用日志集合中的第三日志和第四日志,其中,所述第三日志和所述第四日志中的调用标识的前缀均为所述第一前缀,所述第三日志中的身份标识用于指示生成所述第三日志的第三对象在所述第一调用过程中的身份为调用端,所述第四日志中的身份标识用于指示生成所述第四日志的第四对象在所述第一调用过程中的身份为被调用端;
确定所述第三对象在所述第一调用过程中调用所述第四对象。
6.根据权利要求1所述的方法,其特征在于,所述每个调用标识还包括后缀,所述每个调用标识的后缀用于标识所述所属的一个调用过程中的一个子调用过程,其中,所述根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,包括:
在所述调用日志集合中具有所述第一前缀的调用标识不相同的情况下,确定所述第一调用过程包括多个子调用过程;
确定所述调用日志集合中的第一集合,其中,所述第一集合中的每个调用日志的调用标识的前缀为所述第一前缀,重复执行以下步骤,直至当前集合为空,所述当前集合被初始化为所述第一集合,第五对象、第六对象以及当前对象被初始化为空:
确定当前集合是否为空,在所述当前集合不为空的情况下,确定所述当前集合中的第五日志和第六日志,其中,所述第五日志和所述第六日志的调用标识的后缀相同,并且所述第五日志和所述第六日志的调用标识的后缀的长度为所述当前集合中的调用日志的调用标识后缀长度的最大值;
在所述第五日志中记录的身份标识用于指示生成所述第五日志的对象在当前子调用过程中的身份为调用端,所述第六日志中记录的身份标识用于指示生成所述第六日志的对象在所述当前子调用过程中的身份为被调用端的情况下,将生成所述第五日志的对象确定为所述第五对象、且将生成所述第六日志的对象确定为所述第六对象,其中,所述当前子调用过程为所述第五日志的调用标识的后缀所标识的子调用过程;
确定所述第五对象在所述当前子调用过程中调用所述第六对象;
将所述第五对象确定为所述当前对象;
删除所述当前集合中的目标日志,将得到的日志集合确定为所述当前集合,其中,所述目标日志的调用标识的后缀与所述第五日志的调用标识的后缀相同。
7.根据权利要求6所述的方法,其特征在于,在所述将所述第五对象确定为所述当前对象之前,所述方法还包括:
在所述当前对象不为空的情况下,在所述第六对象与所述当前对象所属的业务系统相同、且所属的子系统相同的情况下,确定所述第六对象在所述第一调用过程中调用所述当前对象,并且所述第六对象对所述当前对象的调用为相同子系统中的内部调用,其中,所述每个调用日志中还包括生成所述每个调用日志的对象所属的业务系统和子系统,每个业务系统包括至少一个子系统。
8.一种调用关系的确定装置,其特征在于,包括:
获取模块,用于获取对象集合生成的调用日志集合,其中,所述调用日志集合中的每个调用日志是所述对象集合中的一个对象在调用过程中生成的日志,所述每个调用日志中均包括一个调用标识和身份标识;
确定模块,用于根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系,其中,所述调用标识用于标识一个调用过程中的子调用过程,所述身份标识用于标识生成调用日志的对象在所述子调用过程中的身份,所述一个调用过程包括至少一个所述子调用过程;
其中,所述确定模块通过如下方式根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象之间的调用关系:
在所述调用日志集合中包括第一调用标识和第二调用标识的情况下,提取所述第一调用标识的前缀得到第一前缀,以及提取所述第二调用标识的前缀得到第二前缀,其中,每个调用标识均包括前缀,所述每个调用标识的前缀用于标识所述每个调用标识所标识的子调用过程所属的一个调用过程;
在所述第一前缀和第二前缀不同的情况下,确定所述对象集合中的对象中存在两个调用过程;
根据所述调用日志集合中的调用标识和身份标识,确定所述对象集合中的对象在第一调用过程中的调用关系,以及所述对象集合中的对象在第二调用过程中的调用关系,其中,所述第一调用过程为所述第一前缀标识的调用过程,所述第二调用过程为所述第二前缀标识的调用过程。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至7任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011325790.2A CN112416557B (zh) | 2020-11-23 | 2020-11-23 | 调用关系的确定方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011325790.2A CN112416557B (zh) | 2020-11-23 | 2020-11-23 | 调用关系的确定方法和装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416557A CN112416557A (zh) | 2021-02-26 |
CN112416557B true CN112416557B (zh) | 2022-12-30 |
Family
ID=74777458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011325790.2A Active CN112416557B (zh) | 2020-11-23 | 2020-11-23 | 调用关系的确定方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416557B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434135B (zh) * | 2021-06-28 | 2023-06-16 | 青岛海尔科技有限公司 | 接口的调用重复度确定方法和装置、存储介质及电子装置 |
CN114610689B (zh) * | 2022-03-17 | 2024-04-30 | 焦点科技股份有限公司 | 一种分布式环境中请求日志的记录和分析方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184612A1 (en) * | 2001-06-01 | 2002-12-05 | Hunt Joseph R. | Runtime configurable caching for component factories |
CN103049438A (zh) * | 2011-10-11 | 2013-04-17 | 镇江精英软件科技有限公司 | 一种数据访问接口管理的方法 |
CN107133047A (zh) * | 2017-05-12 | 2017-09-05 | 微梦创科网络科技(中国)有限公司 | 一种项目运行指标度量方法及装置 |
CN107688899A (zh) * | 2017-08-22 | 2018-02-13 | 北京潘达互娱科技有限公司 | 业务流程监控方法及装置 |
CN109327353B (zh) * | 2018-09-29 | 2022-01-11 | 创新先进技术有限公司 | 业务流量确定方法、装置及电子设备 |
CN109753406B (zh) * | 2018-12-05 | 2022-06-17 | 平安科技(深圳)有限公司 | 接口的性能监控方法、装置、设备及计算机可读存储介质 |
CN110083581B (zh) * | 2019-03-12 | 2024-04-05 | 平安科技(深圳)有限公司 | 一种日志追溯的方法、装置、存储介质及计算机设备 |
CN110727567B (zh) * | 2019-09-09 | 2024-02-02 | 平安证券股份有限公司 | 软件质量检测的方法、装置、计算机设备和存储介质 |
-
2020
- 2020-11-23 CN CN202011325790.2A patent/CN112416557B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112416557A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN109033471B (zh) | 一种信息资产识别方法及装置 | |
CN111400127B (zh) | 业务日志的监控方法及装置、存储介质、计算机设备 | |
CN112559475B (zh) | 数据实时捕获和传输方法及系统 | |
CN105786998A (zh) | 数据库中间件系统及利用其处理数据的方法 | |
CN111694644A (zh) | 基于机器人操作系统的消息处理方法、装置及计算机设备 | |
CN111181800B (zh) | 测试数据处理方法、装置、电子设备及存储介质 | |
CN112416557B (zh) | 调用关系的确定方法和装置、存储介质及电子装置 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN111966289A (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN114500690A (zh) | 接口数据处理方法、装置、电子设备及存储介质 | |
CN111367760A (zh) | 日志采集方法及装置、计算机设备、存储介质 | |
CN116132553A (zh) | 一种大数据传输优化方法及系统 | |
CN116204438A (zh) | 测试用例生成方法、自动化测试方法和相关装置 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
CN109783330B (zh) | 日志处理方法、显示方法和相关装置、系统 | |
CN114416485A (zh) | 数据处理方法及装置 | |
CN114092246A (zh) | 金融交易链路的问题定位方法及装置 | |
CN110442439B (zh) | 任务进程处理方法、装置和计算机设备 | |
CN104253718A (zh) | 一种网络测试方法和装置 | |
CN111193631B (zh) | 信息处理方法、系统和计算机可读存储介质 | |
CN113434604B (zh) | 一种时序数据库同步方法、系统、设备及存储介质 | |
CN115664992A (zh) | 网络运行数据的处理方法、装置、电子设备及介质 | |
CN115412592A (zh) | 业务处理系统以及方法 | |
CN111314805B (zh) | 一种gpon系统互通omci消息的调试方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |