一种定位方法、装置、设备及可读存储介质与流程

文档序号:22124331发布日期:2020-09-04 17:00阅读:110来源:国知局
一种定位方法、装置、设备及可读存储介质与流程

本发明涉及计算机应用技术领域,特别是涉及一种定位方法、装置、设备及可读存储介质。



背景技术:

随着信息化系统的不断发展,越来越多的项目采用了微服务的开发模式。在微服务模式下,各个模块相互独立,有利于更加深入和完整的实现自身模块的功能,并降低模块间的耦合性。但是,由于在微服务模式下,各个模块间经常需要相互调用,这就会给模块间的问题(如异常响应)定位带来了新的挑战,即很难定位到这个请求响应异常的完整来源路径,难以找出导致异常的应用。

为了在复杂的微服务调用中更加快速清晰的定位问题,opentracing规范(开放式分布式追踪规范)应运而生,并出现了各种各样的软件实现,如zipkin、pinpoint、skywalking等,对于大型互联网应用,这些基于opentracing的软件实现是非常有必要的,但是对于中小型的软件系统,则会存在弊端:1、需要单独部署opentracing的应用,并需要高性能存储集群。这意味着需要非常大的硬件成本投入。2、代码侵入性,任何项目,要想接入opentracing的监控体系,都必须对项目加以改造,少则修改配置文件或启动脚本,多则侵入业务逻辑的实现代码。这意味着接入时需要占用大量的研发人员进行接入适配工作;

综上所述,如何有效地解决软件系统中异常响应定位等问题,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供一种定位方法、装置、设备及可读存储介质,在出现异常响应问题时,基于请求路由信息快速确定处理过相应请求的应用路径,为进一步找出导致异常的应用缩小了筛查范围,能够在无需部署opentracing的应用,也无需高性能存储集群的情况下,进行定位。

为解决上述技术问题,本发明提供如下技术方案:

一种定位方法,包括:

对软件系统的请求响应进行异常检测;

在检测到异常响应后,确定所述异常响应所属的目标请求;

利用所述目标请求的请求id获取所述目标请求的请求走向信息;其中,所述请求走向信息中包括请求id和请求路由,所述请求路由中按处理顺序记录了处理过所述目标请求的应用标识;

利用所述请求走向信息中的所述应用标识,确定出产生所述异常响应的应用路径。

优选地,记录所述请求走向信息的过程,包括:

在所述目标请求抵达网关后,获取所述目标请求的请求id;

创建请求路由,并在各个应用处理所述目标请求的过程中,在所述请求路由中添加所述应用标识;

利用所述请求id和所述请求路由,得到所述目标请求的请求走向信息。

优选地,利用所述请求id和所述请求路由,得到所述目标请求的请求走向信息之后,还包括:

将所述请求走向信息记录在所述目标请求对应的目标日志中。

优选地,利用所述目标请求的请求id获取所述目标请求的请求走向信息,包括:

利用所述请求id,从日志系统中获取所述目标日志;

从所述目标日志中读取所述请求走向信息。

优选地,在所述目标请求抵达网关后,获取所述目标请求的请求id,包括:

判断所述目标请求的请求头中是否包括所述请求id;

如果否,则将抵达时间戳或新生成的uuid作为所述请求id,并将所述请求id添加至所述请求头中;

如果是,则从所述请求头中获取所述请求id。

优选地,在所述请求路由中添加所述应用标识,包括:

利用所述应用标识为所述请求路由进行赋值处理。

优选地,利用所述请求id和所述请求路由,得到所述目标请求的请求走向信息,包括:

将所述请求id作为所述请求走向信息的标识信息;

利用所述请求路由,填充所述请求走向信息中的应用路径。

一种定位装置,包括:

异常检测模块,用于对软件系统的请求响应进行异常检测;

目标请求确定模块,用于在检测到异常响应后,确定出所述异常响应所属的目标请求;

请求走向信息获取模块,用于利用所述目标请求的请求id获取所述目标请求的请求走向信息;其中,所述请求走向信息中包括请求id和请求路由,所述请求路由中按处理顺序记录了处理过所述目标请求的应用标识;

应用路径获取模块,用于利用所述请求走向信息中的所述应用标识,确定出产生所述异常响应的应用路径。

一种定位设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述定位方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述定位方法的步骤。

应用本发明实施例所提供的方法,对软件系统的请求响应进行异常检测;在检测到异常响应后,确定异常响应所属的目标请求;利用目标请求的请求id获取目标请求的请求走向信息;其中,请求走向信息中包括请求id和请求路由,请求路由中按处理顺序记录了处理过目标请求的应用标识;利用请求走向信息中的应用标识,确定出产生异常响应的应用路径。

在本方法中,在检查到软件系统中的异常响应之后,首先确定出异常响应的目标请求。然后,基于目标请求的请求id获取到目标请求的请求走向信息。该请求走向信息包括了请求id以及请求路由;该请求路由中按照处理顺序记录了处理过目标请求的应用标识。因而,直接利用请求走向信息便可确定出产生了一次响应的应用路径。即,确定出依次经过哪些应用处理导致出现异常响应。为进一步找出响应异常的应用缩小了筛查范围。也就是说,本方法能够在无需部署opentracing的应用,也无需高性能存储集群的情况下,对异常响应进行有效定位。

相应地,本发明实施例还提供了与上述定位方法相对应的定位装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

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

图1为本发明实施例中一种定位方法的实施流程图;

图2为本发明实施例中一种请求走向信息记录流程图;

图3为本发明实施例中一种定位装置的结构示意图;

图4为本发明实施例中一种定位设备的结构示意图;

图5为本发明实施例中一种定位设备的具体结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例中一种定位方法的流程图,该方法可以应用于微服务模式的软件系统中。该方法包括以下步骤:

s101、对软件系统的请求响应进行异常检测。

在本实施例中可对软件系统的请求响应进行检测。具体的,可通过判断响应是否符合异常响应条件,进而确定是否发生异常。例如,判断响应的数据内容的大小是否大于预设阈值,判断响应的数值是否超出正常区间,判断响应是否符合发出请求的用户权限等。

s102、在检测到异常响应后,确定异常响应所属的目标请求。

可具体通过响应内所记录的请求信息确定出异常响应的目标请求。例如,基于响应中的请求id,或发起者+发起时间,确定异常响应的目标请求。

其中,目标请求可以为软件系统中接收到的任意一个请求。在本实施例中,对于目标请求的请求内容以及发起者均不做限定。

s103、利用目标请求的请求id获取目标请求的请求走向信息。

其中,请求走向信息中包括请求id和请求路由,请求路由中按处理顺序记录了处理过目标请求的应用标识。

其中,请求id(traceid)可以为请求时间戳、uuid等唯一标识。traceid:用于唯一标识一个完整的请求,即一个请求无论经过了多少个应用节点,其traceid是完全相同的,即保持不变。

基于请求id可以确定出目标请求的请求走向信息。

特别地,请参考图2,该请求走向信息可在处理目标请求时进行记录。具体的记录过程,包括:

s201、在目标请求抵达网关后,获取目标请求的请求id。

为了实现异常响应定位,在目标请求抵达网关后,首先获取目标请求的请求id(traceid),以便基于该请求id对目标请求进行唯一标识。

需要说明的是,该网关接收到目标请求自身可以携带请求id,也可不携带请求id。但为了便于定位,可在网关这一环节,为未携带请求id的目标请求添加上请求id。也就是说,请求id可依据目标请求是否携带请求id采用不同的方式获取。即,若目标请求携带了请求id,则直接从目标请求中获取该请求id;若目标请求未携带请求id,则可为目标请求生成请求id。

具体的,获取请求id,包括:

步骤一、判断目标请求的请求头中是否包括请求id;

步骤二、如果否,则将抵达时间戳或新生成的uuid作为请求id,并将请求id添加至目标请求的请求头中;

步骤三、如果是,则从请求头中获取请求id。

其中,uuid,即通用唯一识别码(universallyuniqueidentifier)。

在本实施例中,请求id可在目标请求的请求头中进行标注。也就是说,若网关接收到的目标请求的请求头中便存在请求id,可正常进行发送目标请求到相应应用;若网关接收到的目标请求的请求头中没有请求id,则可为其生成一个请求id,并将请求id添加至请求头之后,再将目标请求发送给相应的应用。

优选地,为避免记录请求路由信息导致占用系统资源,因而可设置异常响应定位模式和正常模式。即,在目标请求抵达网关后,可判断当前系统是否处于异常响应定位模式;如果是,则获取请求id。如果否,则表明当前无需进行定位,可无需对目标请求的请求走向信息进行记录,此时可令网关直接处理目标请求,而无需获取其请求id。

s202、创建请求路由,并在各个应用处理目标请求的过程中,在请求路由中添加应用标识。

在获取到请求id之后,可创建请求路由,然后在请求路由中添加处理过目标请求的应用标识。

其中,请求路由(raceroutet):用于标志一个请求的走向。例如:a_b_c_d_e,表示该请求从a应用发起,先后经过了b应用、c应用、d应用,最终到达e应用。

其中,应用标识,即应用的标志,例如“a01”-代表a应用的节点1。

在实际应用中,目标请求被各个应用处理时,会依次经过各个应用,因此在请求路由中添加处理过目标请求的应用标识这一任务,可令各个应用进行执行。具体的,利用应用标识为请求路由进行赋值处理。优选地,在网关接收到的目标请求的请求头中不包括请求id时,通过判断请求头中是否包括请求id,可确定当前软件系统是否处于异常响应定位模式。具体的,如果请求头中具有请求id,则此时处于异常响应定位模式,可在请求头中创建请求路由,然后由各个处理目标请求的应用在请求路由中添加自身的应用标识。

举例说明:各个应用在接收到目标请求时,先检查目标请求的header中是否包括了traceid。如果已经包括,则说明已经开启了定位配置(即软件系统处于异常响应定位模式),并且已经记录了定位信息,此时需要在请求的header中查看是否存在traceroute的值;如果不存在,则说明该应用是整个目标请求链路的第一个节点,此时需要在header(请求头)中添加traceroute,并赋值为该应用的标志(比如“a01”-代表a应用的节点1);如果header中已经存在了traceroute,则说明该目标请求至少经过了一个应用节点,此时需要在原traceroute的值,后面添加上当前应用的标志。例如,在“a01”后面添加“b02”(b应用的第二个节点),即traceroute=a01_b02,表示目标请求先后被a应用的第一节点,b应用的第二节点处理过。

s203、利用请求id和请求路由,得到目标请求的请求走向信息。

在获取到请求id,且在请求路由中添加了应用标识后,便可利用请求id和请求利用得到目标请求的请求走向信息。

具体的,每一个请求都会经过网关,而后经过应用进行处理,因此请求走向信息即可为以请求id为唯一标识,请求路由中的应用标识以及应用标识的先后顺序信息。也就是说,利用请求id和请求路由,得到目标请求的请求走向信息,包括:将请求id作为请求走向信息的标识信息;利用请求路由,填充请求走向信息中的应用路径。填充应用路径可具体按照请求路由中各个应用标识出现的先后顺序对应用路径进行填充。

s104、利用请求走向信息中的应用标识,确定出产生异常响应的应用路径。

对于异常响应所属的目标请求,可利用请求走向信息获取曾经处理过目标请求的应用路径。进一步便可基于这些应用标识来找出问题所在。

优选地,为便于查找请求走向信息,还可将请求走向信息融合在系统日志中。具体的,在得到目标请求的请求走向信息之后,还可将请求走向信息记录在目标请求对应的目标日志中。如此,在利用请求走向信息获取应用标识,便可利用请求id,从日志系统中获取目标日志;从目标日志中读取请求走向信息。即,将请求走向信息同系统日志信息整合,使得通过系统日志中的任意一条日志,都能知道该日志是属于哪个请求,该请求的走向信息是什么样的。根据请求走向信息,即可直接定位到问题产生的起始位置。

在目标请求抵达网关后,获取目标请求的请求id;创建请求路由,并在请求路由中添加处理过目标请求的应用标识;利用请求id和请求路由,得到目标请求的请求走向信息;若目标请求的响应存在问题,则利用请求走向信息获取应用标识。

应用本发明实施例所提供的方法,对软件系统的请求响应进行异常检测;在检测到异常响应后,确定异常响应所属的目标请求;利用目标请求的请求id获取目标请求的请求走向信息;其中,请求走向信息中包括请求id和请求路由,请求路由中按处理顺序记录了处理过目标请求的应用标识;利用请求走向信息中的应用标识,确定出产生异常响应的应用路径。

在本方法中,在检查到软件系统中的异常响应之后,首先确定出异常响应的目标请求。然后,基于目标请求的请求id获取到目标请求的请求走向信息。该请求走向信息包括了请求id以及请求路由;该请求路由中按照处理顺序记录了处理过目标请求的应用标识。因而,直接利用请求走向信息便可确定出产生了一次响应的应用路径。即,确定出依次经过哪些应用处理导致出现异常响应。为进一步找出响应异常的应用缩小了筛查范围。也就是说,本方法能够在无需部署opentracing的应用,也无需高性能存储集群的情况下,对异常响应进行有效定位。

相应于上面的方法实施例,本发明实施例还提供了一种定位装置,下文描述的定位装置与上文描述的定位方法可相互对应参照。

参见图3所示,该装置包括以下模块:

异常检测模块101,用于对软件系统的请求响应进行异常检测;

目标请求确定模块102,用于在检测到异常响应后,确定出异常响应所属的目标请求;

请求走向信息获取模块103,用于利用目标请求的请求id获取目标请求的请求走向信息;其中,请求走向信息中包括请求id和请求路由,请求路由中按处理顺序记录了处理过目标请求的应用标识;

应用路径获取模块104,用于利用请求走向信息中的应用标识,确定出产生异常响应的应用路径。

应用本发明实施例所提供的装置,对软件系统的请求响应进行异常检测;在检测到异常响应后,确定异常响应所属的目标请求;利用目标请求的请求id获取目标请求的请求走向信息;其中,请求走向信息中包括请求id和请求路由,请求路由中按处理顺序记录了处理过目标请求的应用标识;利用请求走向信息中的应用标识,确定出产生异常响应的应用路径。

在本装置中,在检查到软件系统中的异常响应之后,首先确定出异常响应的目标请求。然后,基于目标请求的请求id获取到目标请求的请求走向信息。该请求走向信息包括了请求id以及请求路由;该请求路由中按照处理顺序记录了处理过目标请求的应用标识。因而,直接利用请求走向信息便可确定出产生了一次响应的应用路径。即,确定出依次经过哪些应用处理导致出现异常响应。为进一步找出响应异常的应用缩小了筛查范围。也就是说,本装置能够在无需部署opentracing的应用,也无需高性能存储集群的情况下,对异常响应进行有效定位。

在本发明的一种具体实施方式中,请求走向信息记录模块,包括:

请求id获取单元,用于在目标请求抵达网关后,获取目标请求的请求id;

请求路由获取单元,用于创建请求路由,并在各个应用处理目标请求的过程中,在请求路由中添加应用标识;

请求走向信息确定单元,用于利用请求id和请求路由,得到目标请求的请求走向信息。

在本发明的一种具体实施方式中,还包括:

存储单元,用于利用请求id和请求路由,得到目标请求的请求走向信息之后,将请求走向信息记录在目标请求对应的目标日志中。

在本发明的一种具体实施方式中,请求走向信息获取模块103,具体用于利用请求id,从日志系统中获取目标日志;从目标日志中读取请求走向信息。

在本发明的一种具体实施方式中,请求id获取单元,具体用于判断目标请求的请求头中是否包括请求id;如果否,则将抵达时间戳或新生成的uuid作为请求id,并将请求id添加至请求头中;如果是,则从请求头中获取请求id。

在本发明的一种具体实施方式中,请求路由获取单元,具体用于利用应用标识为请求路由进行赋值处理。

在本发明的一种具体实施方式中,请求走向信息确定单元,用于将请求id作为请求走向信息的标识信息;利用请求路由,填充请求走向信息中的应用路径。

相应于上面的方法实施例,本发明实施例还提供了一种定位设备,下文描述的一种定位设备与上文描述的一种定位方法可相互对应参照。

参见图4所示,该定位设备包括:

存储器332,用于存储计算机程序;

处理器322,用于执行计算机程序时实现上述方法实施例的定位方法的步骤。

具体的,请参考图5,为本实施例提供的一种定位设备的具体结构示意图,该定位设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在定位设备301上执行存储器332中的一系列指令操作。

定位设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。

上文所描述的定位方法中的步骤可以由定位设备的结构实现。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种定位方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的定位方法的步骤。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本领域的技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域的技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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