本发明涉及计算机技术领域,特别是涉及一种链路调用关系的构建方法、装置、计算机设备及存储介质。
背景技术:
目前调用链路展示方法是以全链路的监控为基础的,按照传统方法在进行链路展示时主要是以列表的形式展示。
但是对于调用关系十分复杂的情况,列表的形式进行展示并不直观,对于一条链路中某个支路出现故障的情况用户需要自己点进去查看,对于调用复杂的链路还需要用户自己根据展示出来的列表去分析,目前的链路调用关系的展示很不直观。
技术实现要素:
本发明实施例提供一种链路调用关系的构建方法、装置、计算机设备及存储介质,可以一目了然地将链路调用关系以图的形式展示出来,提高调用关系的分析效率。
一种链路调用关系的构建方法,该方法包括:
当接收查看链路调用的指令时,获取该链路调用中表示调用请求方的第一标识及表示调用应答方的第二标识;
获取与该第一标识绑定的第一图标及,并获取与该第二标识绑定的第二图标;
将所述第一标识作为父节点,将所述第二标识作为子节点,根据所述父节点和所述子节点生成调用关系树;
根据与该第一标识绑定的第一图标、与该第二标识绑定的第二图标及该调用关系树生成链路调用关系图;
输出该链路调用关系图。
在其中的一个实施例中,该链路调用关系的构建方法还包括:
获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息;
解析该调用数据中的第一标识及第二标识。
在其中的一个实施例中,该链路调用关系的构建方法还包括:
获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息;
根据该调用数据分析同一会话消息中链路调用的调用状态;
当该调用状态为异常状态时,在该链路调用关系图的对应链路中标识出该异常状态。
在其中的一个实施例中,该异常状态包括网络异常状态;该根据该调用数据分析同一会话消息中链路调用的调用状态的步骤包括:
解析该调用数据中携带的第一标识、第二标识及调用时间;
根据该第一标识、第二标识及调用时间计算对应链路调用的网络耗时;
当计算的该网络耗时超过预设时长时,判断对应链路调用的状态为网络异常状态。
在其中的一个实施例中,该根据所述第一图标、所述第二图标及所述调用关系树生成链路调用关系图的步骤包括:
解析携带有相同通用唯一识别码的所有调用数据中包含的第一标识及第二标识;
将所述调用关系树中的第一标识替换为所述第一图标,将所述调用关系树中的第二标识替换为所述第二图标,生成所述链路调用关系图。
在其中的一个实施例中,该根据所述第一图标、所述第二图标及所述调用关系树生成链路调用关系图的步骤还包括
获取预设的箭头图标;
在所述第一图标和所述第二图标之间添加所述箭头图标,将该箭头图标中箭头的方向自动指向与所述子节点对应的第二图标。
一种链路调用关系的构建装置,该装置包括:
标识获取模块,用于当接收查看链路调用的指令时,获取该链路调用中表示调用请求方的第一标识及表示调用应答方的第二标识;
图标获取模块,用于同时获取与该第一标识绑定的第一图标,与该第二标识绑定的第二图标;
关系树生成模块,用于将所述第一标识作为父节点,将所述第二标识作为子节点,根据所述父节点和所述子节点生成调用关系树;
关系图生成模块,用于根据所述第一图标、所述第二图标及所述调用关系树生成链路调用关系图;
输出模块,用于输出该链路调用关系图。
在其中的一个实施例中,该链路调用关系的构建装置还包括:
识别码获取模块,用于获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息;
解析模块,用于解析该调用数据中的第一标识及第二标识。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的链路调用关系的构建方法。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的链路调用关系的构建方法中的步骤。
本发明通过获取与表示调用请求方的第一标识绑定的第一图标、与表示调用应答方的第二标识绑定的第二图标,根据该第一图标、第二图标及该调用时间生成链路调用关系图,并输出生成的链路调用关系图,使得用户在查看对应链路的调用关系时,直接根据输出的链路调用关系图即可一目了然的了解请求该链路中各个图标对应的设备之间的调用关系,不需要用户根据列表中的调用数据自己去分析各调用关系,提高了调用关系的分析效率。
附图说明
图1为根据本发明的一个实施例的链路调用关系的构建方法的流程图;
图2为根据本发明的另一实施例的链路调用关系的构建方法的流程图;
图3为根据本发明的又一实施例的链路调用关系的构建方法的流程图;
图4为根据本发明的一个实施例的链路调用关系图;
图5为根据本发明的一个实施例的链路调用关系的构建装置的示范性结构框图;
图6为根据本发明的一个实施例的计算机设备的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为根据本发明的一个实施例的链路调用关系的构建方法的流程图,下面结合图1来详细描述根据本发明的一个实施例的链路调用关系的构建方法,如图1所示,该方法可以在用于管理的服务器中使用,该方法包括以下步骤s101至s105。
s101、当接收查看链路调用的指令时,获取该链路调用中表示调用请求方的第一标识及表示调用应答方的第二标识。
根据本实施例的一个示例,该查看链路调用的指令可以是屏幕上的虚拟按钮被点击,用户可以通过鼠标或触控的形式点击对应的虚拟按钮来触发查看链路调用的指令。
其中,上述的链路调用可以根据一段请求会话所历经的不同设备中来确定,不同的请求会话可以用一个uuid(universallyuniqueidentifier,通用唯一识别码)来唯一确定,uuid是一个软件建构的标准,一个会话消息的发送及对该会话消息的应答均属同一uuid,其生命周期为一个会话消息的结束。在一段请求会话或者说是会话消息所历经的不同设备产生的链路中可以包括多段链路调用,所有的链路调用结合起来表示一段会话消息的链路调用关系。
根据本实施例的一个示例,上述的第一标识及第二标识可以是为各个设备自行设置的编码,以让计算机设备区分涉及调用关系的不同的设备,该编码可以由程序员自行设置,也可以由该设备本身自带的区别于其它设备的编码来确定。其中,上述的第一标识也可以用于表示调用应答方,相应地,该第二标识也可以用于表示调用请求方。
s102、同时获取与该第一标识绑定的第一图标,与该第二标识绑定的第二图标。
根据本实施例的一个示例,该第一图标可以选用与对应的调用请求方设备外观相似的图标,该第二图标也可以选用与对应的调用应答方设备外观相似的图标。
s103、将所述第一标识作为父节点,将所述第二标识作为子节点,根据所述父节点和所述子节点生成调用关系树。
根据本实施例的一个示例,该调用关系树可以是一条直链,也可以是带有两个分支的二叉树,还可以是带有多个分支的树。
s104、根据与该第一标识绑定的第一图标、与该第二标识绑定的第二图标及该调用关系树生成链路调用关系图。
根据本实施例的一个示例,可以根据该调用时间确定调用请求方设备及调用应答方设备的调用顺序,再根据第一标识及第二标识可以确定父类节点和子类节点,从而可以生成该链路调用关系图。
根据本实施例的一个使用场景例如:原始请求数据的在各设备之间的流转顺序是从设备a至设备b,那么调用链路就是a–>b,但这是很简单的情况,如果不加子父节点的维度,假设原始请求数据按照发送时间的顺序由早到晚是a、b、c,可能调用链路是a–>b–>c,但还有可能是a–>b然后a–>c。再根据第一标识及第二标识可以确定子父节点维度,在该使用场景中,如果b是c的父节点,则可以确定该链路调用关系为a–>b–>c,如果a既是b的父节点也是c的父节点,且a–>b的调用时间在先时,则可以判定该链路调用关系为a–>b然后a–>c。再根据与a、b、c分别对应的图标,即可生成对应的链路调用关系图。
s105、输出该链路调用关系图。
根据本实施例的一个示例,该步骤中输出的方式可以是输出给应用端的显示器进行显示,可以是输出给其它设备进行显示,还可以是通过邮件或文件传输的形式将该链路调用关系图输出。
本实施例通过获取与第一标识绑定的第一图标、与第二标识绑定的第二图标,根据该第一图标、第二图标及该调用时间生成链路调用关系图,并输出生成的链路调用关系图,使得用户在查看对应链路的调用关系时,直接根据输出的链路调用关系图即可一目了然的了解请求该链路中各个图标对应的设备之间的调用关系,不需要用户根据列表中的调用数据自己去分析各调用关系,提高了调用关系的分析效率。
图2为根据本发明的另一实施例的链路调用关系的构建方法的流程图,下面结合图2来详细描述根据本发明的一个实施例的链路调用关系的构建方法,如图2所示,该方法在包括上述步骤s101至s105的基础上,还包括以下步骤s201及s202。
s201、获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息。
根据本实施例的一个示例,该会话消息可以由一个uuid来唯一确定,其生命周期为一个会话消息的结束,该通用唯一识别码可以封装在该调用数据的数据帧中。
s202、解析该调用数据中的第一标识及第二标识。
根据本实施例的一个示例,可以通过json(javascriptobjectnotation,js中的对象标记)来解析该请求数据的各个字段中存储的数值,即解析每个key下对应的value,请求数据的各个字段中包括用于存储第一标识的字段、第二标识的字段及发送该调用数据的调用时间的字段。
图3为根据本发明的又一实施例的链路调用关系的构建方法的流程图,下面结合图3来详细描述根据本发明的一个实施例的链路调用关系的构建方法,如图3所示,该方法在包括上述步骤s101至s105的基础上,还包括以下步骤s301至s303。
s301、获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息。
其中,该获取具有相同通用唯一识别码的调用数据的目的在于确定一个会话消息所涉及的调用数据,例如,可以是设备a发送给设备b的调用请求数据,还可以是设备b返回给设备a的调用应答数据。
s302、根据该调用数据分析同一会话消息中链路调用的调用状态。
根据本实施例的一个示例,该调用状态包括但不限于网络状态、主机状态、应用程序的状态等等。
在其中的一个实施例中,该异常状态包括网络异常状态;该根据该调用数据分析同一会话消息中链路调用的调用状态的步骤包括:解析该调用数据中携带的第一标识、第二标识及调用时间;根据该第一标识、第二标识及调用时间计算对应链路调用的网络耗时;当计算的该网络耗时超过预设时长时,判断对应链路调用的状态为网络异常状态。
根据本实施例的一个示例,第一设备发送所述调用请求数据的时间t1、第二设备接收所述调用请求数据的时间t2、所述第二设备发送所述调用应答数据的时间t3、所述第一设备接收所述调用应答数据的时间t4,则可以将(t4-t1)-(t3-t2)的数值作为对应的链路调用的网络耗时,其中的链路调用表示第一标识对应的设备与调用应答方对应的设备之间的链路调用。
s303、当该调用状态为异常状态时,在该链路调用关系图的对应链路中标识出该异常状态。
根据本实施例的一个示例,可以在该链路调用关系图中将表示调用异常的链路对应的图标之间标识出来,标识的方式可以是文字提醒,也可以是用特定的颜色的线条表示调用异常。
在其中的一个实施例中,上述的异常状态还包括设备处理所述请求数据的状态,根据本实施例的一个示例,设备处理所述调用数据的时间的计算分两种情况:
一是待监控设备本身没有调用其他设备,以调用应答方设备为例,此时设备处理所述调用数据的时间只需要用t3-t2即可得到;
二是待监控设备本身还调用了其他设备,以调用应答方设备为例,假设调用应答方设备接收请求数据a的时间为t2,调用应答方设备完成响应后发送请求数据a的应答数据的时间t3,调用应答方设备发送请求数据b的时间为t5,接收请求数据b的应答消息的时间为t6,此时该待监控设备进行数据处理的时间为(t3-t2)-(t6-t5)。
根据本发明的一个实施例提供的链路调用关系的构建方法,该根据与该第一标识绑定的第一图标、与该第二标识绑定的第二图标及该调用关系树生成链路调用关系图的步骤包括以下步骤1及步骤2:
1、解析携带有相同通用唯一识别码的所有调用数据中包含的第一标识及第二标识,以得到同一会话消息所涉及的表示调用请求方的第一标识及表示调用应答方的第二标识。
2、将所述调用关系树中的第一标识替换为所述第一图标,将所述调用关系树中的第二标识替换为所述第二图标,生成所述链路调用关系图。
根据本实施例的一个示例,上述的第一图标及第二图标仅在于将调用请求方和调用应答方予以区分,并不用于区分不同的设备,当一个设备在一个会话消息中既可以作为调用请求方又可以作为调用应答方时,与该设备绑定的第一图标和第二图标表示同一图标。
在其中的一个实施例中,上述根据与该第一标识绑定的第一图标、与该第二标识绑定的第二图标及该调用关系树生成链路调用关系图的步骤还包括:获取预设的箭头图标;在所述第一图标和所述第二图标之间添加所述箭头图标,将该箭头图标中箭头的方向自动指向与所述子节点对应的第二图标。
本实施例通过将调用异常的链路在链路调用关系图中标识出,使得用户可以对调用关系中出现的异常进行快速定位。
图4为根据本发明的一个实施例的链路调用关系图,根据本实施例的一个使用场景如图4所示,从中4可以看出,设备p_ziker_app调用了open_1设备,然后open_1设备调用了open_2设备,最后调用了pad_crp设备,从上图可以看出open_1设备调用open_2设备时出现了异常调用,其中,可以用“-1ms”标识该调用异常,其中,“-1ms”仅仅代表错误,不表示实际网络消耗的时间。图4中的19ms表示对应链路上的网络耗时为19ms。其中,“p_ziker_app”、“open_1”及“open_2”为程序员给对应的设备设置的第一标识,“pad_crp”为程序员给对应的设备设置的第二标识。
根据本实施例的一个示例,可以将链路调用关系图中表示异常调用的链路用虚线箭头来标识,还可以用红色的箭头来标识,此处不做限制。
根据本实施例的一个示例,上述步骤s101 ̄s303的标号并不用于限定本实施例中各个步骤的先后顺序,各个步骤的编号只是为了使得描述各个步骤时可以通用引用该步骤的标号进行便捷的指代,例如上述步骤s302可以在s101的步骤之前,也可以在步骤s101的步骤之后,只要各个步骤执行的顺序不影响本实施例的逻辑关系即表示在本申请请求保护的范围之内。
图5为根据本发明的一个实施例的链路调用关系的构建装置的示范性结构框图,下面结合图5来详细描述根据本发明的一个实施例的链路调用关系的构建装置,如图5所示,该链路调用关系的构建装置10包括:
标识获取模块11,用于当接收查看链路调用的指令时,获取该链路调用中表示调用请求方的第一标识及表示调用应答方的第二标识;
图标获取模块12,用于同时获取与该第一标识绑定的第一图标,与该第二标识绑定的第二图标,其中,该第一图标可以选用与对应的调用请求方设备外观相似的图标,该第二图标也可以选用与对应的调用应答方设备外观相似的图标;
关系树生成模块13,用于将所述第一标识作为父节点,将所述第二标识作为子节点,根据所述父节点和所述子节点生成调用关系树;
关系图生成模块14,用于根据所述第一图标、所述第二图标及所述调用关系树生成链路调用关系图;
输出模块15,用于输出该链路调用关系图,其中,该输出模块具体可以用于将该链路调用关系图输出给应用端的显示器进行显示,或是输出给其它设备进行显示,还可以是通过邮件或文件传输的形式将该链路调用关系图输出。
在其中的一个实施例中,该标识获取模块可以通过监控屏幕上的虚拟按钮是否被点击来确定是否接收到查看链路调用的指令,当检测到监控屏幕上的虚拟按钮被点击时,确定接收到查看链路调用的指令,用户可以通过鼠标或触控的形式点击对应的虚拟按钮来触发查看链路调用的指令。
在其中一个实施例中,该关系图生成模块14可以根据该调用时间确定调用请求方设备及调用应答方设备的调用顺序,再根据第一标识及第二标识可以确定父类节点和子类节点,从而可以生成该链路调用关系图。
根据本实施例的一个使用场景例如:原始请求数据的在各设备之间的流转顺序是从设备a至设备b,那么调用链路就是a–>b,但这是很简单的情况,如果不加子父节点的维度,假设原始请求数据按照发送时间的顺序由早到晚是a、b、c,可能调用链路是a–>b–>c,但还有可能是a–>b然后a–>c。再根据第一标识及第二标识可以确定子父节点维度,在该使用场景中,如果b是c的父节点,则可以确定该链路调用关系为a–>b–>c,如果a既是b的父节点也是c的父节点,且a–>b的调用时间在先时,则可以判定该链路调用关系为a–>b然后a–>c。再根据与a、b、c分别对应的图标,即可生成对应的链路调用关系图。
根据本实施例的一个示例,上述的第一标识及第二标识可以是程序员为各个设备自行设置的编码,以让计算机设备区分涉及调用关系的不同的设备,该编码可以由程序员自行设置,也可以由该设备本身自带的区别于其它设备的编码来确定。
根据本实施例的一个示例,该链路调用关系的构建装置10还包括:
识别码获取模块,用于获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息;
解析模块,用于解析该调用数据中的第一标识及第二标识。
在其中的一个实施例中,该解析模块可以通过json(javascriptobjectnotation,js中的对象标记)来解析该请求数据的各个字段中存储的数值,即解析每个key下对应的value,请求数据的各个字段中包括用于存储第一标识的字段、第二标识的字段及发送该调用数据的调用时间的字段。
在其中的一个实施例中,该链路调用关系的构建装置10还包括:
调用数据获取模块,用于获取携带有相同通用唯一识别码的调用数据,该通用唯一识别码用于标识同一会话消息;
状态分析模块,用于根据该调用数据分析同一会话消息中链路调用的调用状态;
标识模块,用于当该调用状态为异常状态时,在该链路调用关系图的对应链路中标识出该异常状态。
在其中的一个实施例中,该状态分析模块具体可以用于分析网络状态、主机状态、应用程序的状态等等。
在其中的一个实施例中,上述的异常状态还包括设备处理所述请求数据的状态,该状态分析模块还用于分析设备处理所述调用数据的时间,其中,该状态分析模块可以分以下两种情况计算设备处理所述调用数据的时间:
一是待监控设备本身没有调用其他设备,以调用应答方设备为例,此时设备处理所述调用数据的时间只需要用t3-t2即可得到;
二是待监控设备本身还调用了其他设备,以调用应答方设备为例,假设调用应答方设备接收请求数据a的时间为t2,调用应答方设备完成响应后发送请求数据a的应答数据的时间t3,调用应答方设备发送请求数据b的时间为t5,接收请求数据b的应答消息的时间为t6,此时该待监控设备进行数据处理的时间为(t3-t2)-(t6-t5)。
在其中的一个实施例中,该标识模块可以在该链路调用关系图中将表示调用异常的链路对应的图标之间标识出来,标识的方式可以是文字提醒,也可以是用特定的颜色的线条表示调用异常。
在其中的一个实施例中,该异常状态包括网络异常状态,该状态分析模块还包括:
第一解析单元,用于解析该调用数据中携带的第一标识、第二标识及调用时间;
计算单元,用于根据该第一标识、第二标识及调用时间计算对应链路调用的网络耗时;
判断单元,用于当计算的该网络耗时超过预设时长时,判断对应链路调用的状态为网络异常状态。
根据本实施例的一个示例,该调用时间包括:第一设备发送所述调用请求数据的时间t1、第二设备接收所述调用请求数据的时间t2、所述第二设备发送所述调用应答数据的时间t3及所述第一设备接收所述调用应答数据的时间t4,则计算单元可以将(t4-t1)-(t3-t2)的数值作为对应的链路调用的网络耗时,其中的链路调用表示第一标识对应的设备与调用应答方对应的设备之间的链路调用。
在其中的一个实施例中,上述的关系图生成模块包括:
第二解析单元,用于解析携带有相同通用唯一识别码的所有调用数据中包含的第一标识及第二标识;
关系图生成单元,用于将所述调用关系树中的第一标识替换为所述第一图标,将所述调用关系树中的第二标识替换为所述第二图标,生成所述链路调用关系图。
在其中的一个实施例中,该关系图生成模块还包括:
箭头获取单元,用于获取预设的箭头图标;
箭头添加单元,用于在所述第一图标和所述第二图标之间添加所述箭头图标,将该箭头图标中箭头的方向自动指向与所述子节点对应的第二图标。
其中上述第一解析单元及第二解析单元中的“第一”和“第二”的意义仅在于将两个解析单元模块加以区分,并不用于限定哪个解析单元的优先级更高或者其它的限定意义。
其中,该链路调用关系的构建装置中包括的各个模块可全部或部分通过软件、硬件或其组合来实现。进一步地,该链路调用关系的构建装置中的各个模块可以是用于实现对应功能的程序段。
上述链路调用关系的构建装置可以实现为一种计算机程序的形式,计算机程序可以在如图6所示的计算机设备上运行。
根据本发明的一个实施例提供的一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的链路调用关系的构建方法。
图6为根据本发明的一个实施例的计算机设备的内部结构示意图,该计算机设备可以为服务器。参照图6,该计算机设备包括通过系统总线连接的处理器、存储器、输入装置、显示屏和网络接口。其中,该存储器包括非易失性存储介质和内存储器,该计算机设备的非易失性存储介质可存储操作系统和计算机可读指令,该计算机可读指令被执行时,可使得处理器执行本申请各实施例的一种链路调用关系的构建方法,该方法的具体实现过程可参考图1至4各实施例的具体内容,在此不再赘述。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种链路调用关系的构建方法。计算机设备的输入装置用于各个参数的输入,计算机设备的显示屏用于进行显示,计算机设备的网络接口用于进行网络通信。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如此处所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性。合适的非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。
本实施例另提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的链路调用关系的构建方法中的各个步骤。
根据本实施例的一个示例,上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。该存储介质包括但不限于磁碟、优盘、光盘、只读存储记忆体(read-onlymemory,rom)等。
本实施例通过获取与第一标识绑定的第一图标、与第二标识绑定的第二图标,根据该第一图标、第二图标及该调用时间生成链路调用关系图,并输出生成的链路调用关系图,使得用户在查看对应链路的调用关系时,直接根据输出的链路调用关系图即可一目了然的了解请求该链路中各个图标对应的设备之间的调用关系,不需要用户根据列表中的调用数据自己去分析各调用关系,提高了调用关系的分析效率。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。