CN117632445A - 请求处理方法以及装置、任务执行方法以及装置 - Google Patents
请求处理方法以及装置、任务执行方法以及装置 Download PDFInfo
- Publication number
- CN117632445A CN117632445A CN202410112470.0A CN202410112470A CN117632445A CN 117632445 A CN117632445 A CN 117632445A CN 202410112470 A CN202410112470 A CN 202410112470A CN 117632445 A CN117632445 A CN 117632445A
- Authority
- CN
- China
- Prior art keywords
- task
- request
- server
- derivative
- target
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000003672 processing method Methods 0.000 title claims abstract description 40
- 238000013500 data storage Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims description 55
- 238000004458 analytical method Methods 0.000 claims description 49
- 230000006870 function Effects 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 238000005314 correlation function Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 22
- 238000011144 upstream manufacturing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本说明书实施例提供请求处理方法以及装置、任务执行方法以及装置,其中所述请求处理方法应用于目标服务器,包括:响应于服务请求调用链路追踪程序提取服务请求中的请求路径信息,以及确定对应目标服务器的目标派生任务;根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;基于关联任务标识查询数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;数据存储结构中记录的键值对用于构建分布式链路追踪信息。
Description
技术领域
本说明书实施例涉及分布式系统技术领域,特别涉及请求处理方法以及装置、任务执行方法以及装置。
背景技术
随着计算机技术的发展,分布式系统为更多的服务项目提供了稳定的算力支持。由于分布式系统具有较高的可伸缩性和可靠性,更多的大型服务都会选择在分布式系统中实现。然而,随着分布式系统的复杂度变高,虽然其可以提供更高的算力支持,但是更为复杂的分布式系统的故障率也随之增长。当分布式系统发生故障时,存在非常复杂的服务依赖关系和异常传播现象,如一个服务器发生故障,可能会导致依赖/调用的其他服务器也发生故障。在这样的分布式系统中进行故障排除和修复非常困难。现有技术中,针对上述问题大多数采用分布式追踪系统来帮助开发人员和维护人员进行快速的故障定位。通过一步步追踪请求调用过程,可以追踪分布式服务中用户请求的特定请求路径,以支持分布式系统异常传播可以被追踪定位。然而,此方式虽然能够达到故障定位的目的,但是其效率低下,并且对原生分布式系统具有侵入性。因此亟需一种有效的方案以解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了一种请求处理方法。本说明书一个或者多个实施例同时涉及一种请求处理装置,一种请求处理系统,一种任务执行方法,一种任务执行装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序产品,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种请求处理方法,应用于目标服务器,包括:
响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;
根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;
在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;
基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;
其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
根据本说明书实施例的第二方面,提供了一种任务执行方法,应用于目标服务器,包括:
获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
根据本说明书实施例的第三方面,提供了一种请求处理装置,应用于目标服务器,包括:
调用模块,被配置为响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;
存储模块,被配置为根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;
确定模块,被配置为在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;
发送模块,被配置为基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;
其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
根据本说明书实施例的第四方面,提供了一种任务执行装置,应用于目标服务器,包括:
获取任务模块,被配置为获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
发送请求模块,被配置为根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收信息模块,被配置为接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
执行任务模块,被配置为根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
根据本说明书实施例的第五方面,提供了一种请求处理系统,包括目标服务器和关联服务器,包括:
所述目标服务器,用于响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息;
所述关联服务器,用于响应于所述关联服务请求执行关联请求处理任务。
根据本说明书实施例的第六方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
根据本说明书实施例的第八方面,提供了一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
本实施例提供的请求处理方法,为了能够支持分布式系统中的任意服务器可以在运行阶段进行追踪信息的记录,以支持在故障定位阶段可以直接读取追踪信息进行分布式链路追踪信息的构建,从而快速且精准的完成故障定位分析处理。具体实施时,目标服务器可以响应于服务器调用链路追踪程序提取服务请求中的请求路径信息,以及确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务;此时,可以根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;实现在数据存储结构中持久化关联服务请求的请求路径信息,以完成在目标服务器对服务请求关联的追踪信息的记录。并且,通过将请求路径信息存储在数据存储结构中,可以实现对目标服务器提供的服务项目无侵入,从而确保在服务项目稳定性的前提下完成路径信息的记录。通常一个请求需要依靠多个服务器共同完成,而为了能够确保该请求所关联的链路可以在故障定位阶段被精准获取,可以在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;此后再基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;实现发送关联服务器的请求中携带有当前服务器创建的关联请求路径信息,此后关联服务器也会执行与目标服务器相同的请求路径信息的存储操作。进而实现该请求相关的请求路径信息都存储链路涉及的服务器对应的数据存储结构中,从而实现在故障定位阶段,可以通过读取数据存储结构中的请求路径信息来确定请求关联的分布式链路追踪信息,从而快速且精准的完成故障定位,以降低故障对分布式系统带来的影响。
附图说明
图1是本说明书一个实施例提供的一种请求处理方法的示意图;
图2是本说明书一个实施例提供的一种请求处理方法的流程图;
图3是本说明书一个实施例提供的一种请求处理方法中服务请求结构的示意图;
图4是本说明书一个实施例提供的一种请求处理方法中请求路径信息透传的示意图;
图5是本说明书一个实施例提供的一种请求处理方法的处理过程流程图;
图6是本说明书一个实施例提供的一种请求处理装置的结构示意图;
图7是本说明书一个实施例提供的一种任务执行方法的流程图;
图8是本说明书一个实施例提供的一种任务执行装置的结构示意图;
图9是本说明书一个实施例提供的一种请求处理系统的结构示意图;
图10是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
分布式系统:一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
分布式链路追踪系统:在分布式系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。当某个模块出现性能瓶颈或者发生故障时,与其存在调用关系的其他模块也可能会发生故障/表现异常。这使得故障定位和分析变得复杂和困难。通过分布式追踪系统,可以定位请求的每条具体请求链路,从而轻易地实现请求链路追踪,进而定位和分析每个模块的性能瓶颈。
trace:在分布式链路追踪系统中,一条trace表示一条用户请求的请求路径。每条trace中的基本单元是span,一条trace可能由多个span组成。一条span表示在请求之间完成的一个操作,比如a服务调用b服务。span间的因果关系通过parent span进行记录。每个trace和span都有唯一的标识符(id)表示。
eBPF:eBPF允许开发者在Linux内核中执行用户自定义的程序,以对用户代码无侵入的方式,支持开发者在内核中完成一些扩展功能。eBPF定义了多种程序类型。eBPF程序会被附加到内核中指定的位置(钩子点)。每当有程序运行到这个位置时,被附加的 eBPF 程序也会被触发执行。eBPF 可以应用于过滤流量、流量分类、网络分类、修改套接字的设置等等的操作。eBPF 程序通过 eBPF Maps 来存储数据状态、统计信息等等。eBPF Maps 既可以被 BPF 程序访问,也可以被用户空间访问并操作,因此,可以用于实现 eBPF 程序之间的信息共享以及用户空间与 eBPF 程序的信息共享。
异步线程池服务模型:服务器处理来自上一跳的请求时,需要请求下一跳来完成响应。在线程池场景下,当前正在执行的任务会派生子任务来发送对下一跳的请求并阻塞,等待下一跳的响应到达后,子任务完成,再进行自身后续的处理逻辑。由于任务是用户级别抽象的细粒度调度对象,被创建出来的任务会被放到队列中,并调度到线程池中空闲的线程去执行。线程池中的线程在执行完当前任务后,会被回收到线程池中等待下一次的任务调度。不同的任务可以被调度到相同的线程上去执行。
HTTP协议:HTTP协议(超文本传输协议HyperText Transfer Protocol),是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。HTTP请求的所发送的数据格式主要由请求行,消息报头,请求正文三部分构成,其中,消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息。
在本说明书中,提供了一种请求处理方法,本说明书同时涉及一种请求处理装置,一种请求处理系统,一种任务执行方法,一种任务执行装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序产品,在下面的实施例中逐一进行详细说明。
参见图1所示的示意图,本实施例提供的请求处理方法,为了能够支持分布式系统中的任意服务器可以在运行阶段进行追踪信息的记录,以支持在故障定位阶段可以直接读取追踪信息进行分布式链路追踪信息的构建,从而快速且精准的完成故障定位分析处理。具体实施时,目标服务器可以响应于服务器调用链路追踪程序提取服务请求中的请求路径信息,以及确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务;此时,可以根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;实现在数据存储结构中持久化关联服务请求的请求路径信息,以完成在目标服务器对服务请求关联的追踪信息的记录。并且,通过将请求路径信息存储在数据存储结构中,可以实现对目标服务器提供的服务项目无侵入,从而确保在服务项目稳定性的前提下完成路径信息的记录。通常一个请求需要依靠多个服务器共同完成,而为了能够确保该请求所关联的链路可以在故障定位阶段被精准获取,可以在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;此后再基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;实现发送关联服务器的请求中携带有当前服务器创建的关联请求路径信息,此后关联服务器也会执行与目标服务器相同的请求路径信息的存储操作。进而实现该请求相关的请求路径信息都存储链路涉及的服务器对应的数据存储结构中,从而实现在故障定位阶段,可以通过读取数据存储结构中的请求路径信息来确定请求关联的分布式链路追踪信息,从而快速且精准的完成故障定位,以降低故障对分布式系统带来的影响。
参见图2,图2示出了根据本说明书一个实施例提供的一种请求处理方法的流程图,该方法应用于目标服务器,具体包括以下步骤:
步骤S202,响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务。
本实施例提供的请求处理方法可以应用于分布式系统中的任意服务器,且该服务器可以理解为是采用异步线程池服务模型的服务器。相应的,链路追踪程序具体是指运行在分布式系统中每个服务器上的追踪程序,该程序用于在服务器的内核中生成请求路径信息,用于追踪请求,同时能够基于该程序的数据存储结果持久化请求路径信息,以便在故障定位阶段可以从该结构中读取请求路径信息使用;并且,链路追踪程序可以挂载到服务器的主机内核网络发送和接收的相关函数上,实现在不侵入源代码的情况下即可运行;具体实施时,链路追踪程序可以采用eBPF程序实现。
相应的,服务请求具体是指目标服务器接收到的请求,该请求可以是上游服务器下发至目标服务器的请求,也可以是下游服务器上传至目标服务器的请求,该请求用于启动目标服务器所提供的服务功能,并基于请求执行相关的服务功能任务,从而作为请求的响应。需要说明的是,在分布式系统中,部分服务项目需要依靠多个目标服务器配合才能够响应用户的请求,因此目标服务器可以是多个目标服务器中的任意一个,且该服务器接收到的服务请求为响应用户请求的部分操作。相应的,请求路径信息具体是指服务请求中记录的用于描述各个服务器针对用户请求进行响应的流转信息,且目标服务器接收到的服务请求中记录的请求路径信息,是由向目标服务器发送服务请求的服务器生成;具体实施时,请求路径信息可以采用trace机制实现,通过trace机制可以表示用户请求对应的请求路径,从而记录分布式系统中具有关联关系的目标服务器之间的链路关系,以在故障定位阶段使用。相应的,派生任务具体是指用户请求关联的任务,当该服务器处理一个用户请求时,通常会派生多个任务同时完成这个请求的响应,比如请求上游服务、读取文件等操作,即:每个派生任务为响应用户请求所需要由服务器执行的任务,且不同的服务器可以存在多个不同的派生任务,而不同的服务器都需要执行具有关联关系的派生任务以响应用户请求。相应的,目标派生任务即为至少两个派生任务中对应目标服务器的派生任务。比如用户请求需要服务器a调用服务器b后共同完成相应的操作,则服务器a和服务器b分别会在响应过程中产生对应不同的派生任务,通过分别执行各自对应的派生任务完成相应的操作。
基于此,当该服务器处理一个用户请求时,通常会派生多个任务同时完成这个请求的响应,而多个派生任务会放入到线程池的任务队列中,等待被调度到线程池中的空闲线程去执行,线程执行完成一个任务后,会被回收到线程池汇总,等待下一次调度,从而节省异步线程场景下的频繁创建和销毁线程带来的额外开销。然而,基于线程池的调度机制,由于线程会被回收,多个不同请求对应的任务可能会被调度到同一个线程去执行,如果以线程标识作为分布式系统中服务器之间的透传依据,可能会出现线程标识被传递到不相关的服务器,进而会导致错误的请求关联结果。从而在故障定位阶段,很难基于该错误的请求关联结果完成精准根因定位。
因此,在面向异步线程池服务模型的场景下,为了能够确保关联准确性,可以通过链路追踪程序在请求中插入请求路径信息,任意服务器接收上一条的请求时,可以通过链路追踪程序在请求中提取请求路径信息进行存储,并在发送对下一条的请求时,会将生成的新的请求路径信息插入到请求后再下发,由此,在不需要对源代码进行任何插桩的情况下,即可完成请求路径信息的插入和透传,以支持在故障定位阶段使用。
进一步的,在调用链路追踪程序提取请求中的请求路径信息时,为了避免该程序对目标服务器的源代码侵入,从而影响目标服务器的服务稳定性,可以预先将程序挂载在内核网络上。本实施例中,具体实现方式如下:
接收用户针对目标服务提交的服务请求;根据所述服务请求调用链路追踪程序,其中,所述链路追踪程序挂载在所述目标服务器的内核网络节点关联的收发函数上;利用所述链路追踪程序解析所述服务请求,根据解析结果在所述服务请求的消息报头中提取请求路径信息。
具体的,用户具体是指使用目标服务的用户,目标服务具体是指需要依靠分布式系统中的多个服务器运行的服务,该服务可以向用户数据查询、支付、购物、图像处理、文本处理等。本实施例在此不作任何限定。相应的,内核网络节点具体是指目标服务器本地的主机内核网络,通过将链路追踪程序绑定在内核网络节点关联的收发函数上,可以实现在该服务器收发分布式系统中其他服务器的请求时,调用收发函数实现;进而会启动绑定在收发函数上的链路追踪程序,从而进行请求路径信息的记录。其中,服务请求具体是指基于http协议的请求,该请求由请求行,消息报头和请求正文组成,而消息报头由一系列的键值对组成,允许客户端向服务器发送一些附加信息或者客户端自身的信息。因此将请求路径信息添加在消息报头中,可以实现分布式系统中不同服务器之间传递附加信息-请求路径信息。
基于此,在接收到用户针对目标服务提交的服务请求的情况下,说明此时目标服务器需要针对服务请求进行响应,以支持用户使用目标服务提供的服务功能,此时可以根据服务请求调用挂载在目标服务器的内核网络节点关联的收发函数上的链路追踪程序,由于链路追踪程序绑定在收发函数上,因此在接收到服务请求的时刻,即可调用该程序,实现利用链路追踪程序解析服务请求后,可以根据解析结果在服务请求的消息报头中提取请求路径信息,以方便后续将记录请求对应的链路信息的请求路径信息记录到程序对应的服务存储结构中,以便在故障定位阶段使用。
实际应用中,为了实现分布式系统中的各个服务器之间可以进行请求路径信息(trace上下文)的插入和解析,服务器可以将链路追踪程序(eBPF程序)挂载到主机内核网路中的发送和接收相关的函数上,如sock_recvmsg等。当接收到来自上一跳的请求时,eBPF程序会从接收到的请求头中提取trace上下文并存储。在发送对下一跳的请求时,会再生成子trace上下文,之后将生成的子trace上下文插入到请求的头部中后,再发送到下一条对应的服务器。由此,在不需要对源代码进行任何插桩的情况下,可以实现trace上下文的插入和解析,且对用户透明。如图3所示的示意图,针对Egress,可以基于http协议提交请求后,由eBPF程序生成trace上下文并插入到请求的消息报头中,并发往目标服务器。针对Ingress,当接收到携带有trace上下文的请求后,可以通过eBPF程序解析该消息报头,从而提取trace上下文用于后续使用。其中,trace上下文包含Trace的id,占16byte,span的id,占8 byte,parent的id,占8byte。
本实施例以Golang语言的net/http实现的一个http服务器为例对请求处理方法进行说明,对于其他语言,如Java、C++、Python等,均可参见本实施例相同或相应的描述内容。需要说明的是,对于Java、Python而言,线程池模式的调度单位为任务,等价于Golang的协程,其线程池调度模型与Golang一致,相关描述均可参见本实施例描述。具体的,分布式系统的A服务器中,Golang程序以线程池模式、协程为单位执行。如图4所示的示意图,为程序对应的代码实际会产生的协程(部分)及其父子树。程序接收到用户请求后,会执行serveHTTP协程对请求执行处理函数,用于请求上游服务的工作,具体由writeloop协程执行发送请求的操作。在此基础上,当A服务器接收到用户请求后,此时会由serveHTTP协程处理,并调用绑定在接收相关函数上的eBPF程序,从用户请求中提取记录在消息报头中的trace上下文。同时,由于用户请求需要由serveHTTP协程处理,因此确定A服务器当前需要执行的任务对应serveHTTP协程,以方便后续基于上述信息进行trace上下文的存储以及透传。
综上,通过将链路追踪程序绑定在主机内核网络相关的收发函数上,可以实现在目标服务器接调用收发函数接收到请求后,即可及时调用链路追踪程序从请求中提取请求路径信息,以便在故障定位阶段使用请求路径信息完成请求链路的追踪。
步骤S204,根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构。
具体的,在上述调用链路追踪程序在服务请求中提取到请求路径信息后,进一步的,考虑到请求路径信息是记录追踪用户请求流转链路的描述信息,因此为了能够使得该请求路径信息在故障定位阶段可用,且能够应对在异步线程池场景下一个线程对应多个任务的情形,可以先确定目标派生任务的目标任务标识;之后将任务标识作为键,请求路径信息作为值,构建键值对;将键值对存储至链路追踪程序的数据存储结构。实现将能够表征服务请求唯一关系的目标派生任务的目标任务标识作为键,以及将请求路径信息作为值,将其存储到链路追踪程序的数据存储结构中,以支持在故障定位阶段,可以根据待分析的用户请求确定其关联的派生任务,之后基于派生任务的任务标识即可直接从各个服务器对应的数据存储结构中读取对应的请求路径信息使用,以快速且精准的完成用户请求对应的链路确定,从而在该链路上快速的完成故障定位处理。
其中,目标任务标识具体是指目标派生任务对应的唯一标识,且该任务标识不具有重复性。相应的。数据存储结构具体是指以键值对形式存储信息的结构,该数据存储结构可以用于存储数据状态、统计信息、请求路径信息等。在链路追踪程序为eBPF程序的情况下,数据存储结构即为eBPF程序的Map,将请求路径信息存储在eBPF程序的Map中,能够在故障定位阶段直接按照任务标识读取使用,从而确保被读取的请求路径信息与故障定位阶段需要分析的用户请求关联,避免引入冗余的请求路径信息而影响故障定位精准度和效率。
也就是说,为了支持每个服务器可以对关联用户请求的路径信息进行记录,可以将当前执行中任务对应的任务ID作为键,以及从请求中提取到的trace上下文作为值,构建键值对存储到eBPF程序的Map中,以便在故障定位阶段,可以从Map中读取trace上下文,进而确定用户请求对应的路径,以快速的完成故障定位处理。
沿用上例,在从用户请求中提取记录在消息报头中的trace上下文,以及确定A服务器当前需要执行的任务对应serveHTTP协程的情况下,此时可以将serveHTTP协程号(当前执行任务对应的任务ID)作为键,将trace上下文作为值,将其存储到eBPF程序的Map中。以便在故障定位时,可以从A服务器的eBPF程序Map中读取trace上下文确定用户请求对应的路径信息,以快速完成故障定位处理。
进一步的,当目标服务器的链路追踪程序完成对任务标识和请求路径信息的存储后,此时说明服务请求对应的请求追踪信息完成了记录,此时目标服务器即可执行目标派生任务,以响应服务请求。本实施例中,具体实现方式如下:
将所述目标派生任务添加至异步线程池的任务队列,并针对所述目标派生任务在所述异步线程池中选择目标线程;构建所述目标线程与所述目标派生任务之间的调度关系;在所述任务队列中的所述目标派生任务处于执行状态的情况下,基于所述调度关系将所述目标派生任务分配至所述目标线程并执行。
具体的,任务队列具体是指异步线程池对应的存放来自于不同服务器所需要执行的任务的队列,该队列满足先入先出规则,且进入队列中的任务按照进入顺序排序,以便异步线程池可以分配线程依次执行任务队列中的任务。相应的,目标线程具体是指在异步线程池中选择执行目标派生任务的线程,相应的,调度关系即为目标线程与目标派生任务之间的任务执行调度关系,基于该调度关系能够在目标派生任务执行阶段,从将任务分配给目标线程,进而实现目标线程执行目标派生任务。
基于此,在对请求路径信息存储的同时,为了不影响服务器执行目标派生任务而响应服务请求,还会将目标派生任务添加至异步线程池的任务队列,并针对目标派生任务在异步线程池中选择目标线程;此后,可以构建目标线程与目标派生任务之间的调度关系;并在任务队列中的目标派生任务处于执行状态的情况下,可以直接基于调度关系将目标派生任务分配至目标线程并执行,以将任务执行结果作为服务请求的响应。
具体实施时,分布式系统中对应用户请求的各个服务端都将执行上述操作,并在各个服务端都执行完成对应各自服务请求的派生任务后,即可完成用户请求对应服务的处理,比如用户需要查询存款额度,查询时分布式系统中的A服务器针对用户进行身份验证,验证通过后需要调用B服务器确定用户信息并查询存款额度,此时A服务器和B服务器将采用上述处理完成目标线程执行各自派生任务的处理,并在执行完成后向用户反馈存款额度的相关信息。
步骤S206,在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识。
具体的,在上述将请求路径信息存储到链路追踪程序对应的数据存储结构中后,进一步的,目标服务器对应的目标派生任务将被继续执行,当执行到至少两个派生任务中对应关联服务器的关联派生任务的情况下,说明此时需要向关联服务器发送执行派生任务的服务请求,而为了能够实现关联服务器接收到服务请求执行关联派生任务的同时,可以将记录请求对应路径信息的请求路径信息也存储到关联服务器的数据存储结构中,从而反映用户请求的流转信息。因此还需要创建携带有关联请求路径信息的关联服务请求再发送至关联服务器。而在创建携带有关联请求路径信息的关联服务请求的过程中,为了确保创建的关联请求路径信息可以精准记录请求对应的路径信息,可以先根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识,以便根据任务标识查询链路追踪程序的数据存储结构,实现根据查询结果创建出携带有关联请求路径信息的关联服务请求,再发送即可实现对请求对应路径信息的记录。
其中,关联服务器具体是指与目标服务器属于同一分布式系统中的服务器,且该服务器需要配合目标服务器执行不同的派生任务,才能够响应用户请求。相应的,关联派生任务具体是指至少两个派生任务中对应关联服务器的派生任务,该任务的执行需要向关联派生任务发送新的服务请求,以使得关联服务器可以基于新的服务请求执行相应的功能,以响应用户请求。相应的,任务关系具体是指至少两个派生任务中各个派生任务之间的关系,由于分布式系统中的各个服务器之间具有请求传递关系,因此派生任务基于该传递关系能够决定任务关系,实现基于该关系完成请求路径信息的创建,可以在故障定位阶段,读取请求路径信息确定各个服务器之间的传递关系,从而提高故障定位效率和精度。
进一步的,在确定关联任务标识时,考虑到该标识是用于生成关联请求路径信息的基础,且能够保证关联请求路径信息对追踪信息的记录,而派生任务中具有父子关系的任务通常会伴随着请求路径的连续,因此可以结合父子任务关系确定相邻派生任务的任务标识,以此为基础确定关联任务标识,以便在后续查询数据存储结构而得到关联请求路径信息使用。本实施例中,具体实现方式如下:
利用所述链路追踪程序获取所述至少两个派生任务对应的任务关系;根据所述任务关系在所述至少两个派生任务中确定与所述关联派生任务具有父子任务关系的相邻派生任务;基于所述关联派生任务的第一任务标识以及所述相邻派生任务的第二任务标识,确定关联任务标识。
具体的,父子任务关系具体是指与关联派生任务具有上相邻或者下相邻执行顺序的关系。相应的,相邻派生任务具体是指至少两个派生任务中与关联派生任务具有相邻任务执行关系的派生任务。相应的,第一任务标识具体是指关联派生任务对应的唯一标识,第二任务标识具体是指相邻派生任务对应的唯一标识。
基于此,为了能够完成对请求路径信息在分布式系统中各服务器之间进行透传,可以利用链路追踪程序获取至少两个派生任务对应的任务关系,以确定各个派生任务之间的从属关系。而后可以根据任务关系在至少两个派生任务中确定与关联派生任务具有父子任务关系的相邻派生任务;当确定相邻派生任务的情况下,说明此时基于任务关系能够反映出请求的路径信息,因此为了能够将其体现在请求路径信息中,可以先基于关联派生任务的第一任务标识以及相邻派生任务的第二任务标识,确定关联任务标识,以便后续根据关联任务标识查询数据存储结构,从而确定需要发送给关联派生任务的请求路径信息。
更进一步的,在基于第一任务标识和第二任务标识确定关联任务标识时,实则是检测数据存储结构中是否存在标识对应的请求路径信息,以在不存在时能够选择具有作用的任务标识在后续读取数据存储结构。本实施例中,具体实现方式如下:
确定所述关联派生任务的第一任务标识,基于所述第一任务标识查询所述数据存储结构;根据查询结果确定所述数据存储结构中不存在所述第一任务标识关联的第一请求路径信息的情况下,将所述第二任务标识作为所述关联任务标识。
基于此,在确定关联派生任务对应的第一任务标识,以及相邻派生任务对应的第二任务标识后,此时可以基于第一任务标识查询数据存储结构;若根据查询结果确定数据存储结构中存在第一任务标识关联的第一请求路径信息的情况下,说明此时下游请求需要携带的请求路径信息已经存储到数据存储结构中,则此时可以直接使用该请求路径信息创建发送给关联服务器的关联服务请求。根据查询结果确定数据存储结构中不存在第一任务标识关联的第一请求路径信息的情况下,说明此时需要发送给关联服务器的请求路径信息还未创建,因此可以将第二任务标识作为所述关联任务标识,实现基于该标识查询数据存储结构后,根据查询结果能够创建出对应关联服务器的关联请求路径信息,以确保对请求对应路径信息的记录。
实际应用中,由于服务器配置有eBPF程序,因此通过eBPF程序不仅可以监控服务器中的任务创建过程,还可以在此过程中获取任务之间的父子关系。也能够监控任务调度到线程的过程,在此过程能够获取任务的调度关系。在此基础上,当目标服务器需要发送对上游的请求时,按照当前正在执行的派生任务的任务ID,以及该派生任务对应的父派生任务的任务ID,可以直接查询eBPF程序Map,以将查询到的trace上下文作为父派生任务的父trace上下文,同时可以再针对该派生任务创建子trace上下文,并将其作为关联服务器对应的关联请求路径信息,并以键值对的方式插入到上游请求的头部,以此即可实现透传trace上下文,从而表明两个请求之间的因果关系,以便在故障定位阶段可以读取trace上下文使用。
综上,通过结合父子任务关系在至少两个派生任务中确定关联派生任务对应的相邻派生任务,并加载两个任务的任务标识,可以实现通过任务关系体现请求的流转,并且由于请求路径信息是基于任务标识存储到数据存储结构中的,因此通过任务关系更能够确保确定关联任务标识的精准度,以实现在后续以标识为基础完成关联请求路径信息的创建。
步骤S208,基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
具体的,在上述确定关联派生任务对应的任务标识后,进一步的,为了能够创建出对应关联服务器的关联请求路径信息,以记录用户请求的流转路径,可以先基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,此后即可将其发送至关联服务器,以实现关联服务器可以响应于关联服务请求继续执行相应的任务,且关联服务器接收到关联服务请求后的处理过程,与本实施例中目标服务器的处理逻辑相似,相同或相应的描述均可参见本实施例的描述,本实施例在此不作过多赘述。
其中,关联服务请求和关联请求路径信息均为对应关联服务器的服务请求和请求路径信息。相应的,分布式链路追踪信息具体是指能够反映用户请求对应路径信息的数据,用于在故障定位阶段,可以根据该信息确定用户请求的对应的链路,以在链路中确定故障节点进行处理。
进一步的,在创建关联服务请求时,实则是通过查询数据存储结构后,根据查询结构构建对应关联服务器的关联请求路径信息,且该信息中会记录请求链路相关的描述信息,以确保用户请求对应的各个服务器都能够在自身对应的数据存储结构中记录该信息,以支持在故障定位阶段,可以从各个服务器的数据存储结构中读取该信息使用。本实施例中,具体实现方式如下:
基于所述关联任务标识查询所述数据存储结构,根据查询结果确定所述请求路径信息;根据所述请求路径信息创建关联请求路径信息;创建所述关联服务器对应的关联服务请求,将所述关联请求路径信息添加至所述关联服务请求的消息报头,并发送至所述关联服务器;其中,所述关联服务器与所述目标服务属于分布式系统。
基于此,在创建对应关联服务器的关联服务请求时,可以先基于关联任务标识查询数据存储结构,由于数据存储结构中记录有任务标识对应的请求路径信息,而需要发往关联服务器的请求路径信息需要与之关联,因此可以根据查询结果确定请求路径信息;此时即可根据请求路径信息创建关联请求路径信息,以及创建关联服务器对应的关联服务请求,之后将关联请求路径信息添加至关联服务请求的消息报头,并发送至关联服务器即可。
沿用上例,当A服务器对应的函数执行到指定阶段,派生了子协程执行对下游的请求,也就是说,此时需要向下游服务器发送请求。此过程中,会通过writeloop协程执行发送上游请求,而被发送的请求需要插入trace上下文。因此,A服务器可以通过writeloop协程查询当前对应的协程号(任务ID),并基于该协程号查询eBPF程序的Map中是否存在与其对应的trace,若存在,说明A服务器已经将下游请求携带的trace上下文存储到Map中。因此可以从中读取trace上下文并插入到上游请求中,并通过writeloop协程执行发送上游请求的操作即可。若不能存在,说明Map中不存在与该协程号对应的trace上下文,因此可以沿着父子树查询其父协程http.Get(),而后查询到serveHTTP协程持有的trace上下文。并在此基础上,创建子trace上下文,之后将子trace上下文插入到上游请求的消息报头中,并将携带有子trace上下文的上游请求通过writeloop协程发送至B服务器即可。以实现B服务器可以基于该请求响应用户请求的相关操作。
综上,在创建关联服务请求中携带的关联请求路径信息时,为了能够通过关联路径信息记录请求的流转信息,可以结合关联任务标识查询数据存储结果,并在数据存储结构中读取到请求路径信息的基础上再创建关联请求路径信息,进而确保发送到关联服务器的请求路径信息能够表征请求的路径,以便在故障定位阶段使用。
此外,至少两个派生任务中的任务关系影响关联请求路径信息的创建,因此在确定任务关系时,可以通过基准子程序实现。本实施例中,具体实现方式如下:
通过所述链路追踪程序加载基准子程序,并将所述基准子程序挂载至所述关联派生任务对应的关联函数;在执行所述关联派生任务且调用所述关联函数被调用的情况下,启动所述基准子程序获取所述任务关系。
具体的,基准子程序具体是指能够获取任务关系的子程序,其可以是uprobe程序。相应的,关联函数具体是指关联派生任务在被执行时所需要启动的函数。基于此,在任务关系确定阶段,可以通过链路追踪程序加载基准子程序,并将基准子程序挂载至关联派生任务对应的关联函数;实现在执行关联派生任务且调用关联函数被调用的情况下,可以启动基准子程序获取任务关系,以根据任务关系进行后续的处理。
沿用上例,由于readloop和writeloop协程是与长连接相关(一个连接对应的发送和接受的协程是固定的),一个长连接可能会被多个不同的http.Get协程使用。针对此问题,为保证协程父子关系的正确性,以保证trace上下文可以精准透传,可以通过eBPF挂载uprobe程序到writeloop和readloop函数上,以实现获取连接与其writeloop协程和readloop协程的归属关系。而后,挂载uprobe程序到roundTrip用户函数,进而确定当前http.Get协程使用的连接。此后即可根据归属关系,找到相应的writeloop和readloop协程,而后更新其父协程为当前http.Get协程,以此保证协程父子关系的正确性。在此基础上再进行trace上下文的传递即可。
综上,通过结合基准子程序进行任务关系的确定,可以有效的确保任务关系的确定精准度,以此为基础进行请求路径信息的透传,能够避免信息错误而带来的故障定位不准确问题。
此外,在请求分析阶段,即可从各个服务器对应的数据存储结构中读取链路追踪信息使用。本实施例中,具体实现方式如下:
获取请求分析任务,并根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;根据所述链路追踪信息构建所述分布式链路追踪信息,并执行所述请求分析任务。
具体的,请求分析任务具体是指在故障定位阶段需要对用户请求进行追踪的任务,用于确定用户请求对应的路径后,快速定位发生故障的位置,以解除故障而降低影响。相应的,追踪信息获取请求具体是指向至少两个派生任务分别对应的服务器发送的获取存储在数据存储结构中请求路径信息的请求。
基于此,在故障定位阶段,为了能够快速定位故障位置,可以先获取请求分析任务,并根据请求分析任务向至少两个派生任务分别对应的服务器发送追踪信息获取请求;此后可以接收至少两个派生任务分别对应的服务器针对追踪信息获取请求反馈的链路追踪信息,且链路追踪信息存储在各个服务器对应的数据存储结构中;此后即可根据链路追踪信息构建分布式链路追踪信息,以此为基础再执行请求分析任务,即可实现根据分布式链路追踪信息确定发生故障的位置。
举例说明,在分布式系统发生故障,需要运维人员完成请求级别的根因定位时,可以创建根因定位请求发送到分布式系统中的各个服务器,并接收各个服务器存储在eBPF程序Map中的trace上下文。通过分析trace上下文确定待定位请求级别的用户请求的路径信息。此后基于该路径信息即可快速的确定造成本次故障问题的故障节点,并提醒运维人员,即可快速的完成故障解除处理,以降低对分布式系统的运行影响。
本实施例提供的请求处理方法,为了能够支持分布式系统中的任意服务器可以在运行阶段进行追踪信息的记录,以支持在故障定位阶段可以直接读取追踪信息进行分布式链路追踪信息的构建,从而快速且精准的完成故障定位分析处理。具体实施时,目标服务器可以响应于服务器调用链路追踪程序提取服务请求中的请求路径信息,以及确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务;此时,可以根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;实现在数据存储结构中持久化关联服务请求的请求路径信息,以完成在目标服务器对服务请求关联的追踪信息的记录。并且,通过将请求路径信息存储在数据存储结构中,可以实现对目标服务器提供的服务项目无侵入,从而确保在服务项目稳定性的前提下完成路径信息的记录。通常一个请求需要依靠多个服务器共同完成,而为了能够确保该请求所关联的链路可以在故障定位阶段被精准获取,可以在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;此后再基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;实现发送关联服务器的请求中携带有当前服务器创建的关联请求路径信息,此后关联服务器也会执行与目标服务器相同的请求路径信息的存储操作。进而实现该请求相关的请求路径信息都存储链路涉及的服务器对应的数据存储结构中,从而实现在故障定位阶段,可以通过读取数据存储结构中的请求路径信息来确定请求关联的分布式链路追踪信息,从而快速且精准的完成故障定位,以降低故障对分布式系统带来的影响。
下述结合附图5,以本说明书提供的请求处理方法在分布式系统中的应用为例,对所述请求处理方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种请求处理方法的处理过程流程图,具体包括以下步骤。
步骤S502,接收用户针对目标服务提交的服务请求。
步骤S504,根据服务请求调用链路追踪程序,其中,链路追踪程序挂载在目标服务器的内核网络节点关联的收发函数上。
步骤S506,利用链路追踪程序解析服务请求,根据解析结果在服务请求的消息报头中提取请求路径信息。
步骤S508,响应于服务请求确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务。
本实施例以Golang语言的net/http实现的一个http服务器为例对请求处理方法进行说明,对于其他语言,如Java、C++、Python等,均可参见本实施例相同或相应的描述内容,需要说明的是,对于Java、Python而言,线程池模式的调度单位为任务,等价于Golang的协程,其线程池调度模型与Golang一致,相关描述均可参见本实施例描述。具体的,分布式系统的A服务器中,Golang程序以线程池模式、协程为单位执行。如图4所示的示意图,为程序对应的代码实际会产生的协程(部分)及其父子树。程序接收到用户请求后,会执行s(serveHTTP)协程对请求执行处理函数,该处理函数可以为函数1(如:BackgroundReader函数)、函数2…函数n(如http.Get()函数),用于请求上游服务的工作,基于处理函数n可以调用w(writeloop)协程执行发送请求的操作。在此基础上,当A服务器接收到用户请求后,此时会由serveHTTP协程处理,并调用绑定在接收相关函数上的eBPF程序,从用户请求中提取记录在消息报头中的trace上下文。同时,由于用户请求需要由serveHTTP协程处理,因此确定A服务器当前需要执行的任务对应serveHTTP协程,以方便后续基于上述信息进行trace上下文的存储以及透传。
步骤S510,确定目标派生任务的目标任务标识;将任务标识作为键,请求路径信息作为值,构建键值对。
步骤S512,将键值对存储至链路追踪程序的数据存储结构。
沿用上例,在从用户请求中提取记录在消息报头中的trace上下文,以及确定A服务器当前需要执行的任务对应serveHTTP协程的情况下,此时可以将serveHTTP协程号(当前执行任务对应的任务ID)作为键,将trace上下文作为值,将其存储到eBPF程序的Map中。以便在故障定位时,可以从A服务器的eBPF程序Map中读取trace上下文确定用户请求对应的路径信息,以快速完成故障定位处理。
步骤S514,在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,利用链路追踪程序获取至少两个派生任务对应的任务关系。
步骤S516,根据任务关系在至少两个派生任务中确定与关联派生任务具有父子任务关系的相邻派生任务。
步骤S518,基于关联派生任务的第一任务标识以及相邻派生任务的第二任务标识,确定关联任务标识。
步骤S520,基于关联任务标识查询数据存储结构,根据查询结果确定请求路径信息。
步骤S522,根据请求路径信息创建关联请求路径信息。
步骤S524,创建关联服务器对应的关联服务请求,将关联请求路径信息添加至关联服务请求的消息报头,并发送至关联服务器。其中,关联服务器与目标服务属于分布式系统,且数据存储结构中记录的键值对用于构建分布式链路追踪信息。
沿用上例,当A服务器对应的函数执行到指定阶段,派生了子协程执行对下游的请求,也就是说,此时需要向下游服务器发送请求。此过程中,会通过writeloop协程执行发送上游请求,而被发送的请求需要插入trace上下文。因此,A服务器可以通过writeloop协程查询当前对应的协程号(任务ID),并基于该协程号查询eBPF程序的Map中是否存在与其对应的trace,若存在,说明A服务器已经将下游请求携带的trace上下文存储到Map中。因此可以从中读取trace上下文并插入到上游请求中,并通过writeloop协程执行发送上游请求的操作即可。若不能存在,说明Map中不存在与该协程号对应的trace上下文,因此可以沿着父子树查询其父协程http.Get(),而后查询到serveHTTP协程持有的trace上下文。并在此基础上,创建子trace上下文,之后将子trace上下文插入到上游请求的消息报头中,并将携带有子trace上下文的上游请求通过writeloop协程发送至B服务器即可。以实现B服务器可以基于该请求响应用户请求的相关操作。
本实施例提供的请求处理方法,为了能够支持分布式系统中的任意服务器可以在运行阶段进行追踪信息的记录,以支持在故障定位阶段可以直接读取追踪信息进行分布式链路追踪信息的构建,从而快速且精准的完成故障定位分析处理。具体实施时,目标服务器可以响应于服务器调用链路追踪程序提取服务请求中的请求路径信息,以及确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务;此时,可以根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;实现在数据存储结构中持久化关联服务请求的请求路径信息,以完成在目标服务器对服务请求关联的追踪信息的记录。并且,通过将请求路径信息存储在数据存储结构中,可以实现对目标服务器提供的服务项目无侵入,从而确保在服务项目稳定性的前提下完成路径信息的记录。通常一个请求需要依靠多个服务器共同完成,而为了能够确保该请求所关联的链路可以在故障定位阶段被精准获取,可以在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;此后再基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;实现发送关联服务器的请求中携带有当前服务器创建的关联请求路径信息,此后关联服务器也会执行与目标服务器相同的请求路径信息的存储操作。进而实现该请求相关的请求路径信息都存储链路涉及的服务器对应的数据存储结构中,从而实现在故障定位阶段,可以通过读取数据存储结构中的请求路径信息来确定请求关联的分布式链路追踪信息,从而快速且精准的完成故障定位,以降低故障对分布式系统带来的影响。
与上述方法实施例相对应,本说明书还提供了请求处理装置实施例,图6示出了本说明书一个实施例提供的一种请求处理装置的结构示意图。如图6所示,该装置应用于目标服务器,包括:
调用模块602,被配置为响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;
存储模块604,被配置为根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;
确定模块606,被配置为在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;
发送模块608,被配置为基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;
其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
一个可选的实施例中,所述调用模块602进一步被配置为:
接收用户针对目标服务提交的服务请求;根据所述服务请求调用链路追踪程序,其中,所述链路追踪程序挂载在所述目标服务器的内核网络节点关联的收发函数上;利用所述链路追踪程序解析所述服务请求,根据解析结果在所述服务请求的消息报头中提取请求路径信息。
一个可选的实施例中,所述确定模块606进一步被配置为:
利用所述链路追踪程序获取所述至少两个派生任务对应的任务关系;根据所述任务关系在所述至少两个派生任务中确定与所述关联派生任务具有父子任务关系的相邻派生任务;基于所述关联派生任务的第一任务标识以及所述相邻派生任务的第二任务标识,确定关联任务标识。
一个可选的实施例中,所述确定模块606进一步被配置为:
确定所述关联派生任务的第一任务标识,基于所述第一任务标识查询所述数据存储结构;根据查询结果确定所述数据存储结构中不存在所述第一任务标识关联的第一请求路径信息的情况下,将所述第二任务标识作为所述关联任务标识。
一个可选的实施例中,所述发送模块608进一步被配置为:
基于所述关联任务标识查询所述数据存储结构,根据查询结果确定所述请求路径信息;根据所述请求路径信息创建关联请求路径信息;创建所述关联服务器对应的关联服务请求,将所述关联请求路径信息添加至所述关联服务请求的消息报头,并发送至所述关联服务器;其中,所述关联服务器与所述目标服务属于分布式系统。
一个可选的实施例中,所述装置还包括:
添加模块,被配置为将所述目标派生任务添加至异步线程池的任务队列,并针对所述目标派生任务在所述异步线程池中选择目标线程;构建所述目标线程与所述目标派生任务之间的调度关系;在所述任务队列中的所述目标派生任务处于执行状态的情况下,基于所述调度关系将所述目标派生任务分配至所述目标线程并执行。
一个可选的实施例中,所述装置还包括:
获取任务模块,被配置为获取请求分析任务,并根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;根据所述链路追踪信息构建所述分布式链路追踪信息,并执行所述请求分析任务。
一个可选的实施例中,所述装置还包括:
获取任务关系模块,被配置为通过所述链路追踪程序加载基准子程序,并将所述基准子程序挂载至所述关联派生任务对应的关联函数;在执行所述关联派生任务且调用所述关联函数被调用的情况下,启动所述基准子程序获取所述任务关系。
本实施例提供的请求处理装置,为了能够支持分布式系统中的任意服务器可以在运行阶段进行追踪信息的记录,以支持在故障定位阶段可以直接读取追踪信息进行分布式链路追踪信息的构建,从而快速且精准的完成故障定位分析处理。具体实施时,目标服务器可以响应于服务器调用链路追踪程序提取服务请求中的请求路径信息,以及确定服务请求关联的至少两个派生任务中对应目标服务器的目标派生任务;此时,可以根据目标派生任务的目标任务标识以及请求路径信息构建键值对,并将键值对存储至链路追踪程序的数据存储结构;实现在数据存储结构中持久化关联服务请求的请求路径信息,以完成在目标服务器对服务请求关联的追踪信息的记录。并且,通过将请求路径信息存储在数据存储结构中,可以实现对目标服务器提供的服务项目无侵入,从而确保在服务项目稳定性的前提下完成路径信息的记录。通常一个请求需要依靠多个服务器共同完成,而为了能够确保该请求所关联的链路可以在故障定位阶段被精准获取,可以在执行至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据至少两个派生任务的任务关系确定关联派生任务对应的关联任务标识;此后再基于关联任务标识查询数据存储结构,以实现根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至关联服务器;实现发送关联服务器的请求中携带有当前服务器创建的关联请求路径信息,此后关联服务器也会执行与目标服务器相同的请求路径信息的存储操作。进而实现该请求相关的请求路径信息都存储链路涉及的服务器对应的数据存储结构中,从而实现在故障定位阶段,可以通过读取数据存储结构中的请求路径信息来确定请求关联的分布式链路追踪信息,从而快速且精准的完成故障定位,以降低故障对分布式系统带来的影响。
上述为本实施例的一种请求处理装置的示意性方案。需要说明的是,该请求处理装置的技术方案与上述的请求处理方法的技术方案属于同一构思,请求处理装置的技术方案未详细描述的细节内容,均可以参见上述请求处理方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了任务执行方法实施例,图7示出了本说明书一个实施例提供的一种任务执行方法的流程图。如图7所示,该方法应用于目标服务器,包括:
步骤S702,获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
步骤S704,根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
步骤S706,接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
步骤S708,根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
本实施例提供的任务执行方法可参见上述实施例中关于请求处理方法的描述,本实施例在此不作过多赘述。
与上述方法实施例相对应,本说明书还提供了任务执行装置实施例,图8示出了本说明书一个实施例提供的一种任务执行装置的结构示意图。如图8所示,该装置应用于目标服务器,包括:
获取任务模块802,被配置为获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
发送请求模块804,被配置为根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收信息模块806,被配置为接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
执行任务模块808,被配置为根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
上述为本实施例的一种任务执行装置的示意性方案。需要说明的是,该任务执行装置的技术方案与上述的任务执行方法的技术方案属于同一构思,任务执行装置的技术方案未详细描述的细节内容,均可以参见上述任务执行方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了请求处理系统实施例,图9示出了本说明书一个实施例提供的一种请求处理系统的结构示意图。如图9所示,请求处理系统900包括目标服务器910和关联服务器920,包括:
所述目标服务器910,用于响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息;
所述关联服务器920,用于响应于所述关联服务请求执行关联请求处理任务。其中,关联请求处理任务即为对应目标服务器执行的请求处理过程。
上述为本实施例的一种请求处理系统的示意性方案。需要说明的是,该请求处理系统的技术方案与上述的请求处理方法的技术方案属于同一构思,请求处理系统的技术方案未详细描述的细节内容,均可以参见上述请求处理系统的技术方案的描述。
图10示出了根据本说明书一个实施例提供的一种计算设备1000的结构框图。该计算设备1000的部件包括但不限于存储器1010和处理器1020。处理器1020与存储器1010通过总线1030相连接,数据库1050用于保存数据。
计算设备1000还包括接入设备1040,接入设备1040使得计算设备1000能够经由一个或多个网络1060通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备1040可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)。
在本说明书的一个实施例中,计算设备1000的上述部件以及图10中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图10所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1000可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备1000还可以是移动式或静止式的服务器。
其中,处理器1020用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的请求处理方法或任务执行方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述请求处理方法或任务执行方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的请求处理方法或任务执行方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述请求处理方法或任务执行方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现上述请求处理方法或任务执行方法的步骤。
上述为本实施例的一种计算机程序产品的示意性方案。需要说明的是,该计算机程序产品的技术方案与上述的请求处理方法或任务执行方法的技术方案属于同一构思,计算机程序产品的技术方案未详细描述的细节内容,均可以参见上述请求处理方法或任务执行方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (15)
1.一种请求处理方法,应用于目标服务器,包括:
响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;
根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;
在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;
基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;
其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
2.根据权利要求1所述的方法,所述响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,包括:
接收用户针对目标服务提交的服务请求;
根据所述服务请求调用链路追踪程序,其中,所述链路追踪程序挂载在所述目标服务器的内核网络节点关联的收发函数上;
利用所述链路追踪程序解析所述服务请求,根据解析结果在所述服务请求的消息报头中提取请求路径信息。
3.根据权利要求1所述的方法,所述根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识,包括:
利用所述链路追踪程序获取所述至少两个派生任务对应的任务关系;
根据所述任务关系在所述至少两个派生任务中确定与所述关联派生任务具有父子任务关系的相邻派生任务;
基于所述关联派生任务的第一任务标识以及所述相邻派生任务的第二任务标识,确定关联任务标识。
4.根据权利要求3所述的方法,所述基于所述关联派生任务的第一任务标识以及所述相邻派生任务的第二任务标识,确定关联任务标识,包括:
确定所述关联派生任务的第一任务标识,基于所述第一任务标识查询所述数据存储结构;
根据查询结果确定所述数据存储结构中不存在所述第一任务标识关联的第一请求路径信息的情况下,将所述第二任务标识作为所述关联任务标识。
5.根据权利要求1所述的方法,所述基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器,包括:
基于所述关联任务标识查询所述数据存储结构,根据查询结果确定所述请求路径信息;
根据所述请求路径信息创建关联请求路径信息;
创建所述关联服务器对应的关联服务请求,将所述关联请求路径信息添加至所述关联服务请求的消息报头,并发送至所述关联服务器;
其中,所述关联服务器与所述目标服务属于分布式系统。
6.根据权利要求1所述的方法,所述将所述键值对存储至所述链路追踪程序的数据存储结构步骤执行之后,还包括:
将所述目标派生任务添加至异步线程池的任务队列,并针对所述目标派生任务在所述异步线程池中选择目标线程;
构建所述目标线程与所述目标派生任务之间的调度关系;
在所述任务队列中的所述目标派生任务处于执行状态的情况下,基于所述调度关系将所述目标派生任务分配至所述目标线程并执行。
7.根据权利要求1-6任一项所述的方法,所述根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器步骤执行之后,还包括:
获取请求分析任务,并根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
根据所述链路追踪信息构建所述分布式链路追踪信息,并执行所述请求分析任务。
8.根据权利要求1-6任一项所述的方法,所述根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识步骤执行之前,还包括:
通过所述链路追踪程序加载基准子程序,并将所述基准子程序挂载至所述关联派生任务对应的关联函数;
在执行所述关联派生任务且调用所述关联函数被调用的情况下,启动所述基准子程序获取所述任务关系。
9.一种任务执行方法,应用于目标服务器,包括:
获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
10.一种请求处理装置,应用于目标服务器,包括:
调用模块,被配置为响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;
存储模块,被配置为根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;
确定模块,被配置为在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;
发送模块,被配置为基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;
其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息。
11.一种任务执行装置,应用于目标服务器,包括:
获取任务模块,被配置为获取请求分析任务,并确定所述请求分析任务关联的至少两个派生任务;
发送请求模块,被配置为根据所述请求分析任务向所述至少两个派生任务分别对应的服务器发送追踪信息获取请求;
接收信息模块,被配置为接收所述至少两个派生任务分别对应的服务器针对所述追踪信息获取请求反馈的链路追踪信息,其中,所述链路追踪信息存储在各个服务器对应的数据存储结构中;
执行任务模块,被配置为根据所述链路追踪信息构建分布式链路追踪信息,并执行所述请求分析任务。
12.一种请求处理系统,包括目标服务器和关联服务器,包括:
所述目标服务器,用于响应于服务请求调用链路追踪程序提取所述服务请求中的请求路径信息,以及确定所述服务请求关联的至少两个派生任务中对应所述目标服务器的目标派生任务;根据所述目标派生任务的目标任务标识以及所述请求路径信息构建键值对,并将所述键值对存储至所述链路追踪程序的数据存储结构;在执行所述至少两个派生任务中对应关联服务器的关联派生任务的情况下,根据所述至少两个派生任务的任务关系确定所述关联派生任务对应的关联任务标识;基于所述关联任务标识查询所述数据存储结构,根据查询结果创建携带关联请求路径信息的关联服务请求,并发送至所述关联服务器;其中,所述数据存储结构中记录的键值对用于构建分布式链路追踪信息;
所述关联服务器,用于响应于所述关联服务请求执行关联请求处理任务。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至9任意一项所述方法的步骤。
14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至9任意一项所述方法的步骤。
15.一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现权利要求1至9任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410112470.0A CN117632445B (zh) | 2024-01-25 | 2024-01-25 | 请求处理方法以及装置、任务执行方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410112470.0A CN117632445B (zh) | 2024-01-25 | 2024-01-25 | 请求处理方法以及装置、任务执行方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117632445A true CN117632445A (zh) | 2024-03-01 |
CN117632445B CN117632445B (zh) | 2024-04-30 |
Family
ID=90032513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410112470.0A Active CN117632445B (zh) | 2024-01-25 | 2024-01-25 | 请求处理方法以及装置、任务执行方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632445B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136438A1 (en) * | 2004-12-20 | 2006-06-22 | Mcchrystal Peter S | Process server array for processing documents and document components and a method related thereto |
US20140229345A1 (en) * | 2013-02-14 | 2014-08-14 | Microsoft Corporation | Application process framework for integrated and extensible accounting system |
CN104040486A (zh) * | 2012-01-09 | 2014-09-10 | 微软公司 | 解耦paas资源、作业和调度 |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN115328734A (zh) * | 2022-08-19 | 2022-11-11 | 阳光人寿保险股份有限公司 | 跨服务的日志处理方法、装置及服务器 |
CN115567607A (zh) * | 2022-08-19 | 2023-01-03 | 北京百度网讯科技有限公司 | 调用链路的处理方法、装置、系统、电子设备及存储介质 |
CN116069608A (zh) * | 2023-01-17 | 2023-05-05 | 昭通亮风台信息科技有限公司 | 一种应用调用链路追踪方法、装置及分布式系统 |
CN116708558A (zh) * | 2022-09-30 | 2023-09-05 | 腾讯云计算(北京)有限责任公司 | 全链路追踪系统代理方法、装置、计算机设备及存储介质 |
US20230333201A1 (en) * | 2020-02-13 | 2023-10-19 | Sai Deepika Regani | Method, apparatus, and system for correlation-based wireless monitoring and localization |
-
2024
- 2024-01-25 CN CN202410112470.0A patent/CN117632445B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136438A1 (en) * | 2004-12-20 | 2006-06-22 | Mcchrystal Peter S | Process server array for processing documents and document components and a method related thereto |
CN104040486A (zh) * | 2012-01-09 | 2014-09-10 | 微软公司 | 解耦paas资源、作业和调度 |
US20140229345A1 (en) * | 2013-02-14 | 2014-08-14 | Microsoft Corporation | Application process framework for integrated and extensible accounting system |
US20230333201A1 (en) * | 2020-02-13 | 2023-10-19 | Sai Deepika Regani | Method, apparatus, and system for correlation-based wireless monitoring and localization |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN115328734A (zh) * | 2022-08-19 | 2022-11-11 | 阳光人寿保险股份有限公司 | 跨服务的日志处理方法、装置及服务器 |
CN115567607A (zh) * | 2022-08-19 | 2023-01-03 | 北京百度网讯科技有限公司 | 调用链路的处理方法、装置、系统、电子设备及存储介质 |
CN116708558A (zh) * | 2022-09-30 | 2023-09-05 | 腾讯云计算(北京)有限责任公司 | 全链路追踪系统代理方法、装置、计算机设备及存储介质 |
CN116069608A (zh) * | 2023-01-17 | 2023-05-05 | 昭通亮风台信息科技有限公司 | 一种应用调用链路追踪方法、装置及分布式系统 |
Non-Patent Citations (3)
Title |
---|
曾令仿;冯丹;周可;王芳;: "网络存储I/O流水机制研究", 小型微型计算机系统, no. 01, 21 January 2006 (2006-01-21) * |
杨勇;李影;吴中海;: "分布式追踪技术综述", 软件学报, no. 07, 15 July 2020 (2020-07-15) * |
汪夏荣;赵海武;王国中;范涛;: "基于DSS的直播系统研究与实现", 电子测量技术, no. 10, 15 October 2017 (2017-10-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117632445B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10560465B2 (en) | Real time anomaly detection for data streams | |
US11159411B2 (en) | Distributed testing service | |
CN111309550A (zh) | 应用程序的数据采集方法、系统、设备和存储介质 | |
CN111125175B (zh) | 业务数据的查询方法和装置、存储介质、电子装置 | |
CN110365724B (zh) | 任务处理方法、装置及电子设备 | |
CN112130996A (zh) | 数据监控控制系统、方法、装置、电子设备和存储介质 | |
CN112448969A (zh) | 链路追踪方法、装置、系统、设备及可读存储介质 | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
CN114489622A (zh) | 静态资源管理方法、Node.js应用、电子设备和存储介质 | |
CN110737425B (zh) | 一种计费平台系统的应用程序的建立方法及装置 | |
CN113407511A (zh) | 日志聚合方法、设备及计算机程序产品 | |
CN115705190A (zh) | 依赖程度的确定方法及装置 | |
CN115145806A (zh) | 一种数据采集方法、装置、以及计算机可读存储介质 | |
CN113645260A (zh) | 业务重试方法、装置、存储介质及电子设备 | |
CN117632445B (zh) | 请求处理方法以及装置、任务执行方法以及装置 | |
US9503351B1 (en) | Deployment feedback for system updates to resources in private networks | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
US11240312B2 (en) | Apparatus and method of providing IoT resource information | |
CN113992664B (zh) | 一种集群通信的方法、相关装置及存储介质 | |
CN112306848B (zh) | 微服务系统的架构视图生成方法及装置 | |
CN115129708A (zh) | 数据处理方法、装置和存储介质及电子设备 | |
CN111782428B (zh) | 数据调用系统以及方法 | |
CN113821750B (zh) | 一种页面数据处理方法、系统、电子设备及可读存储介质 | |
CN115220992A (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 | ||
GR01 | Patent grant |