CN112433757A - 一种确定接口调用关系的方法和装置 - Google Patents

一种确定接口调用关系的方法和装置 Download PDF

Info

Publication number
CN112433757A
CN112433757A CN202011357640.XA CN202011357640A CN112433757A CN 112433757 A CN112433757 A CN 112433757A CN 202011357640 A CN202011357640 A CN 202011357640A CN 112433757 A CN112433757 A CN 112433757A
Authority
CN
China
Prior art keywords
calling
interface
determining
relation
call
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
CN202011357640.XA
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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202011357640.XA priority Critical patent/CN112433757A/zh
Publication of CN112433757A publication Critical patent/CN112433757A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种确定接口调用关系的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取生产日志,生产日志包括多个调用接口分别对应的调用数据;根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口;根据第一调用接口和调用数据,确定多个调用接口的调用关系。该实施方式无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。

Description

一种确定接口调用关系的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种确定接口调用关系的方法和装置。
背景技术
随着计算机技术的发展,计算机系统处理的数据量越来越大、任务也越来越复杂,因此计算机系统将任务划分为多个不同的子任务,然后将不同的子任务交由对应的子系统进行处理,再将子系统处理得到的结果通过接口调用的方式,传递给其他子系统。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
对于银行系统而言,其内部存在着大量且复杂的接口调用关系,架构师需要对接口调用关系进行梳理,但是目前架构师通常是通过查看生产日志,凭借自己的经验进行手动梳理,不仅工作周期长、效率低下,而且手动梳理得到的数据准确率也较低。
发明内容
有鉴于此,本发明实施例提供一种确定接口调用关系的方法和装置,在获取到生产日志后,能够自动根据生产日志中的调用数据,在多个调用接口中确定出未被其他调用接口所调用的第一调用接口,再根据该第一调用接口和调用数据,确定出多个调用接口之间的调用关系,从而无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种确定接口调用关系的方法。
本发明实施例的一种确定接口调用关系的方法包括:
获取生产日志,生产日志包括多个调用接口分别对应的调用数据;
根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口;
根据第一调用接口和调用数据,确定多个调用接口的调用关系。
可选地,
根据第一调用接口和调用数据,确定多个调用接口的调用关系,包括:
将第一调用接口作为当前调用接口;
循环执行以下步骤,直至当前调用接口未调用其他调用接口,并将当前调用接口作为调用关系的末端:
根据调用数据,确定多个调用接口中被当前调用接口所调用的第二调用接口;
记录当前调用接口与第二调用接口之间的调用关系,并将第二调用接口作为当前调用接口。
可选地,
该方法还包括:
将第一调用接口作为调用关系的发起端。
可选地,
该方法还包括:
构建接口调用关系树,将调用关系的发起端作为接口调用关系树的根节点,并根据发起端以及调用关系,确定每一个调用接口在接口调用关系树中的节点位置。
可选地,
当同一个发起端对应多个调用关系时,构建接口调用关系树,包括:
针对发起端,确定每一个调用关系对应的第一标识码;
当多个调用关系的第一标识码相同时,删除重复的第一标识码所对应的调用关系;
根据删除后的调用关系,构建接口调用关系树。
可选地,
根据调用关系所对应的哈希值,确定第一标识码;其中,哈希值包含于生产日志中。
可选地,
生产日志还包括:调用数据对应的第二标识码;
确定并删除重复的第二标识码对应的调用数据;
根据删除后的调用数据,确定调用关系。
可选地,
生产日志还包括:调用数据对应的调用条件;
根据调用条件,确定多个调用接口的调用关系;
根据调用关系,在接口调用关系树中对应的节点记录调用条件。
可选地,
调用条件包括:组合调用条件和/或互斥调用条件。
可选地,
接收接口管理请求;
根据接口调用关系树,响应接口管理请求。
可选地,
接口管理请求为接口调用请求,接口调用请求指示了发起接口调用请求的请求接口、以及请求接口待调用的目标接口;
根据接口调用关系树,确定请求接口与目标接口之间是否具有调用关系;
当请求接口与目标接口之间具有调用关系时,确定请求接口是否具有调用目标接口的权限,如果是,响应接口调用请求。
可选地,
接口管理请求为接口维护请求,接口维护请求指示了待维护接口以及维护信息;
从接口调用关系树中查找与待维护接口对应的节点;
根据维护信息,对查找到的节点进行维护,以响应接口维护请求。
可选地,
当存在多个不同的第一调用接口时,并行或串行确定每一个第一调用接口对应的调用关系。
可选地,
该方法还包括:
将确定出的调用关系记录到接口调用关系文件。
可选地,
该方法还包括:
在接口调用关系文件中记录服务码说明、子系统信息以及网关信息。
为实现上述目的,根据本发明实施例的又一方面,提供了一种确定接口调用关系的装置。
本发明实施例的一种确定接口调用关系的装置包括日志获取模块、接口确定模块以及调用关系确定模块;其中:
日志获取模块,用于获取生产日志,生产日志包括多个调用接口分别对应的调用数据;
接口确定模块,用于根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口;
调用关系确定模块,用于根据第一调用接口和调用数据,确定多个调用接口的调用关系。
为实现上述目的,根据本发明实施例的又一方面,提供了一种确定接口调用关系的电子设备。
本发明实施例的一种确定接口调用关系的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明实施例的一种确定接口调用关系的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质。
本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现本发明实施例的一种确定接口调用关系的方法。
上述发明中的一个实施例具有如下优点或有益效果:在获取到生产日志后,能够自动根据生产日志中的调用数据,在多个调用接口中确定出未被其他调用接口所调用的第一调用接口,再根据该第一调用接口和调用数据,确定出多个调用接口之间的调用关系,从而无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种确定接口调用关系的方法的主要步骤的示意图;
图2是根据本发明实施例的另一种确定接口调用关系的方法的主要步骤的示意图;
图3是根据本发明实施例的一种接口调用关系树的结构示意图;
图4是根据本发明实施例的又一种确定接口调用关系的方法的主要步骤的示意图;
图5和图6是根据本发明实施例的一种对生产日志预处理的方法的实现代码截图;
图7是根据本发明实施例的一种排序方法的实现代码截图;
图8是根据本发明实施例的一种计算条件位的方法的实现代码截图;
图9是根据本发明实施例的一种确定接口调用关系的装置的主要模块的示意图;
图10是本发明实施例可以应用于其中的示例性系统架构图;
图11是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
图1是根据本发明实施例的一种确定接口调用关系的方法的主要步骤的示意图。
如图1所示,本发明实施例的一种确定接口调用关系的方法主要包括以下步骤:
步骤S101:获取生产日志,生产日志包括多个调用接口分别对应的调用数据。
在本发明实施例中,生产日志中可以包括以下任意一种或多种调用数据:统计时间timestamp、哈希值hashcode、所属交易路径哈希编码routeHashCode、所属子系统标识app(物理子系统编号)、所属子系统中文名appname(部署平台+物理子系统中文全称)、服务码tc、逻辑子系统LOGICCODE、所属交易路径位置编码nodeNum、交易节点个数nodeAmount、是否叶子节点leaf、叶子类型leafType、平均处理时间aproc、总处理时间tproc、交易量amt、父节点papp、父节点位置parentNodeNum、所属部署单元apgrpMap、交易线标识tradeLineId、发起方安全节点号sndnd、自身安全节点号nd以及最近更新时间LASTUPDATE等。
在本发明一个优选的实施例中,生产日志中包括的调用数据以及形式如下表所示,其中,交易线id与最近更新时间LAST UPDATE两栏中的数据可以是在生产过程中自动生成的。
Figure BDA0002803037290000071
步骤S102:根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口。
在本发明实施例中,由于第一调用接口未被其他调用接口所调用,说明第一调用接口是一条调用关系的起点,因此可以将该第一调用接口作为调用关系的发起端。举例来说,如上表所示,接口A的父节点位置为0,说明接口A没有父节点,即接口A未被其他调用接口所调用,因此接口A是第一调用接口,可以将其作为一个发起端。而接口B、C、D、E和F都有父节点,因此这些节点都不是第一调用接口,也无法作为调用关系的发起端。
在本发明实施例中,由于生产日志的特性,系统中每发生一次接口调用,生产日志都会记录一条信息,因此生产日志中可能包括大量的重复数据,进而导致确定出的调用关系出现重复、占用的内存过多。因此在确定第一调用接口即发起端之后,当同一个发起端对应多个调用关系时,需要对发起端对应的调用关系进行过滤,以删除发起端对应的重复调用关系。具体地,可以针对发起端,确定其每一个调用关系对应的第一标识码,以确定是否有相同的调用关系;当多个调用关系的第一标识码相同时,说明有相同的调用关系,则删除重复的第一标识码所对应的调用关系,以减少对内存的占用。
在本发明实施例中,由于生产日志中针对每一个调用关系均有对应的哈希值hashcode,因此可以根据调用关系所对应的哈希值hashcode,确定第一标识码。在本发明一个优选的实施例中,每一个调用关系的第一标识码可以与其哈希值hashcode相同。
举例来说,对发起端及其对应的调用关系进行去重的方法可以是:遍历生产日志,并对该json格式文件进行解析;将有同一个发起端(parentNodeNum为0)的所有哈希值hashcode放在一起,组成一个map(initationMap),其中,key为发起端的服务码tc和所属子系统标识app(物理子系统编号),value为当前发起端下所有tradeLineId和其对应的routeHashcode组成的字符串;然后根据哈希值hashcode,对发起端及其对应的调用关系进行去重。
步骤S103:根据第一调用接口和调用数据,确定多个调用接口的调用关系。
在本发明实施例中,在确定出第一调用接口即调用关系的起点后,就可以根据第一调用接口和调用数据,确定多个调用接口的调用关系。具体地,如图2所示,图2是根据本发明实施例的另一种确定接口调用关系的方法的主要步骤的示意图,该方法主要包括以下步骤:
步骤S201:将第一调用接口作为当前调用接口;
步骤S202:确定当前调用接口是否调用其他接口,如果是,执行步骤S203,如果否,执行步骤S205;
步骤S203:根据调用数据,确定多个调用接口中被当前调用接口所调用的第二调用接口;
步骤S204:记录当前调用接口与第二调用接口之间的调用关系,并将第二调用接口作为当前调用接口,返回执行步骤S202;
步骤S205:将当前调用接口作为调用关系的末端。
仍以上述实施例中的表格为例,在确定出接口A为发起端之后,将其作为当前调用接口,然后确定父节点位置一栏中是否有接口A,如果有,说明当前调用接口A调用过其他接口。从表格中确定出接口B的父节点位置为接口A,说明当前调用接口A调用了第二调用接口B,则记录该调用关系,并将第二调用接口B作为当前调用接口,再去确定父节点位置一栏中是否有接口B,以此类推,进而确定出接口B调用了接口C和接口E、接口C调用了接口D、接口E调用了接口F。
在本发明实施例中,可以将没有调用其他接口的当前调用接口作为调用关系的末端,例如上述实施例的表格中,当接口D或接口F作为当前调用接口时,在父节点位置一栏中并没有接口D或接口F,则说明当前调用接口D或当前调用接口F并未调用过其他接口,因此可以将当前调用接口D或当前调用接口F分别作为各自调用关系的末端。
在本发明实施例中,也可以根据生产日志中“是否叶子节点”这一调用数据,确定对应的接口是否为调用关系的末端。例如上述实施例的表格中,如果“是否叶子节点”这一栏的数据为1,则对应的接口是叶子节点,该接口为调用关系的末端;如果“是否叶子节点”这一栏的数据为0,则对应的接口不是叶子节点,该接口并非调用关系的末端。因此从表格中可以确定,接口D与接口F在“是否叶子节点”这一栏的数据均为1,说明接口D与接口F分别是其各自调用关系的末端,即接口D与接口F不再调用其他接口。
在本发明实施例中,由于生产日志的特性,系统中每发生一次接口调用,生产日志都会记录一条信息,因此生产日志中可能包括大量的重复数据,进而导致确定出的调用关系出现重复、占用的内存过多。因此在每次确定当前调用接口之后,当同一个当前调用接口对应多个调用关系时,可以对当前调用接口对应的调用关系进行过滤,以删除当前调用接口对应的重复调用关系。
具体地,生产日志中还可以包括:调用数据对应的第二标识码。其中,如果当前调用接口是发起端,则第二标识码可以是哈希值hashcode;如果当前调用接口不是发起端,则第二标识码可以是服务码tc,也可以是服务码tc与所属子系统中文名appname的组合,还可以是其他调用数据,对此本方案不做具体限制。确定出第二标识码及其对应的调用数据之后,可以删除重复的第二标识码对应的调用数据,再根据删除后的调用数据,确定调用关系,以减少对内存的占用。
举例来说,对当前调用接口进行去重的方法可以是:遍历生产日志,并对该json格式文件进行解析;利用深度遍历算法将有同一个哈希值hashcode和同一个发起端的当前调用接口放在一起,组成一个map(nodeMap),其中key为tradeLineId和其对应的routeHashcode组成的字符串,value为其对应的一行数据;然后根据tradeLineId和其对应的routeHashcode,对当前调用接口进行去重。
在本发明实施例中,在对当前调用接口进行去重之后,可以对第二调用接口进行排列,以便于后续构建接口调用关系树。具体地,可以遍历生产日志,并对该json格式文件进行解析;利用广度遍历算法将有同一个hashcode、发起端和发送方的所有接收方放在一起,组成一个map(endMap),其中key为tradeLineId和其对应的routeHashcode、parentNodeNum组成的字符串,value为其对应的一行数据。
在本发明实施例中,确定出多个调用接口的调用关系之后,还可以构建接口调用关系树,以进一步清楚地展示确定出的调用关系。具体地,可以将调用关系的发起端作为接口调用关系树的根节点,再根据发起端以及调用关系,确定每一个调用接口在接口调用关系树中的节点位置。仍以上述实施例中的表格为例,构建出的接口调用关系树形式可以如下所示:
Figure BDA0002803037290000111
在本发明实施例中,当同一个发起端对应多个调用关系时,可以删除重复的第一标识码所对应的调用关系,再根据删除后的调用关系,构建接口调用关系树。
在本发明实施例中,生产日志中还可以包括调用数据对应的调用条件。在本发明一个优选的实施例中,调用条件包括:组合调用条件和/或互斥调用条件。其中,组合调用条件是指同一时间需要调用多个接口的条件,这些被同时调用的接口反映在接口调用关系树中就是组合节点,对组合节点进行编号,就可以得到组合位;互斥调用条件是指同一时间只会调用一个接口的条件,这些彼此被调用时互斥的接口反映在接口调用关系树中就是条件节点,对条件节点进行编号,就可以得到条件位。
在本发明实施例中,当生产日志中包括调用数据对应的调用条件时,可以根据调用条件,确定多个调用接口的调用关系;并根据调用关系,在接口调用关系树中对应的节点记录下该调用条件。举例来说,根据某生产日志确定出:调用关系的发起端A调用接口B;接口B在组合调用条件下同时调用接口C、接口D以及接口E;接口C与接口D不再调用其他接口,分别为调用关系的一个末端;接口E在两个互斥调用条件下分别调用接口F与接口G;接口F不再调用其他接口,为调用关系的一个末端;接口G调用接口H;接口H不再调用其他接口,为调用关系的一个末端,此时该生产日志中的调用数据遍历完毕,构建的接口调用关系树如图3所示。其中,“组合1”、“组合2”与“组合3”是组合位,即同一组合调用条件下的组合节点的编号;“条件1”与“条件2”是条件位,即不同互斥调用条件所对应的条件节点的编号。
在本发明实施例中,在构建接口调用关系树之后,可以接收接口管理请求;并根据接口调用关系树,响应接口管理请求,以提高针对接口管理请求的响应速度。
具体地,当接口管理请求为接口调用请求、该接口调用请求指示了发起接口调用请求的请求接口、以及请求接口待调用的目标接口时,可以根据接口调用关系树,确定请求接口与目标接口之间是否具有调用关系,当确定出请求接口与目标接口之间具有调用关系时,再确定请求接口是否具有调用目标接口的权限,如果是,则响应接口调用请求。如果确定出请求接口与目标接口之间不具有调用关系,则可以直接提示错误,以提高响应的速度。以图3的接口调用关系树为例:某接口管理请求为接口调用请求,该接口调用请求指示了请求接口为接口A、待调用的目标接口为接口H,则可以根据接口调用关系树,首先确定出存在A→B→E→G→H这条调用关系,然后再根据配置文件,确定接口A是否有调用接口H的权限,如果有,则响应接口调用请求。根据配置文件确定接口之间是否有调用权限属于现有技术,对此本方案不再赘述。如果该接口调用请求指示了请求接口为接口D、待调用的目标接口为接口H,则可以根据接口调用关系树,迅速确定出接口D与接口H之间不存在调用关系,直接提示错误,不再进行其他操作。
具体地,当接口管理请求为接口维护请求、该接口维护请求指示了待维护接口以及维护信息时,可以根据接口调用关系树,从接口调用关系树中查找与待维护接口对应的节点;再根据维护信息,对查找到的节点进行维护,以响应接口维护请求,进而提高了响应的速度。以图3的接口调用关系树为例:某接口管理请求为接口维护请求,该接口维护请求指示了待维护接口为接口E、维护信息是接口E无响应,则可以根据接口调用关系树,从接口调用关系树中查找与接口E对应的节点以及其上游节点(即接口B对应的节点),并对查找到的节点(即接口E与接口B分别对应的节点)进行迅速排查和维护,以响应接口维护请求。
在本发明实施例中,当确定出多个不同的第一调用接口时,可以并行或串行确定每一个第一调用接口对应的调用关系,进而可以相应地根据调用关系,并行或串行构建接口调用关系树。
在本发明实施例中,可以将确定出的调用关系记录到接口调用关系文件,以便于根据接口调用关系文件构建接口调用关系树。其中,接口调用关系文件的格式可以是表格,也可以是json文本,还可以是其他格式,对此本方案不做具体限制。
在本发明一个优选的实施例中,还可以在接口调用关系文件中记录网关信息。具体地,可以获取所有物理子系统为NCIMGW或者NKBAGW的第二调用接口所对应的所有调用关系,然后循环执行以下步骤,直至调用关系被遍历完毕:获取当前调用关系的服务码tc,在p6中获取服务码对应的数据;将当前调用关系的被调用方作为调用方,对应p6中的信息作为被调用方存储在当前路径下,以使接口调用关系文件中的相关信息更加完整。
在本发明另一个优选的实施例中,还可以在接口调用关系文件中记录服务码说明以及子系统信息。具体地,可以将其他系统的服务码说明以及子系统信息等数据通过定时任务实时更新写入数据库中,然后根据生产日志中的调用数据查询数据库中更新的服务码说明以及子系统信息,并将服务码说明以及子系统信息写入接口调用关系文件,以使接口调用关系文件中的相关信息更加完整。
在本发明实施例中,还可以支持可配置化挂数,最小粒度到发起端。不需要通过生产数据补充的,可以通过界面配置。不进行数据回填抽取,不会影响已有数据。
在本发明实施例中,根据接口调用关系文件,还可以进行设计态和生产态的数据比对。其中,设计态是在架构设计过程中设计的服务调用关系,生产态是代码开发完成实际执行过程中的服务调用关系。具体地,可以根据接口调用关系文件,将接口调用关系文件中的生产态与预设的设计态相比对,找出差别,以便于后续运行维护过程中调整完善两边数据至相同。
下面以一个较为完整的实施例对本方案提出的一种确定接口调用关系的方法进行说明,图4是根据本发明实施例的又一种确定接口调用关系的方法的主要步骤的示意图。
如图4所示,本发明实施例的又一种确定接口调用关系的方法主要包括以下步骤:
步骤S401:获取生产日志,其中,生产日志包括多个调用接口分别对应的调用数据。
步骤S402:根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口,并将该第一调用接口作为调用关系的发起端。
在本发明实施例中,还可以根据是否要通过生产日志挂数的状态filter_status,从数据库visual_jyx_line_version中确定对应的发起端。其中,filter_status的值为0指示需要挂数,filter_status的值为1指示不需要挂数。
步骤S403:根据生产日志,对发起端进行过滤。
在本发明实施例中,当同一个发起端对应多个调用关系时,删除重复的调用关系。具体地,可以根据发起端的每一个调用关系的哈希值hashcode,删除重复的哈希值hashcode所对应的调用关系,以完成对发起端的过滤。
步骤S404:根据生产日志,去除其他重复的调用数据。
在本发明实施例中,可以根据服务码tc与所属子系统中文名appname(部署平台+物理子系统中文全称),对除发起端之外的其他接口所对应的重复的调用关系进行去重。步骤S403和步骤S404为对生产日志预处理的方法,其实现代码如图5和图6所示。
步骤S405:根据第一调用接口以及调用数据,确定调用关系,并将确定出的调用关系写入接口调用关系文件。
在本发明实施例中,将确定出的调用关系写入接口调用关系文件的过程为:从第一个map(initationMap)里找出当前发起端下的所有哈希值hashcode;判断当前发起端和哈希值hashcode是否已经操作过(该发起端和哈希值hashcode下的交易路径是否已经入库),若操作过,则进行下一个发起端,否则将数据写入接口调用关系文件;根据当前获取的哈希值hashcode找出对应的所有发送方并排序,其中,该排序使用了集合中的排序方法;根据当前的发送方找到属于这个发送方的所有接收方并排序,其中,该排序使用了集合中的排序方法。上述排序方法的实现代码如图7所示。
在本发明实施例中,对发送方和接收方分别排序后,可以再计算条件位和组合位,并将得到的条件位和组合位写入接口调用关系文件。具体地,计算条件位的过程如下:先判断当前发送方是否计算过,如果没计算过,则存储当前的发送方,并设置其条件位的最大值为1,并将当前的发送方作为key和发送方当前最大条件位组成的value作为map放在当前的发送方下,并将当前发送方的条件位递增1;如果计算过,则判断当前的接收方是否计算过,如果计算过,则使用其对应的条件位,如果没计算过,则将当前的发送方作为key和发送方当前最大条件位组成的value作为map放在当前的发送方下,并将当前发送方的条件位递增1。上述计算条件位的方法的实现代码如图8所示。
具体地,计算组合位的过程如下:设置组合位的初始值为1,然后按不同接收方开始递增1,最大值为当前发送方下所有接收方的总和,并且判断当前接收方的nodeNum大于10000和parentNodeNum小于10000,则当前路径的组合位就为9999。
步骤S406:在接口调用关系文件中回填服务码说明。
步骤S407:在接口调用关系文件中回填子系统信息。
步骤S408:在接口调用关系文件中补充P4-P6网关信息。
根据本发明实施例的一种确定接口调用关系的方法可以看出,在获取到生产日志后,能够自动根据生产日志中的调用数据,在多个调用接口中确定出未被其他调用接口所调用的第一调用接口,再根据该第一调用接口和调用数据,确定出多个调用接口之间的调用关系,从而无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。
图9是根据本发明实施例的一种确定接口调用关系的装置的主要模块的示意图。
如图9所示,本发明实施例的一种确定接口调用关系的装置900包括日志获取模块901、接口确定模块902以及调用关系确定模块903;其中:
日志获取模块901,用于获取生产日志,生产日志包括多个调用接口分别对应的调用数据;
接口确定模块902,用于根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口;
调用关系确定模块903,用于根据第一调用接口和调用数据,确定多个调用接口的调用关系。
在本发明实施例中,调用关系确定模块903进一步用于:将第一调用接口作为当前调用接口;循环执行以下步骤,直至当前调用接口未调用其他调用接口,并将当前调用接口作为调用关系的末端:根据调用数据,确定多个调用接口中被当前调用接口所调用的第二调用接口;记录当前调用接口与第二调用接口之间的调用关系,并将第二调用接口作为当前调用接口。
在本发明实施例中,接口确定模块902进一步用于:将第一调用接口作为调用关系的发起端。
在本发明实施例中,调用关系确定模块903进一步用于:构建接口调用关系树,将调用关系的发起端作为接口调用关系树的根节点,并根据发起端以及调用关系,确定每一个调用接口在接口调用关系树中的节点位置。
在本发明实施例中,当同一个发起端对应多个调用关系时,调用关系确定模块903进一步用于:针对发起端,确定每一个调用关系对应的第一标识码;当多个调用关系的第一标识码相同时,删除重复的第一标识码所对应的调用关系;根据删除后的调用关系,构建接口调用关系树。
在本发明实施例中,调用关系确定模块903进一步用于:根据调用关系所对应的哈希值,确定第一标识码;其中,哈希值包含于生产日志中。
在本发明实施例中,生产日志还包括:调用数据对应的第二标识码;调用关系确定模块903进一步用于:确定并删除重复的第二标识码对应的调用数据;根据删除后的调用数据,确定调用关系。
在本发明实施例中,生产日志还包括:调用数据对应的调用条件;调用关系确定模块903进一步用于:根据调用条件,确定多个调用接口的调用关系;根据调用关系,在接口调用关系树中对应的节点记录调用条件。
在本发明实施例中,调用条件包括:组合调用条件和/或互斥调用条件。
在本发明实施例中,调用关系确定模块903进一步用于:接收接口管理请求;根据接口调用关系树,响应接口管理请求。
在本发明实施例中,接口管理请求为接口调用请求,接口调用请求指示了发起接口调用请求的请求接口、以及请求接口待调用的目标接口;调用关系确定模块903进一步用于:根据接口调用关系树,确定请求接口与目标接口之间是否具有调用关系;当请求接口与目标接口之间具有调用关系时,确定请求接口是否具有调用目标接口的权限,如果是,响应接口调用请求。
在本发明实施例中,接口管理请求为接口维护请求,接口维护请求指示了待维护接口以及维护信息;调用关系确定模块903进一步用于:从接口调用关系树中查找与待维护接口对应的节点;根据维护信息,对查找到的节点进行维护,以响应接口维护请求。
在本发明实施例中,调用关系确定模块903进一步用于:当存在多个不同的第一调用接口时,并行或串行确定每一个第一调用接口对应的调用关系。
在本发明实施例中,调用关系确定模块903进一步用于:将确定出的调用关系记录到接口调用关系文件。
在本发明实施例中,调用关系确定模块903进一步用于:在接口调用关系文件中记录服务码说明、子系统信息以及网关信息。
根据本发明实施例的一种确定接口调用关系的装置可以看出,在获取到生产日志后,能够自动根据生产日志中的调用数据,在多个调用接口中确定出未被其他调用接口所调用的第一调用接口,再根据该第一调用接口和调用数据,确定出多个调用接口之间的调用关系,从而无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。
图10示出了可以应用本发明实施例的一种确定接口调用关系的方法或一种确定接口调用关系的装置的示例性系统架构1000。
如图10所示,系统架构1000可以包括终端设备1001、1002、1003,网络1004和电子设备1005。网络1004用以在终端设备1001、1002、1003和电子设备1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1001、1002、1003通过网络1004与电子设备1005交互,以接收或发送消息等。终端设备1001、1002、1003上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备1001、1002、1003可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
电子设备1005可以是提供各种服务的服务器,例如对用户利用终端设备1001、1002、1003所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的一种确定接口调用关系的方法一般由电子设备1005执行,相应地,一种确定接口调用关系的装置一般设置于电子设备1005中。
应该理解,图10中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和电子设备。
下面参考图11,其示出了适于用来实现本发明实施例的终端设备的计算机系统1100的结构示意图。图11示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统1100操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括日志获取模块、接口确定模块以及调用关系确定模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,日志获取模块还可以被描述为“用于获取生产日志的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取生产日志,生产日志包括多个调用接口分别对应的调用数据;根据多个调用接口分别对应的调用数据,确定多个调用接口中未被其他调用接口所调用的第一调用接口;根据第一调用接口和调用数据,确定多个调用接口的调用关系。
根据本发明实施例的技术方案,在获取到生产日志后,能够自动根据生产日志中的调用数据,在多个调用接口中确定出未被其他调用接口所调用的第一调用接口,再根据该第一调用接口和调用数据,确定出多个调用接口之间的调用关系,从而无需再由人工对接口调用关系进行梳理,不仅提高了工作效率,也提高了得到的接口调用关系的准确率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (18)

1.一种确定接口调用关系的方法,其特征在于,包括:
获取生产日志,所述生产日志包括多个调用接口分别对应的调用数据;
根据所述多个调用接口分别对应的调用数据,确定所述多个调用接口中未被其他调用接口所调用的第一调用接口;
根据所述第一调用接口和所述调用数据,确定所述多个调用接口的调用关系。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一调用接口和所述调用数据,确定所述多个调用接口的调用关系,包括:
将所述第一调用接口作为所述当前调用接口;
循环执行以下步骤,直至当前调用接口未调用其他调用接口,并将所述当前调用接口作为所述调用关系的末端:
根据所述调用数据,确定所述多个调用接口中被所述当前调用接口所调用的第二调用接口;
记录所述当前调用接口与所述第二调用接口之间的调用关系,并将所述第二调用接口作为所述当前调用接口。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
将所述第一调用接口作为所述调用关系的发起端。
4.根据权利要求1至3任一所述的方法,其特征在于,该方法还包括:
构建接口调用关系树,将所述调用关系的发起端作为所述接口调用关系树的根节点,并根据所述发起端以及所述调用关系,确定每一个所述调用接口在所述接口调用关系树中的节点位置。
5.根据权利要求4所述的方法,其特征在于,当同一个发起端对应多个调用关系时,所述构建接口调用关系树,包括:
针对所述发起端,确定每一个所述调用关系对应的第一标识码;
当所述多个调用关系的第一标识码相同时,删除重复的所述第一标识码所对应的调用关系;
根据删除后的调用关系,构建所述接口调用关系树。
6.根据权利要求5所述的方法,其特征在于,
根据所述调用关系所对应的哈希值,确定所述第一标识码;其中,所述哈希值包含于所述生产日志中。
7.根据权利要求1所述的方法,其特征在于,所述生产日志还包括:所述调用数据对应的第二标识码;
确定并删除重复的所述第二标识码对应的所述调用数据;
根据删除后的所述调用数据,确定所述调用关系。
8.根据权利要求4所述的方法,其特征在于,所述生产日志还包括:所述调用数据对应的调用条件;
根据所述调用条件,确定所述多个调用接口的调用关系;
根据所述调用关系,在所述接口调用关系树中对应的节点记录所述调用条件。
9.根据权利要求8所述的方法,其特征在于,所述调用条件包括:组合调用条件和/或互斥调用条件。
10.根据权利要求9所述的方法,其特征在于,
接收接口管理请求;
根据所述接口调用关系树,响应所述接口管理请求。
11.根据权利要求10所述的方法,其特征在于,所述接口管理请求为接口调用请求,所述接口调用请求指示了发起所述接口调用请求的请求接口、以及所述请求接口待调用的目标接口;
根据所述接口调用关系树,确定所述请求接口与所述目标接口之间是否具有调用关系;
当所述请求接口与所述目标接口之间具有调用关系时,确定所述请求接口是否具有调用所述目标接口的权限,如果是,响应所述接口调用请求。
12.根据权利要求10所述的方法,其特征在于,所述接口管理请求为接口维护请求,所述接口维护请求指示了待维护接口以及维护信息;
从所述接口调用关系树中查找与所述待维护接口对应的节点;
根据所述维护信息,对查找到的所述节点进行维护,以响应所述接口维护请求。
13.根据权利要求1所述的方法,其特征在于,
当存在多个不同的所述第一调用接口时,并行或串行确定每一个所述第一调用接口对应的调用关系。
14.根据权利要求1所述的方法,其特征在于,该方法还包括:
将确定出的所述调用关系记录到接口调用关系文件。
15.根据权利要求14所述的方法,其特征在于,该方法还包括:
在所述接口调用关系文件中记录服务码说明、子系统信息以及网关信息。
16.一种确定接口调用关系的装置,其特征在于,包括日志获取模块、接口确定模块以及调用关系确定模块;其中:
所述日志获取模块,用于获取生产日志,所述生产日志包括多个调用接口分别对应的调用数据;
所述接口确定模块,用于根据所述多个调用接口分别对应的调用数据,确定所述多个调用接口中未被其他调用接口所调用的第一调用接口;
所述调用关系确定模块,用于根据所述第一调用接口和所述调用数据,确定所述多个调用接口的调用关系。
17.一种确定接口调用关系的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-15中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-15中任一所述的方法。
CN202011357640.XA 2020-11-27 2020-11-27 一种确定接口调用关系的方法和装置 Pending CN112433757A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011357640.XA CN112433757A (zh) 2020-11-27 2020-11-27 一种确定接口调用关系的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011357640.XA CN112433757A (zh) 2020-11-27 2020-11-27 一种确定接口调用关系的方法和装置

Publications (1)

Publication Number Publication Date
CN112433757A true CN112433757A (zh) 2021-03-02

Family

ID=74698544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011357640.XA Pending CN112433757A (zh) 2020-11-27 2020-11-27 一种确定接口调用关系的方法和装置

Country Status (1)

Country Link
CN (1) CN112433757A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905984A (zh) * 2021-03-09 2021-06-04 浙江网商银行股份有限公司 权限控制方法、装置及电子设备
CN113297076A (zh) * 2021-05-21 2021-08-24 建信金融科技有限责任公司 基于调用链的服务变更识别方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105591821A (zh) * 2016-01-06 2016-05-18 北京京东尚科信息技术有限公司 监控系统和业务系统
CN109921927A (zh) * 2019-02-20 2019-06-21 苏州人之众信息技术有限公司 基于微服务的实时调用链跟踪方法
CN110007957A (zh) * 2018-12-17 2019-07-12 阿里巴巴集团控股有限公司 调用链路构建方法、装置及设备
CN110069464A (zh) * 2019-03-16 2019-07-30 平安普惠企业管理有限公司 日志分析处理方法、装置、设备及可读存储介质
CN110569222A (zh) * 2019-08-23 2019-12-13 浙江大搜车软件技术有限公司 链路追踪方法、装置、计算机设备和可读存储介质
CN111245642A (zh) * 2019-12-31 2020-06-05 北京奇才天下科技有限公司 一种获取多系统之间的依赖关系的方法、装置和电子设备
WO2020220638A1 (zh) * 2019-04-29 2020-11-05 平安科技(深圳)有限公司 链路系统与日志系统的关联方法、装置及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105591821A (zh) * 2016-01-06 2016-05-18 北京京东尚科信息技术有限公司 监控系统和业务系统
CN110007957A (zh) * 2018-12-17 2019-07-12 阿里巴巴集团控股有限公司 调用链路构建方法、装置及设备
CN109921927A (zh) * 2019-02-20 2019-06-21 苏州人之众信息技术有限公司 基于微服务的实时调用链跟踪方法
CN110069464A (zh) * 2019-03-16 2019-07-30 平安普惠企业管理有限公司 日志分析处理方法、装置、设备及可读存储介质
WO2020220638A1 (zh) * 2019-04-29 2020-11-05 平安科技(深圳)有限公司 链路系统与日志系统的关联方法、装置及存储介质
CN110569222A (zh) * 2019-08-23 2019-12-13 浙江大搜车软件技术有限公司 链路追踪方法、装置、计算机设备和可读存储介质
CN111245642A (zh) * 2019-12-31 2020-06-05 北京奇才天下科技有限公司 一种获取多系统之间的依赖关系的方法、装置和电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905984A (zh) * 2021-03-09 2021-06-04 浙江网商银行股份有限公司 权限控制方法、装置及电子设备
CN113297076A (zh) * 2021-05-21 2021-08-24 建信金融科技有限责任公司 基于调用链的服务变更识别方法及装置

Similar Documents

Publication Publication Date Title
CN107809331B (zh) 识别异常流量的方法和装置
CN112527649A (zh) 一种测试用例的生成方法和装置
CN110851209A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN111400304A (zh) 一种获取截面日期全量数据的方法、装置、电子设备及存储介质
CN112433757A (zh) 一种确定接口调用关系的方法和装置
CN111914057A (zh) 客服系统敏感词检测过滤方法和装置
CN115242731A (zh) 一种报文处理方法、装置、设备及存储介质
CN108985805B (zh) 一种选择性执行推送任务的方法和装置
CN112783447A (zh) 用于处理快照的方法、装置、设备、介质和产品
CN112148705A (zh) 数据迁移的方法和装置
CN115454971A (zh) 数据迁移方法、装置、电子设备及存储介质
CN111723063A (zh) 一种离线日志数据处理的方法和装置
CN111026629A (zh) 一种测试脚本自动生成的方法和装置
CN115905322A (zh) 业务处理方法、装置、电子设备及存储介质
CN115330540A (zh) 一种处理交易数据的方法和装置
CN113779017A (zh) 数据资产管理的方法和装置
CN113704242A (zh) 一种数据处理方法和装置
CN111290927A (zh) 一种数据监控方法和装置
CN110717826A (zh) 一种资产过滤的方法和装置
CN114679468B (zh) 文件传输方法、装置、电子设备及计算机可读存储介质
CN116974856B (zh) 一种自动获取日志文件的方法、装置、设备及介质
CN114579520A (zh) 镜像数据处理方法、镜像数据加载方法及装置
CN115421665A (zh) 一种数据存储方法、装置、设备及存储介质
CN114490583A (zh) 数据迁移方法、装置、电子设备和存储介质
CN117667942A (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