CN113448745A - 服务请求的追踪方法、装置及电子设备 - Google Patents
服务请求的追踪方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113448745A CN113448745A CN202011094694.1A CN202011094694A CN113448745A CN 113448745 A CN113448745 A CN 113448745A CN 202011094694 A CN202011094694 A CN 202011094694A CN 113448745 A CN113448745 A CN 113448745A
- Authority
- CN
- China
- Prior art keywords
- layer
- node
- rpc
- parent
- space mark
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000008569 process Effects 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 17
- 239000010410 layer Substances 0.000 description 410
- 239000003550 marker Substances 0.000 description 31
- 238000010586 diagram Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000004804 winding 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请是关于一种服务请求的追踪方法、装置及电子设备。该服务请求的追踪方法,包括:当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;在向逻辑链路的下一层节点发送服务请求时,将所述当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。本申请提供的技术方案,能够快速识别服务请求的上下级调用关系,更容易排查问题原因。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种服务请求的追踪方法、装置及电子设备。
背景技术
RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务的协议。它允许运行于一台计算机的程序调用另一台计算机的子程序,而无需额外地为这个交互作用编程。
在相关技术中,当用户从浏览器打开一个网址,即发起一个服务请求,这个网址所包含的内容会调用多个API接口(Application Programming Interface,应用程序接口)。其中一个API接口可能会调用多个RPC服务,而其中一个RPC服务可能又会调用另一个RPC服务,所有这些RPC服务都会在服务器上分别对应留下了相应的日志,每一条日志上分别记录了该RPC服务的相关信息。为了便于区分用户发起的每一个服务请求,每一个服务请求具有唯一的TraceID(跟踪标记)。通过TraceID将一个逻辑链路下的所有的服务请求的详细日志串接起来。因此,该服务请求下的每个RPC服务对应的日志中均记载有相应的TraceID。
但是,由于一个服务请求可能涉及调用多个RPC服务,根据TraceID无法区分各RPC服务的上下级调用关系,在RPC服务出现问题时也很难排查问题原因。
发明内容
为克服相关技术中存在的问题,本申请提供一种服务请求的追踪方法、装置及电子设备,该服务请求的追踪方法、装置及电子设备,能够快速识别服务请求的上下级调用关系,更容易排查问题原因。
本申请第一方面提供一种服务请求的追踪方法,包括:
当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;
在向逻辑链路的下一层节点发送服务请求时,将所述当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
在一个实施方式中,所述确定父层空间标记,包括:
如果当前层节点为第一层服务节点,生成标识第一层的父层空间标记。
在一个实施方式中,所述第一层的父层空间标记通过设定值标识为第一层的父层空间标记。
在一个实施方式中,所述确定父层空间标记,包括:
如果当前层节点为非第一层服务节点,从所述接收的服务请求中获取父层空间标记,所述父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。
在一个实施方式中,所述生成本层空间标记,包括:
根据至少一项以上参数生成本层空间标记,其中所述至少一项以上参数包括:服务进程号、时间戳、随机函数。
在一个实施方式中,所述本层空间标记或父层空间标记包括字符、数字及字母中的至少一种或多种的组合。
在一个实施方式中,所述服务请求中还包括用于唯一标识所述服务请求的跟踪标记。
本申请第二方面提供一种服务请求的追踪装置,所述装置包括:
处理模块,用于当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;
发送模块,用于在向逻辑链路的下一层节点发送服务请求时,将所述处理模块生成的当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
在一个实施方式中,所述处理模块包括:
第一处理子模块,用于如果当前层节点为第一层服务节点,生成标识第一层的父层空间标记;或,
第二处理子模块,用于如果当前层节点为非第一层服务节点,从所述接收的服务请求中获取父层空间标记,所述父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。
本申请第三方面提供一种电子设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
本申请第四方面提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。
本申请提供的技术方案可以包括以下有益效果:
本申请的技术方案,当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;在向逻辑链路的下一层节点发送服务请求时,将所述当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。由于在每层节点均设置本层空间标记和父层空间标记,其中父层空间标记可以标识出当前层节点与上一层节点的调用关系,而当前层的本层空间标记除了用于标识本层请求服务的位置,同时又会作为下一层节点的父层空间标记被该下一层节点所使用,可以标识出当前层节点与下一层节点的调用关系。而相关技术中在调用RPC服务的过程中,可能会出现绕圈调用或循环调用等错误,尤其是循环调用一个RPC服务会导致这里容易发生性能瓶颈,这样仅根据TraceID无法确定节点之间的上下级调用顺序,从而无法快速定位出错的位置。与相关技术相比,本申请提供的上述处理方式,就可以根据当前层的本层空间标记和父层空间标记,更快速识别出服务请求的上下级调用关系。当识别出上下级调用关系后,如果服务出现问题,根据识别出的上下级调用关系也更容易排查问题原因,也提高了排查效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
通过结合附图对本申请示例性实施方式进行更详细的描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
图1是本申请一实施例示出的服务请求的追踪方法的流程示意图;
图2是本申请实施例所示的服务请求的追踪方法的应用架构示意图;
图3是本申请另一实施例示出的服务请求的追踪方法的流程示意图;
图4是本申请另一实施例示出的服务请求的追踪方法的流程示意图;
图5是本申请另一实施例示出的服务请求的追踪方法的流程示意图;
图6是本申请一实施例示出的节点RPC A生成本层空间标记和生成标识第一层的父层空间标记的示意图;
图7是本申请一实施例示出的节点RPC B生成本层空间标记和获取父层空间标记的示意图;
图8是本申请一实施例示出的节点RPC C生成本层空间标记和获取父层空间标记的示意图;
图9是本申请实施例示出的服务请求的追踪装置的结构示意图;
图10是本申请另一实施例示出的服务请求的追踪装置的结构示意图;
图11是本申请实施例示出的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的优选实施方式。虽然附图中显示了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
相关技术中,通过网络发起一个服务请求后,可能会调用多个RPC(RemoteProcedure Call,远程过程调用)服务,而其中一个RPC服务可能又会调用另一个RPC服务,仅仅根据每一个服务请求所具有的唯一的TraceID(跟踪标记),无法区分各RPC服务的上下级调用关系,在RPC服务出现问题时也很难排查问题原因。本申请实施例提供一种服务请求的追踪方法,该方法能够快速识别服务请求的上下级调用关系,更容易排查问题原因。以下结合附图详细描述本申请实施例的技术方案。
图1是本申请一实施例示出的服务请求的追踪方法的流程示意图。
参见图1,该服务请求的追踪方法,包括:
在步骤S101中,当前层节点接收服务请求,生成本层空间标记和确定父层空间标记。
确定父层空间标记可以包括:
如果当前层节点为第一层服务节点,生成标识第一层的父层空间标记,第一层的父层空间标记可以通过设定值标识为第一层的父层空间标记,其中设定值可以为0或1但不局限于此;
如果当前层节点为非第一层服务节点,从接收的服务请求中获取父层空间标记,父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。通过确定其中父层空间标记,可以标识出当前层节点也即本层节点与上一层节点的调用关系。
生成本层空间标记,可以包括:根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数。本层空间标记或父层空间标记包括字符、数字及字母中的至少一种或多种的组合。
在步骤S102中,在向逻辑链路的下一层节点发送服务请求时,将当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
当前层节点在向逻辑链路的下一层节点发送服务请求时,将当前层节点生成的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记,这样可以标识出当前层节点与下一层节点的调用关系。
该实施例的方案中,由于在每层节点均设置本层空间标记和父层空间标记,其中父层空间标记可以标识出当前层节点与上一层节点的调用关系,而当前层的本层空间标记除了用于标识本层请求服务的位置,同时又会作为下一层节点的父层空间标记被该下一层节点所使用,可以标识出当前层节点与下一层节点的调用关系。而相关技术中在调用RPC服务的过程中,可能会出现绕圈调用或循环调用等错误,尤其是循环调用一个RPC服务会导致这里容易发生性能瓶颈,这样仅根据TraceID无法确定节点之间的上下级调用顺序,从而无法快速定位出错的位置。与相关技术相比,本申请提供的上述处理方式,就可以根据当前层的本层空间标记和父层空间标记,更快速识别出服务请求的上下级调用关系。当识别出上下级调用关系后,如果服务出现问题,根据识别出的上下级调用关系也更容易排查问题原因,也提高了排查效率。
图2是本申请实施例所示的服务请求的追踪方法的应用架构示意图。
当一个服务请求发送到后端的服务器后,会请求到很多个RPC服务。在每个RPC服务器也即节点所在的设备上都会生成一条或者多条日志。以图2所示的一个服务请求的执行过程为例,图2中包括客户端(user)及3个不同层次的节点RPC A、RPC B、RPC C,分别请求三个RPC服务。该客户端可以是PC端或APP端,当客户端的用户向服务器发起服务请求,该服务请求先到达节点RPC A;根据服务请求中的请求逻辑,该服务请求在节点RPC A中分叉,被拆分成了两个逻辑链路,即逻辑链路A(RPC A->RPC C)和逻辑链路B(RPC A->RPC B->RPCC)。根据逻辑链路A,服务请求从节点RPC A直接到达节点RPC C;根据逻辑链路B,服务请求从节点RPC A经过节点RPC B,再到达节点RPC C。节点RPC A、RPC B及RPC C均是同一个服务请求所调用的节点,服务请求中包括了TraceID,用于唯一标识该服务请求。相关技术中在调用RPC服务的过程中,可能会出现绕圈调用或循环调用等错误。所谓绕圈调用就是例如a调用b,然后b又调用a,所谓循环调用就是例如a里面循环调用b。不管是绕圈调用还是循环调用都是不合理的,尤其是循环调用一个RPC服务会导致这里容易发生性能瓶颈。在进行错误排查时,虽然可以通过TraceID找出唯一对应的服务请求及该服务请求所有调用的RPC服务,但是却无法找到各RPC服务间的上下级调用顺序,即仅根据TraceID无法确定节点RPCA、RPC B及RPC C之间的上下级调用顺序,从而无法快速定位出错的位置。利用本申请实施例的方案,则可以确定节点RPC A、RPC B及RPC C之间的上下级调用顺序,并能快速定位出错的位置。
以下分别通过图3-图5所示流程分别描述不同情况下的服务请求的追踪方法。
图3是本申请另一实施例示出的服务请求的追踪方法的流程示意图。图3从图2中的节点RPC A侧描述本实施例的服务请求的追踪方法的流程。
参见图3,该服务请求的追踪方法,包括:
在步骤S301中,节点RPC A接收客户端发送的服务请求,生成本层空间标记和生成标识第一层的父层空间标记。
当前层节点也即节点RPC A作为第一层服务节点,在接收客户端发送的web服务请求后,生成本层空间标记和生成标识第一层的父层空间标记。节点RPC A生成本层空间标记和生成标识第一层的父层空间标记可以没有顺序关系。
节点RPC A根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
由于节点RPC A为第一层服务节点,因此也生成标识第一层的父层空间标记,生成的标识第一层的父层空间标记可以通过设定值标识为第一层的父层空间标记,其中设定值可以为0或1但不局限于此。通过设定值进行标识,可以使得快速识别出该父层空间标记是属于第一层的父层空间标记。需说明的是,除了通过设定值标识,也可以采用其他方式进行标识,只要能识别出该父层空间标记是属于第一层的父层空间标记就可以。
需说明的是,该服务请求还包括唯一标识该服务请求的TraceID(跟踪标记)。
在步骤S302中,节点RPC A在向逻辑链路A的下一层节点RPC C发送服务请求时,将本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。
根据服务请求中的请求逻辑,该服务请求在节点RPC A中分叉,被拆分成了两个逻辑链路,即逻辑链路A(RPC A->RPCC)和逻辑链路B(RPC A->RPC B->RPCC)。在该步骤S302中,节点RPC A在向逻辑链路A的下一层节点RPC C发送服务请求时,将本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记,这样可以标识出当前层节点RPCA与下一层节点RPC C的调用关系。
在步骤S303中,节点RPC A在向逻辑链路B的下一层节点RPC B发送服务请求时,将本层空间标记发送给下一层节点RPC B作为下一层节点RPC B的父层空间标记,并由节点RPC B将其生成的本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。
节点RPC A在向逻辑链路B的下一层节点RPC B发送服务请求时,将节点RPC A的本层空间标记发送给下一层节点RPC B作为下一层节点RPC B的父层空间标记,这样可以标识出节点RPC A与下一层节点RPC B的调用关系。而节点RPC B除了获取节点RPC A发送的节点RPC A的本层空间标记作为父层空间标记外,也生成节点RPC B的本层空间标记,将节点RPCB生成的本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。其中节点RPC B根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
需说明的是,步骤S302和步骤S303之间没有必然的顺序关系。
该实施例中,节点RPC A在向逻辑链路A的下一层节点RPC C发送服务请求时,将本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记,这样可以标识出当前层节点RPC A与下一层节点RPC C的调用关系。该实施例中,节点RPC A在向逻辑链路A的下一层节点RPC B发送服务请求时,将本层空间标记发送给下一层节点RPC B作为下一层节点RPC B的父层空间标记,这样可以标识出当前层节点RPC A与下一层节点RPC B的调用关系。
图4是本申请另一实施例示出的服务请求的追踪方法的流程示意图。图4从图2中的节点RPC B侧描述本实施例的服务请求的追踪方法的流程。
参见图4,该服务请求的追踪方法,包括:
在步骤S401中,节点RPC B从节点RPC A接收的服务请求中获取父层空间标记,生成本层空间标记,其中父层空间标记为上一层服务节点RPC A生成的该服务节点RPC A的本层空间标记。
当前层节点也即节点RPC B作为第二层服务节点,除了获取节点RPC A发送的节点RPC A的本层空间标记作为父层空间标记外,也生成节点RPC B的本层空间标记。其中节点RPC B根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
需说明的是,该服务请求还包括唯一标识该服务请求的TraceID(跟踪标记)。
在步骤S402中,节点RPC B将其生成的本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。
该实施例中,节点RPC B生成本层空间标记后,将节点RPC B生成的本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。这样可以标识出当前层节点RPC B与下一层节点RPC C的调用关系。
图5是本申请另一实施例示出的服务请求的追踪方法的流程示意图。
图5根据图2中的节点RPC A、RPC B及RPC C的逻辑链路顺序描述本实施例的服务请求的追踪方法的流程。随着服务请求的逻辑链路顺序,在每个RPC层的节点都会引入两个标记:分别是SySpaceId(本层空间标记)和SyParentSpaceId(父层空间标记)。需要说明的是,本申请对每个节节点中两个上述标记的生成或获取的先后顺序并不加以限定。其中,SySpaceId代表的是每一个RPC层的节点的空间标记,简单而言可以理解为自己的家的唯一标记;SyParentSpaceId代表的是到这个RPC层的节点之前的上一层的空间标记,简单而言可以理解为自己父母所在的空间的SySpaceId。每个RPC层的节点的空间都包括这两个标记来记录自己和自己父母之间的关系,而自己的空间的标记是跟服务进程一一绑定。
当执行逻辑链路A(RPC A->RPCC)的时候,也就是RPC A请求RPC C服务。这时候RPCA的SySpaceId会透传给RPC C,作为RPC C的SyParentSpaceId。RPC C也会生成自己本层的SySpaceId。这样,通过RPC C的SyParentSpaceId就能自动找到RPC C的父亲是RPCA。所谓透传,就是指只负责传输,不对传输的内容或业务进行处理。当执行逻辑链路B(RPC A->RPCB->RPCC)的时候,也就是RPC A请求RPC B服务,然后RPC B又再次请求了RPC C服务,就是将SyParentSpaceId一层层透传下来。这样,让每一个RPC层的空间都能找到自己的父亲,而SyParentSpaceId就是父亲所在的空间的唯一标记SySpaceId。
参见图5,该服务请求的追踪方法,包括:
步骤S501,节点RPC A接收客户端发送的服务请求。
节点RPC A接收客户端发送的web服务请求,该服务请求包括唯一标识该服务请求的TraceID(跟踪标记)。
在步骤S502中,节点RPC A生成本层空间标记和生成标识第一层的父层空间标记。
节点RPC A作为第一层服务节点,在接收客户端发送的web服务请求后,生成本层空间标记和生成标识第一层的父层空间标记。节点RPC A生成本层空间标记和生成标识第一层的父层空间标记可以没有顺序关系。
节点RPC A根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
由于节点RPC A为第一层服务节点,因此也生成标识第一层的父层空间标记,生成的标识第一层的父层空间标记可以通过设定值标识为第一层的父层空间标记,其中设定值可以为0或1但不局限于此。通过设定值进行标识,可以使得快速识别出该父层空间标记是属于第一层的父层空间标记。需说明的是,除了通过设定值标识,也可以采用其他方式进行标识,只要能识别出该父层空间标记是属于第一层的父层空间标记就可以。
参见图6,是本申请一实施例示出的节点RPC A生成本层空间标记和生成标识第一层的父层空间标记的示意图。图6中,由于节点RPC A为第一层服务节点,因此生成的SyParentSpaceId(父层空间标记)的设定值为0。需说明的是,该设定值也可以取其他数值,例如为1,只需能代表RPC A是第一层服务节点即可。通过设定值进行标识,可以使得快速识别出该父层空间标记是属于第一层的父层空间标记。需说明的是,除了通过设定值标识,也可以采用其他方式进行标识,只要能识别出该父层空间标记是属于第一层的父层空间标记就可以。节点RPC A生成的SySpaceId如图6所示,可以采用数字和字母的组合标识。在其中一个实施例中,空间标记可以为字符、数字及字母的至少一种或多种的组合。例如,生成的空间标记为多个字符,或多个数字,或多个字母,或多个字符、数字及字母的任意组合。
节点RPC A还包括TraceID(跟踪标记),即图6中的SyTraceID,用于唯一标识对应的服务请求。SyTraceID也是采用数字和字母的组合标识。SyTraceID的值与SyParentSpaceId和SySpaceId都不同。
在步骤S503中,节点RPC A向逻辑链路A的下一层节点RPC C发送服务请求,将本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。
根据逻辑链路A(RPC A->RPCC),节点RPC A向逻辑链路A的下一层节点RPC C发送服务请求,将本层空间标记发送给下一层节点RPC C作为下一层节点的父层空间标记。这样可以标识出当前层节点也即本层节点RPC A与下一层节点RPC C的调用关系。
在步骤S504中,节点RPC A向逻辑链路B的下一层节点RPC B发送服务请求,将本层空间标记发送给下一层节点RPC B作为下一层节点RPC B的父层空间标记。
需说明的是,步骤S503和步骤S504之间没有必然的顺序关系。
根据逻辑链路B(RPC A->RPC B->RPCC),节点RPC A向逻辑链路B的下一层节点RPCB发送服务请求,将本层空间标记发送给下一层节点RPC B作为下一层节点RPC B的父层空间标记。这样可以标识出当前层节点也即本层节点RPC A与下一层节点RPC B的调用关系。
在步骤S505中,节点RPC B从节点RPC A接收的服务请求中获取父层空间标记,生成本层空间标记。
节点RPC B作为第二层服务节点,除了获取节点RPC A发送的节点RPC A的本层空间标记作为父层空间标记外,也生成节点RPC B的本层空间标记。其中节点RPC B根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
参见图7,是本申请一实施例示出的节点RPC B生成本层空间标记和获取父层空间标记的示意图。节点RPC B的SyParentSpaceId,就是图6中节点RPC A生成的SySpaceId,即将获取的节点RPC A的本层空间标记作为节点RPC B的父层空间标记。节点RPC B生成的SySpaceId如图7所示,采用数字和字母的组合标识。节点RPC B还包括TraceID(跟踪标记),即图7中的SyTraceID,也是采用数字和字母的组合标识。SyTraceID一直保持一致。
在步骤S506中,节点RPC B将其生成的本层空间标记发送给下一层节点RPC C作为下一层节点RPC C的父层空间标记。
节点RPC B生成本层空间标记后,将节点RPC B生成的本层空间标记发送给下一层节点RPC C作为下一层节点的父层空间标记。这样可以标识出当前层节点也即本层节点RPCB与下一层节点RPC C的调用关系。
在步骤S507中,节点RPC C从节点RPC B接收的服务请求中获取父层空间标记,生成本层空间标记。
节点RPC C作为第三层服务节点,除了获取节点RPC B发送的节点RPC B的本层空间标记作为父层空间标记外,也生成节点RPC C的本层空间标记。其中节点RPC C根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
参见图8,是本申请一实施例示出的节点RPC C生成本层空间标记和获取父层空间标记的示意图。节点RPC C的SyParentSpaceId,就是图7中节点RPC B生成的SySpaceId,即将获取的节点RPC B的本层空间标记作为节点RPC C的父层空间标记。节点RPC C生成的SySpaceId如图8所示,采用数字和字母的组合标识。节点RPC C还包括TraceID(跟踪标记),即图8中的SyTraceID,也是采用数字和字母的组合标识。SyTraceID一直保持一致。
本申请实施例通过SySpaceId和SyParentSpaceId就能定位到这些RPC服务调用的上下级调用关系。服务请求的先后顺序的生成对于调试和性能优化有很多好处,包括通过上下级调用关系能定位服务请求内容不合理的位置,例如发现绕圈调用和循环调用。与相关技术相比,本申请实施例新增了两个标记SySpaceId和SyParentSpaceId,其中SyParentSpaceId是层层透传的,SySpaceId是实时生成的。本申请实施例可以先通过TraceID(跟踪标记)找出唯一对应的服务请求,然后就可以利用这两个标记能清晰的勾画出该服务请求内部RPC的层级关系,也即能找出上下级调用关系,快速定位复杂调用的服务请求内部的RPC的链路关系。利用找出的上下级调用关系,就能清晰勾勒出RPC服务的绕圈调用或循环调用,这样对于性能提升和规范代码起到了很好的指导作用,快速定位问题所在位置,提升性能,降低成本,提高调试效率。
与前述应用功能实现方法实施例相对应,本申请还提供了一种服务请求的追踪装置、电子设备及相应的实施例。
图9是本申请实施例示出的服务请求的追踪装置的结构示意图。
如图9所示,在一个实施例中,本申请提供一种服务请求的追踪装置90,包括:处理模块901、发送模块902。
处理模块901,用于当前层节点接收服务请求,生成本层空间标记和确定父层空间标记。
处理模块901确定父层空间标记可以包括:如果当前层节点为第一层服务节点,获取生成的标识第一层的父层空间标记,生成的标识第一层的父层空间标记可以通过设定值标识为第一层的父层空间标记,其中设定可以为0或1但不局限于此;如果当前层节点为非第一层服务节点,从接收的服务请求中获取父层空间标记,父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。通过确定其中父层空间标记,可以标识出当前层节点与上一层节点的调用关系。处理模块901生成本层空间标记,可以包括:根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数。本层空间标记或父层空间标记包括字符、数字及字母中的至少一种或多种的组合。
发送模块902,用于在向逻辑链路的下一层节点发送服务请求时,将处理模块901生成的当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
发送模块902在向逻辑链路的下一层节点发送服务请求时,将当前层节点也即本层节点生成的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记,这样可以标识出当前层节点与下一层节点的调用关系。
本实施例中,由于在每层节点均设置本层空间标记和父层空间标记,其中父层空间标记可以标识出当前层节点与上一层节点的调用关系,而本层空间标记除了用于标识本层请求服务的位置,同时又会作为下一层节点的父层空间标记被该下一层节点所使用,可以标识出当前层节点与下一层节点的调用关系。因此,上述方式使得可以根据本层空间标记和父层空间标记,更快速识别出服务请求的上下级调用关系。当识别出上下级调用关系后,如果服务出现问题,根据识别出的上下级调用关系也更容易排查问题原因,也提高了排查效率。
图10是本申请另一实施例示出的服务请求的追踪装置的结构示意图。
如图10所示,在一个实施例中,本申请提供一种服务请求的追踪装置91,包括:处理模块901、发送模块902。
处理模块901、发送模块902的功能可以参见图9中所描述,此处不再赘述。
在一个实施方式中,处理模块901还可以包括:第一处理子模块9011、第二处理子模块9012。
第一处理子模块9011,用于如果当前层为第一层服务节点,生成标识第一层的父层空间标记。
例如,同时参考图2,节点RPC A作为第一层服务节点,在接收客户端发送的web服务请求后,生成本层空间标记和生成标识第一层的父层空间标记。节点RPC A生成本层空间标记和生成标识第一层的父层空间标记可以没有顺序关系。节点RPC A根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。由于节点RPC A为第一层服务节点,因此也生成标识第一层的父层空间标记,生成的标识第一层的父层空间标记可以通过设定值标识为第一层的父层空间标记,其中设定可以为0或1但不局限于此。
第二处理子模块9012,用于如果当前层为非第一层服务节点,从接收的服务请求中获取父层空间标记,父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。
例如,同时参考图2,节点RPC B作为第二层服务节点,除了获取节点RPC A发送的节点RPC A的本层空间标记作为父层空间标记外,也生成节点RPC B的本层空间标记。其中节点RPC B根据至少一项以上参数生成本层空间标记,其中至少一项以上参数包括:服务进程号、时间戳、随机函数等。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。
图11本申请实施例示出的电子设备的结构示意图。该电子设备例如可以是服务器设备或其他终端设备。
参见图11,电子设备1100包括存储器1110和处理器1120。
处理器1120可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器1110可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器1120或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1110可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器810可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器1110上存储有可执行代码,当可执行代码被处理器1120处理时,可以使处理器1120执行上文述及的方法中的部分或全部。
上文中已经参考附图详细描述了本申请的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本申请所必须的。另外,可以理解,本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码指令。
或者,本申请还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或电子设备、服务器等)的处理器执行时,使所述处理器执行根据本申请的上述方法的各个步骤的部分或全部。
本领域技术人员还将明白的是,结合这里的申请所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本申请的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种服务请求的追踪方法,其特征在于,包括:
当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;
在向逻辑链路的下一层节点发送服务请求时,将所述当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
2.根据权利要求1所述的方法,其特征在于,所述确定父层空间标记,包括:
如果当前层节点为第一层服务节点,生成标识第一层的父层空间标记。
3.根据权利要求2所述的方法,其特征在于:
所述第一层的父层空间标记通过设定值标识为第一层的父层空间标记。
4.根据权利要求1所述的方法,其特征在于,所述确定父层空间标记,包括:
如果当前层节点为非第一层服务节点,从所述接收的服务请求中获取父层空间标记,所述父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。
5.根据权利要求1所述的方法,其特征在于,所述生成本层空间标记,包括:
根据至少一项以上参数生成本层空间标记,其中所述至少一项以上参数包括:服务进程号、时间戳、随机函数。
6.根据权利要求1至5任一项所述的方法,其特征在于:
所述本层空间标记或父层空间标记包括字符、数字及字母中的至少一种或多种的组合。
7.一种服务请求的追踪装置,其特征在于,所述装置包括:
处理模块,用于当前层节点接收服务请求,生成本层空间标记和确定父层空间标记;
发送模块,用于在向逻辑链路的下一层节点发送服务请求时,将所述处理模块生成的当前层节点的本层空间标记发送给下一层节点作为该下一层节点的父层空间标记。
8.根据权利要求7所述的装置,其特征在于,所述处理模块包括:
第一处理子模块,用于如果当前层节点为第一层服务节点,生成标识第一层的父层空间标记;或,
第二处理子模块,用于如果当前层节点为非第一层服务节点,从所述接收的服务请求中获取父层空间标记,所述父层空间标记为上一层服务节点生成的该上一层服务节点的本层空间标记。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-6中任一项所述的方法。
10.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011094694.1A CN113448745A (zh) | 2020-10-14 | 2020-10-14 | 服务请求的追踪方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011094694.1A CN113448745A (zh) | 2020-10-14 | 2020-10-14 | 服务请求的追踪方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448745A true CN113448745A (zh) | 2021-09-28 |
Family
ID=77808650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011094694.1A Pending CN113448745A (zh) | 2020-10-14 | 2020-10-14 | 服务请求的追踪方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448745A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117494117A (zh) * | 2023-11-17 | 2024-02-02 | 北京天融信网络安全技术有限公司 | 一种远程过程调用的跟踪系统及跟踪方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9912566B1 (en) * | 2015-07-20 | 2018-03-06 | Cisco Technology, Inc. | Method and apparatus for tracing paths in service function chains |
CN108600045A (zh) * | 2018-04-05 | 2018-09-28 | 厦门快商通信息技术有限公司 | 一种服务链路监控方法及装置 |
CN109726016A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种用于分布式系统的链路追踪方法、装置和系统 |
CN110457190A (zh) * | 2019-07-09 | 2019-11-15 | 优估(上海)信息科技有限公司 | 一种基于区块链的全链路监控方法、装置及系统 |
-
2020
- 2020-10-14 CN CN202011094694.1A patent/CN113448745A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9912566B1 (en) * | 2015-07-20 | 2018-03-06 | Cisco Technology, Inc. | Method and apparatus for tracing paths in service function chains |
CN109726016A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种用于分布式系统的链路追踪方法、装置和系统 |
CN108600045A (zh) * | 2018-04-05 | 2018-09-28 | 厦门快商通信息技术有限公司 | 一种服务链路监控方法及装置 |
CN110457190A (zh) * | 2019-07-09 | 2019-11-15 | 优估(上海)信息科技有限公司 | 一种基于区块链的全链路监控方法、装置及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117494117A (zh) * | 2023-11-17 | 2024-02-02 | 北京天融信网络安全技术有限公司 | 一种远程过程调用的跟踪系统及跟踪方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107483221B (zh) | 一种跨应用问题排查方法、装置及系统 | |
CN107092535B (zh) | 用于测试接口的数据存储的方法及设备 | |
CN114205342B (zh) | 服务调试的路由方法、电子设备及介质 | |
CN111767226B (zh) | 一种云计算平台资源的测试方法、系统及设备 | |
CN111064804A (zh) | 网络访问方法和装置 | |
CN112486719A (zh) | 一种用于rpc接口调用失败处理的方法及设备 | |
US20070023524A1 (en) | Contents access method and sorting apparatus | |
CN113448745A (zh) | 服务请求的追踪方法、装置及电子设备 | |
CN109428682A (zh) | 一种消息处理确认方法及装置 | |
CN112600703B (zh) | 网络设备远程访问故障定位方法及装置 | |
CN112769928B (zh) | 一种基于业务场景的信息交互方法及设备 | |
CN107483294B (zh) | 监控网络请求的方法及装置 | |
CN113065855B (zh) | 一种基于区块链的用于拆分数字资产的方法及系统 | |
CN106899429B (zh) | 一种基于snmp的设备管理方法及装置 | |
CN112738181B (zh) | 集群外部ip接入的方法、装置及服务器 | |
US20180373811A1 (en) | Client Cloud Synchronizer | |
CN111130941B (zh) | 一种网络错误检测方法、装置以及计算机可读存储介质 | |
US20230254806A1 (en) | Positioning method, edge computing platform, positioning platform, and computer-readable medium | |
CN113271235B (zh) | 网络流量的模糊测试方法、装置、存储介质及处理器 | |
CN110659251A (zh) | 数据处理方法、系统和电子设备 | |
TWI578158B (zh) | 偵測一隱私資訊有無可能被竊取的裝置及方法 | |
CN114006822B (zh) | 交换机和服务器之间链路的判断方法及装置 | |
CN115103020B (zh) | 数据迁移处理方法和装置 | |
CN112235619A (zh) | 一种播放终端系统及播放终端系统识别放映机的方法 | |
CN114385641A (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 |