请求链路上下文的处理方法、装置及系统与流程

文档序号:16006961发布日期:2018-11-20 20:10阅读:139来源:国知局

本发明涉及计算机网络技术,尤其涉及一种请求链路上下文的处理方法、装置及系统。



背景技术:

Nginx(engine x)作为一款开源的超文本传输协议(Hyper Text Transfer Protocol,简称:HTTP)和反向代理服务器,因其优秀的高并发处理能力得以被广泛应用。

在现有的相关技术中,Nginx在接收到针对某一链路请求的响应之后,生成该响应对应的响应标识(RequestID),并最终将该响应标识记录到日志中。当客户端与服务端通信出现异常(例如延时)时,针对异常的排查主要通过Nginx的日志查找,在异常发生的时间点和对应的请求报文携带的统一资源定位符(Uniform Resource Locator,简称:URL)来定位对应的请求报文。

但上述对于异常的定位方法至少存在以下缺陷:在高并发请求的环境下,在同一时间点上可能存在大量同类URL,从而导致无法根据URL准确定位出现异常的请求报文。



技术实现要素:

本发明提供一种请求链路上下文的处理方法、装置及系统,以在高并发请求的环境下,准确定位出现异常的请求报文。

第一方面,本发明提供一种请求链路上下文的处理方法,包括:

第一网关设备接收客户端发送的请求报文,请求报文携带第一URL;

若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

一种可能的实施方式中,上述将添加跟踪标识的请求报文发送给第一URL对应的服务端之后,还包括:接收服务端发送的与请求报文相关的上下文,上下文中携带所述跟踪标识。

一种可能的实施方式中,上下文为服务端向另一服务端发送的另一请求报文,则所述方法还包括:将另一请求报文转发给另一服务端;或者,上下文为服务端向发送请求报文的客户端返回的响应报文,则所述方法还包括:将响应报文发送给客户端。

一种可能的实施方式中,上述接收服务端发送的与请求报文相关的上下文之后,还包括:记录请求报文的相关日志,相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的上下文的相关数据。

一种可能的实施方式中,上述记录请求报文的相关日志,包括:将相关日志存储至分布式系统的共享缓存中,共享缓存为分布式系统中各网关设备共享的用于存储上下文日志的缓存。

一种可能的实施方式中,上述共享缓存为分布式系统中的数据库,或者,分布式系统中任一网关设备的缓存。

一种可能的实施方式中,第一网关设备接收客户端发送的请求报文之后,还包括:若检测到请求报文中携带跟踪标识,则发送请求报文给第一URL对应的服务端。

第二方面,本发明一种请求链路上下文的处理方法,包括:

服务端接收第一网关设备发送的携带跟踪标识的请求报文,请求报文携带第一URL,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中;

将携带跟踪标识的上下文发送给第二网关设备。

一种可能的实施方式中,上述上下文为服务端向另一服务端发送的另一请求报文,或者,上下文为服务端向发送请求报文的客户端返回的响应报文。

一种可能的实施方式中,第一网关设备和第二网关设备为同一设备或不同设备。

第三方面,本发明提供一种网关设备,包括:

接收模块,用于接收客户端发送的请求报文,请求报文携带第一URL;

处理模块,用于若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

发送模块,用于将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

一种可能的实施方式中,上述接收模块还用于:在发送模块将添加跟踪标识的请求报文发送给第一URL对应的服务端之后,接收服务端发送的与请求报文相关的上下文,上下文中携带跟踪标识。

一种可能的实施方式中,上下文为服务端向另一服务端发送的另一请求报文,则发送模块还用于:将另一请求报文转发给另一服务端。或者,上下文为服务端向发送请求报文的客户端返回的响应报文,则发送模块还用于:将响应报文发送给客户端。

一种可能的实施方式中,网关设备还包括:记录模块,用于在接收模块接收服务端发送的与请求报文相关的上下文之后,记录请求报文的相关日志。该相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的上下文的相关数据。

一种可能的实施方式中,记录模块可具体用于:将相关日志存储至分布式系统的共享缓存中。该共享缓存为分布式系统中各网关设备共享的用于存储上下文日志的缓存。

一种可能的实施方式中,共享缓存为分布式系统中的数据库,或者,分布式系统中任一网关设备的缓存。

一种可能的实施方式中,处理模块还可用于:若检测到请求报文中携带跟踪标识,则触发发送模块发送请求报文给第一URL对应的服务端。

第四方面,本发明提供一种服务端,包括:

接收模块,用于接收第一网关设备发送的携带跟踪标识的请求报文,请求报文携带第一URL,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

处理模块,用于对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中;

发送模块,用于将携带跟踪标识的上下文发送给第二网关设备。

一种可能的实施方式中,上下文为服务端向另一服务端发送的另一请求报文,或者,上下文为服务端向发送请求报文的客户端返回的响应报文。

一种可能的实施方式中,第一网关设备和第二网关设备为同一设备或不同设备。

第五方面,本发明提供一种网关设备。该网关设备为第一网关设备。网关设备包括存储器和处理器,以及存储在存储器上可供处理器执行的计算机程序;处理器执行计算机程序实现如第一方方面任一项所述的方法。

第六方面,本发明提供一种服务端。服务端包括存储器和处理器,以及存储在存储器上可供处理器执行的计算机程序;处理器执行计算机程序实现如第二方面任一项所述的方法。

第七方面,本发明提供一种请求链路上下文的处理系统,包括:如第五方面所述的网关设备,和如第六方面所述的服务端。

第八方面,本发明提供一种计算机可读存储介质,包括计算机可读指令,当网关设备读取并执行该计算机可读指令时,使得网关设备执行如第一方面任一项所述的方法。

第九方面,本发明提供一种计算机可读存储介质,包括计算机可读指令,当服务端设备读取并执行计算机可读指令时,使得服务端执行如第二方面任一项所述的方法。

本发明提供的请求链路上下文的处理方法、装置及系统,第一网关设备在接收到客户端发送的请求报文时,请求报文携带第一URL,检测该请求报文是否携带跟踪标识;若检测到该请求报文未携带跟踪标识,则为该请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中,因此,通过跟踪标识可将请求报文及其相关的上下文进行关联,进而在高并发请求的环境下,根据跟踪标识可准确定位出现异常的请求报文及整个请求链路。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的通信系统结构示例图;

图2为本发明一实施例提供的请求链路上下文的处理方法的流程图;

图3为本发明另一实施例提供的请求链路上下文的处理方法的流程图;

图4为本发明又一实施例提供的请求链路上下文的处理方法的信令图;

图5为本发明又一实施例提供的请求链路上下文的处理方法的信令图;

图6为本发明一实施例提供的网关设备的结构示意图;

图7为本发明另一实施例提供的网关设备的结构示意图;

图8为本发明一实施例提供的服务端的结构示意图;

图9为本发明又一实施例提供的网关设备的结构示意图;

图10为本发明另一实施例提供的服务端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例的说明书、权利要求书及上述附图中的术语“第一”和“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

图1为本发明一实施例提供的通信系统结构示例图。如图1所示,通信系统包括网关设备、至少一个客户端和至少一个服务端,其中,客户端通过网关设备与服务端进行通信,以实施下述各实施例提供的技术方案。

示例性地,客户端可以为可穿戴式设备、手持设备、车载设备、计算机、云平台、服务器等设备。对应地,服务端为服务器、基站或其他网络设备。当客户端为服务器时,即一服务器与另一个服务器进行交互,二者中任一个发送请求报文给另一个,发送请求报文的服务器为接收请求报文的另一服务器的客户端。也就是说,本发明实施例中的客户端与服务端是相对概念,在通信过程中,部分设备(例如服务器)既可以作为客户端,也可以作为接收端。此外,服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。

实施例一

图2为本发明一实施例提供的请求链路上下文的处理方法的流程图。如图2所示,本实施例的方法包括:

S201、第一网关设备接收客户端发送的请求报文。

其中,该请求报文携带第一URL。

示例性地,若用户在客户端上登录某一应用,例如邮箱,则用户在该应用对应的界面上输入账号和密码;对应地,客户端检测到用户在界面上的输入操作,并对该输入操作做出响应,生成请求报文,这里的第一URL为应用服务器对应的URL。

或者,当客户端确定有上行数据需要发送时,生成请求报文,该请求报文用于向网络设备(例如基站)请求用于传输该上行数据的时频域资源,此时,第一URL为网络设备对应的URL。

第一网关设备,例如Nginx,接收客户端发送的请求报文。其中,第一网关设备中存储有URL与服务端的映射关系。当第一网关设备接收到客户端发送的请求报文后,根据请求报文中携带的第一URL确定该请求报文对应的服务端,例如上述示例中的应用服务器或基站等。

S202、若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中。

其中,跟踪标识为请求报文及其相关的上下文的全局唯一标识。

现有技术中的请求报文是不包含跟踪标识的,本发明为准确定位出现异常的请求报文,在第一网关设备接收到客户端发送的请求报文之后,首先检测该请求报文中是否携带跟踪标识,若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中,这样,该请求报文在后续传递过程中就携带了跟踪标识。

S203、将添加跟踪标识的请求报文发送给第一URL对应的服务端。

该步骤的目的是使服务端对请求报文进行处理后生成与该请求报文相关的上下文,并将跟踪标识携带在上下文中。

具体地,第一网关设备将添加跟踪标识的请求报文发送给第一URL对应的服务端。相应地,服务端接收该添加跟踪标识的请求报文,并对其进行处理,生成与该请求报文相关的上下文,其中,上下文中携带上述跟踪标识,以使用跟踪标识关联整个请求链路。

本实施例中,第一网关设备在接收到客户端发送的请求报文时,请求报文携带第一URL,检测该请求报文是否携带跟踪标识;若检测到该请求报文未携带跟踪标识,则为该请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中,因此,通过跟踪标识可将请求报文及其相关的上下文进行关联,进而在高并发请求的环境下,根据跟踪标识可准确定位出现异常的请求报文及整个请求链路。

在上述实施例的基础上,S203、将添加跟踪标识的请求报文发送给第一URL对应的服务端之后,请求链路上下文的处理方法还可以包括:接收服务端发送的与请求报文相关的上下文,该上下文中携带跟踪标识。

可选地,上下文为服务端向另一服务端发送的另一请求报文;或者,上下文为服务端向发送请求报文的客户端返回的响应报文。也就是说,服务端在接收到第一网关设备发送的携带跟踪标识的请求报文之后,对该请求报文的处理依赖于另一服务端,因此,服务端生成相对另一服务端的请求报文,即区别与上述请求报文的另一请求报文,该另一请求报文中携带上述跟踪标识。

本领域技术人员可以理解,在复杂请求链路中,服务端在对一个请求报文进行处理的过程中可能要依赖于其他至少一个服务端,例如服务端A对请求报文的处理依赖于服务端B,服务端B又依赖于服务端C,……,以此类推,直至服务端A完成对请求报文的处理,在该复杂请求链路中,跟踪标识一直被传递,因此,可通过跟踪标识关联整个复杂请求链路。

进一步地,当上下文为服务端向发送请求报文的客户端返回的响应报文时,该请求链路上下文的处理方法还包可以包括:将响应报文发送给客户端。

或者,当上下文为服务端向另一服务端发送的另一请求报文时,请求链路上下文的处理方法还可包括:将该另一请求报文转发给另一服务端,以使另一服务端对另一请求报文进行处理后生成与该另一请求报文相关的上下文,并将跟踪标识携带在与该另一请求报文相关的上下文中。由于服务端向另一服务端发送的另一请求报文中携带了跟踪标识,因此,第一网关设备在接收到该另一请求报文之后,直接将该另一请求报文转发给另一服务端。

还需说明的是,在服务端将携带跟踪标识的另一请求报文发送给另一服务端的场景中,服务端作为另一服务端的客户端存在,另一服务端作为服务端的服务端存在,也即本发明实施例中的客户端与服务端为相对概念,其中发出请求报文的一端为客户端,请求报文的目的接收端为服务端,网关设备(包括第一网关设备和下文提到的第二网关设备)为中间设备。

一种示例中,第一网关设备执行上述任一实施例具体可通过Lua扩展模块来实现。该Lua扩展模块是在第一网关设备进行初始化时加载至第一网关设备的。例如,第一网关设备接收到请求报文之后,使用Lua扩展模块检测请求报文中是否携带跟踪标识(traceID),若检测到请求报文中未携带跟踪标识,则通过Lua扩展模块为请求报文生成跟踪标识并添加至请求报文中。

与上述实施例相对应,图3示出服务端执行的关于请求链路上下文的处理方法的操作流程。如图3所示,本实施例的方法包括:

S301、服务端接收第一网关设备发送的携带跟踪标识的请求报文。

其中,请求报文携带第一URL,跟踪标识为所述请求报文及其相关的上下文的全局唯一标识。

S302、服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

可选地,上下文为服务端向另一服务端发送的请求报文。或者,上下文为服务端向发送请求报文的客户端返回的响应报文。

S301、S302与上述实施例中S203相对应,此处不再赘述。

S303、服务端将携带跟踪标识的上下文发送给第二网关设备。

需说明的是,这里的第二网关设备可以与上述第一网关设备是同一设备,或者,第二网关设备可以与上述第一网关设备是不同设备。

一种实施方式中,上下文为服务端向发送请求报文的客户端返回的响应报文,此时,第二网关设备与第一网关设备是同一设备。

另一种实施方式中,上下文为服务端向另一服务端发送的请求报文。也就是说,服务端在接收到第一网关设备发送的携带跟踪标识的请求报文之后,对该请求报文的处理依赖于另一服务端,因此,服务端生成相对另一服务端的请求报文,即区别与上述请求报文的另一请求报文,该另一请求报文中携带上述跟踪标识。

该实施方式中,服务端将携带跟踪标识的另一请求报文发送给第二网关设备,这里的第二网关设备可以与第一网关设备为同一设备,或者,第二网关设备不同于第一网关设备,例如,在分布式环境中,第二网关设备为另一Nginx。

在服务端将携带跟踪标识的另一请求报文发送给第二网关设备的场景中,服务端作为另一服务端的客户端,另一服务端为服务端的服务端。

该实施例中,服务端在接收第一网关设备发送的携带跟踪标识的请求报文之后,对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中,并将携带跟踪标识的上下文发送给第二网关设备,通过跟踪标识可将请求报文及其相关的上下文进行关联,进而在高并发请求的环境下,根据跟踪标识可准确定位出现异常的请求报文及整个请求链路。

上述实施例分别以网关设备和服务端为执行主体说明本发明提供的请求链路上下文的处理方法,接下来结合客户端、服务端和网关设备的交互进行说明。

图4为本发明又一实施例提供的请求链路上下文的处理方法的信令图。该实施例中与请求报文相关的上下文为服务端向发送请求报文的客户端返回的响应报文。如图4所示,本实施例的方法包括:

S401、客户端发送请求报文给第一网关设备。

该请求报文携带第一URL。

S402、第一网关设备检测请求报文中是否携带跟踪标识。

其中,跟踪标识为请求报文及其相关的上下文的全局唯一标识。

若第一网关设备检测到请求报文中未携带跟踪标识,则执行S403;若第一网关设备检测到请求报文中携带跟踪标识,则执行S404。

S403、第一网关设备为请求报文生成跟踪标识并添加至请求报文中。

S404、第一网关设备将添加跟踪标识的请求报文发送给第一URL对应的服务端。

S405、服务端对请求报文进行处理后生成与请求报文相关的响应报文,并将跟踪标识携带在响应报文中。

S406、服务端将携带跟踪标识的响应报文发送给第一网关设备。

S407、第一网关设备将响应报文发送给客户端。

图5为本发明又一实施例提供的请求链路上下文的处理方法的信令图。该实施例中与请求报文相关的上下文为服务端向另一服务端发送的另一请求报文,且第一网关设备与第二网关设备为同一设备。如图5所示,本实施例的方法包括:

S501、客户端发送请求报文给第一网关设备。

该请求报文携带第一URL。

S502、第一网关设备检测请求报文中是否携带跟踪标识。

其中,跟踪标识为请求报文及其相关的上下文的全局唯一标识。

若第一网关设备检测到请求报文中未携带跟踪标识,则执行S503;若第一网关设备检测到请求报文中携带跟踪标识,则执行S504。

S503、第一网关设备为请求报文生成跟踪标识并添加至请求报文中。

S504、第一网关设备将添加跟踪标识的请求报文发送给第一URL对应的服务端A。

S505、服务端A对请求报文进行处理后生成与请求报文相关的另一请求报文,并将跟踪标识携带在另一请求报文中。

其中,另一请求报文中还携带第二URL,该第二URL为另一服务端对应的URL。

S506、服务端A将携带跟踪标识的另一请求报文发送给第一网关设备。

S507、第一网关设备检测该另一请求报文中携带跟踪标识。

S508、第一网关设备将另一请求报文发送给服务端B。

该步骤的目的是使该服务端B对所述另一请求报文进行处理后生成与所述另一请求报文相关的上下文,并将所述跟踪标识携带在所述另一请求报文相关的上下文中。

该实施例中,服务端A对请求报文的处理依赖于这里的服务端B。

S509、服务端B对另一请求报文进行处理后生成与另一请求报文相关的另一响应报文,并将跟踪标识携带在另一响应报文中。

S510、服务端B将携带跟踪标识的另一响应报文发送给第一网关设备。

S511、第一网关设备将另一响应报文发送给服务端A。

S512、服务端A结合另一响应报文对请求报文进行处理后生成与请求报文相关的响应报文,并将跟踪标识携带在响应报文中。

S513、服务端A将携带跟踪标识的响应报文发送给第一网关设备。

S514、第一网关设备将响应报文发送给客户端。

进一步地,为便于异常的定位,第一网关设备在接收服务端发送的与请求报文相关的上下文之后,还可以记录所述请求报文的相关日志。因此,上述请求链路上下文的处理方法还可以包括:记录请求报文的相关日志,该相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的上下文的相关数据。

其中,请求报文的相关数据例如可以包括所述第一URL、相关参数(例如客户端标识,账号等)和请求报文的接收时间等;与请求报文相关的上下文的相关数据例如包括上下文的接收时间,上下文的发送端和/或目的端、上下文包含的内容,等等。

一种具体实现中,第一网关设备可以在本地记录请求报文的相关日志,该相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的响应报文的相关数据。这样,一复杂请求链路对应的全部日志可能分布在多个网关设备上,该多个网关设备包括第一网关设备。

例如,在图5所示交互流程中,由于第一网关设备与第二网关设备为同一设备,因此,第一网关设备记录有跟踪标识、请求报文的相关数据、另一请求报文的相关数据、响应报文的相关数据和另一响应报文的相关数据;但当第一网关设备与第二网关设备为不同设备时,也就是说另一请求报文的转发设备为不同于第一网关设备的第二网关设备,该情况下,第一网关设备记录有跟踪标识、请求报文的相关数据和响应报文的相关数据,第二网关设备记录有跟踪标识、另一请求报文的相关数据和另一响应报文的相关数据,整个请求链路对应的相关日志分布在第一网关设备和第二网关设备上。

另一种具体实现中,第一网关设备将所述相关日志存储至分布式系统的共享缓存中,该共享缓存为分布式系统中各网关设备共享的用于存储上下文日志的缓存。

可选地,共享缓存可以为分布式系统中的数据库,或者,分布式系统中任一网关设备的缓存。

该实现方式与上述实现方式的区别在于,该实现方式可以实现请求链路相关日志的集中管理,更便于请求链路信息的查询以及对出现异常的请求报文的定位。

示例性地,对请求报文的相关日志进行记录后,缓存查询结果可如下所示:

其中,Time表示请求报文的接收时间;traceid表示跟踪标识;url表示请求报文中携带的第一URL。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

图6为本发明一实施例提供的网关设备的结构示意图。该实施例提供一种网关设备,该网关设备为上文所述的第一网关设备。如图6所示,网关设备60包括:接收模块61、处理模块62和发送模块63。

该接收模块61,用于接收客户端发送的请求报文,请求报文携带第一URL。

该处理模块62,用于若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识。

该发送模块63,用于将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

综上所述,网关设备在接收到客户端发送的请求报文时,请求报文携带第一URL,检测该请求报文是否携带跟踪标识;若检测到该请求报文未携带跟踪标识,则为该请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中,因此,通过跟踪标识可将请求报文及其相关的上下文进行关联,进而在高并发请求的环境下,根据跟踪标识可准确定位出现异常的请求报文及整个请求链路。

一种可能的实现方式中,接收模块61还可用于:在发送模块63将添加跟踪标识的请求报文发送给第一URL对应的服务端之后,接收服务端发送的与请求报文相关的上下文,上下文中携带跟踪标识。

可选地,上下文为服务端向另一服务端发送的另一请求报文。此时,发送模块63还可用于:将另一请求报文转发给另一服务端。

或者,上下文为服务端向发送请求报文的客户端返回的响应报文。此时,发送模块63还可以用于:将响应报文发送给客户端。

图7为本发明另一实施例提供的网关设备的结构示意图。如图7所示,在图6所示结构的基础上,网关设备70还可以包括:记录模块71。

该记录模块71,用于在接收模块61接收服务端发送的与请求报文相关的上下文之后,记录请求报文的相关日志,该相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的上下文的相关数据。

可选地,记录模块71可具体用于:将相关日志存储至分布式系统的共享缓存中,该共享缓存为分布式系统中各网关设备共享的用于存储上下文日志的缓存。

示例性地,共享缓存为分布式系统中的数据库,或者,分布式系统中任一网关设备的缓存。

上述实施例,通过记录请求报文的相关日志可便于异常的定位。

在上述基础上,处理模块62还可以用于:若检测到请求报文中携带跟踪标识,则触发发送模块63发送请求报文给第一URL对应的服务端。

图8为本发明一实施例提供的服务端的结构示意图。如图8所示,服务端80包括:接收模块81、处理模块82和发送模块83。

该接收模块81,用于接收第一网关设备发送的携带跟踪标识的请求报文,请求报文携带第一URL,跟踪标识为请求报文及其相关的上下文的全局唯一标识。

该处理模块82,用于对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

该发送模块83,用于将携带所述跟踪标识的上下文发送给第二网关设备。

该实施例中,服务端在接收第一网关设备发送的携带跟踪标识的请求报文之后,对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中,并将携带跟踪标识的上下文发送给第二网关设备。通过跟踪标识可将请求报文及其相关的上下文进行关联,进而在高并发请求的环境下,根据跟踪标识可准确定位出现异常的请求报文及整个请求链路。

可选地,上下文为服务端向另一服务端发送的另一请求报文,或者,上下文为服务端向发送请求报文的客户端返回的响应报文。

可选地,第一网关设备和第二网关设备为同一设备或不同设备。

图9为本发明又一实施例提供的网关设备的结构示意图。该实施例提供一种网关设备,该网关设备为上文所述的第一网关设备。如图9所示,网关设备90包括存储器91和处理器92,以及存储在存储器91上可供处理器92执行的计算机程序。存储器91和处理器92之间通过总线93连接。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器92执行计算机程序实现如下操作:

接收客户端发送的请求报文,请求报文携带第一URL;

若检测到请求报文中未携带跟踪标识,则为请求报文生成跟踪标识并添加至请求报文中,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

将添加跟踪标识的请求报文发送给第一URL对应的服务端,以使服务端对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中。

可选地,处理器92在将添加跟踪标识的请求报文发送给第一URL对应的服务端之后,还用于:接收服务端发送的与请求报文相关的上下文,上下文中携带跟踪标识。

可选地,上下文为服务端向另一服务端发送的另一请求报文。处理器92还用于:将另一请求报文转发给另一服务端。

或者,上下文为服务端向发送请求报文的客户端返回的响应报文。处理器92还用于:将响应报文发送给客户端。

可选地,处理器92还用于:在接收服务端发送的与请求报文相关的上下文之后,记录请求报文的相关日志,相关日志包括跟踪标识,以及与跟踪标识相关联的请求报文的相关数据和与请求报文相关的上下文的相关数据。

可选地,处理器92用于记录所述请求报文的相关日志时,具体用于:将相关日志存储至分布式系统的共享缓存中,共享缓存为分布式系统中各网关设备共享的用于存储上下文日志的缓存。

可选地,共享缓存为分布式系统中的数据库,或者,分布式系统中任一网关设备的缓存。

可选地,处理器92在接收客户端发送的请求报文之后,还用于:若检测到请求报文中携带跟踪标识,则发送请求报文给第一URL对应的服务端。

图10为本发明另一实施例提供的服务端的结构示意图。如图10所示,服务端10包括存储器11和处理器12,以及存储在存储器11上可供处理器12执行的计算机程序。存储器11和处理器12之间通过总线13连接。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器12执行计算机程序实现如下操作:

接收第一网关设备发送的携带跟踪标识的请求报文,请求报文携带第一URL,跟踪标识为请求报文及其相关的上下文的全局唯一标识;

对请求报文进行处理后生成与请求报文相关的上下文,并将跟踪标识携带在上下文中;

将携带跟踪标识的上下文发送给第二网关设备。

可选地,上下文为服务端向另一服务端发送的另一请求报文,或者,上下文为服务端向发送请求报文的客户端返回的响应报文。

可选地,第一网关设备和第二网关设备为同一设备或不同设备。

本发明实施例还提供一种请求链路上下文的处理系统,包括:如图9所示的网关设备,和如图10所示的服务端。

本发明实施例还提供一种计算机可读存储介质,包括计算机可读指令,当网关设备读取并执行所述计算机可读指令时,使得所述网关设备执行如上述任一方法实施例中第一网关设备执行的步骤。

本发明实施例还提供一种计算机可读存储介质,包括计算机可读指令,当服务端设备读取并执行所述计算机可读指令时,使得所述服务端执行如上述任一方法实施例中服务端执行的步骤。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读内存(Read-Only Memory,简称:ROM)、随机存取存储器(Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1