CN116225880B - 用于链路追踪的方法、装置及系统 - Google Patents
用于链路追踪的方法、装置及系统 Download PDFInfo
- Publication number
- CN116225880B CN116225880B CN202310499305.0A CN202310499305A CN116225880B CN 116225880 B CN116225880 B CN 116225880B CN 202310499305 A CN202310499305 A CN 202310499305A CN 116225880 B CN116225880 B CN 116225880B
- Authority
- CN
- China
- Prior art keywords
- span
- identifier
- information
- state
- tracking
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Structure Of Telephone Exchanges (AREA)
- Radio Relay Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本说明书实施例提供了用于链路追踪的方法、装置及系统。在该方法中,通过调用声明式API的方式响应于对象变更请求,触发声明式API所关联的各个控制器来分别执行对应的对象变更操作;以及将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪。通过本说明书实施例的技术方案,能够实现针对声明式API的调用过程进行链路追踪。
Description
技术领域
本说明书实施例涉及容器技术领域,具体地,涉及用于链路追踪的方法、装置及系统。
背景技术
链路追踪(tracing)用于将一次分布式请求还原成调用链路,进行日志记录,性能监测并将一次分布式请求的调用情况集中展示。链路追踪被广泛应用于分布式系统中。在分布式服务模式下,作为广泛应用的命令式API在被调用时是同步的,从而在链路追踪时能够清晰地形成各个Span,并通过调用关系确定各个Span之间的父子关系。
发明内容
鉴于上述,本说明书实施例提供了用于链路追踪的方法、装置及系统。通过本说明书实施例的技术方案,能够实现针对声明式API的调用过程进行链路追踪。
根据本说明书实施例的一个方面,提供了一种用于链路追踪的方法,包括:通过调用声明式API的方式响应于对象变更请求,触发该声明式API所关联的各个控制器来分别执行对应的对象变更操作,其中,不同的控制器在不同阶段执行不同的对象变更操作,各个对象变更操作按照既定顺序执行以完成对象变更;以及将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪,其中,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
根据本说明书实施例的另一方面,还提供一种用于链路追踪的装置,包括:控制器触发单元,被配置为通过调用声明式API的方式响应于对象变更请求,触发该声明式API所关联的各个控制器来分别执行对应的对象变更操作,其中,不同的控制器在不同阶段执行不同的对象变更操作,各个对象变更操作按照既定顺序执行以完成对象变更;以及信息记录单元,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪,其中,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
根据本说明书实施例的另一方面,还提供一种链路追踪系统,包括:控制器,被配置为在通过调用声明式API的方式响应对象变更请求时,被触发执行对应的对象变更操作,其中,不同的控制器在不同阶段所执行的对象变更操作不同,各个对象变更操作按照既定顺序执行以完成对象变更;追踪信息记录载体,被配置为记录控制器所执行的对象变更操作对应生成的Span信息,其中,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识;在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识;以及收集器,被配置为采集追踪信息记录载体中记录的各个Span信息,根据所采集的各个Span信息进行链路追踪。
根据本说明书实施例的另一方面,还提供一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在存储器上的计算机程序,该至少一个处理器执行所述计算机程序来实现如上述任一所述的用于链路追踪的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书实施例的在声明式API的应用场景中的链路追踪系统的一个示例的示意图。
图2示出了根据本说明书实施例提供的用于链路追踪的方法的一个示例的流程图。
图3示出了根据本说明书实施例的经过重演生成的相互嵌套的Span结构的一个示例的示意图。
图4示出了根据本说明书实施例提供的用于链路追踪的方法的另一个示例的流程图。
图5示出了根据本说明书实施例的链路追踪方法的另一个示例的信令图。
图6示出了根据本说明书实施例的链路追踪装置的一个示例的方框图。
图7示出了本说明书实施例的用于实现链路追踪方法的电子设备的方框图。
具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
链路追踪(tracing)用于将一次分布式请求还原成调用链路,进行日志记录,性能监测并将一次分布式请求的调用情况集中展示。链路追踪被广泛应用于分布式系统中。在分布式服务模式下,作为广泛应用的命令式API(Application Programming Interface,应用程序编程接口)在被调用时是同步的,从而在链路追踪时能够清晰地形成各个Span,并通过调用关系确定各个Span之间的父子关系。需要提供针对声明式API的链路追踪方案。
鉴于上述,本说明书实施例提供了用于链路追踪的方法、装置及系统。在该方法中,通过调用声明式API的方式响应于对象变更请求,触发声明式API所关联的各个控制器来分别执行对应的对象变更操作;以及将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪,其中,不同的控制器在不同阶段所执行的对象变更操作不同,各个对象变更操作按照既定顺序执行以完成对象变更,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。通过本说明书实施例提供的技术方案,能够实现针对声明式API的调用过程进行链路追踪。
下面结合附图对本说明书实施例提供的用于链路追踪的方法、装置及系统进行详细说明。
在一个示例中,本说明书实施例的链路追踪方法及装置可以应用于Kubernetes(简称K8s)的应用场景中。Kubernetes可以提若干可供调用的声明式API。声明式API提供面向终态的描述,并通过关联的多个控制器(Operator)按照终态描述进行调谐(reconcile)操作以完成面向终态的资源或能力的交付。本说明书实施例中的各个控制器所执行的对象变更操作可以是调谐操作。
在本说明书实施例中,调谐操作是以终态描述为目标向其靠近的操作。各个控制器之间异步,且相互之间独立执行操作。在声明式API被调用时,各个独立的控制器通过该声明式API相互配合,以使得最终的结果达到该声明式API所描述的终态。
在本说明书实施例中,调用不同的声明式API,所关联的用于执行调谐操作的多个控制器可以不同,各个控制器在不同的阶段可以执行不同的调谐操作。在一个示例中,各个控制器仅对关注的资源进行调谐操作。对于非关注的资源,控制器可以不对该资源进行操作。
此外,本说明书实施例的链路追踪方法、装置及系统还可以应用于其他提供声明式API的应用场景中。
图1示出了根据本说明书实施例的在声明式API的应用场景中的链路追踪系统100的一个示例的示意图。
如图1所示,链路追踪系统100可以包括多个控制器110、追踪信息记录载体120和收集器130。在一个示例中,控制器110可以包括对象控制器和服务控制器等。不同的控制器可以执行不同的操作,各个控制器之间可以相互配合以执行针对调用声明式API的调谐操作。各个控制器可以是以软件形式存在,还可以是以硬件形式存在。
在本说明书实施例中,追踪信息记录载体可以用于收集链路追踪信息。在一个示例中,追踪信息记录载体可以自定义设置,比如,可以是基于TraceContext的载体。在一种定义方式中,可以通过CRD(Custom Resource Definition,自定义资源描述)来描述一个具体实例,该实例即作为自定义资源(Custom Resource,CR)的追踪信息记录载体。追踪信息记录载体中记录的数据可以被多个控制器来访问。
在本说明书实施例中,收集器130可以用于收集追踪信息记录载体中记录的信息,并可以将所收集的信息进行整合。例如,收集器130可以是Tracing Collector。在一个示例中,收集器130可以是通过OpenTelemetry的方式得到,比如,收集器130可以是OpenTelemetry中的一个组件。
图2示出了根据本说明书实施例提供的用于链路追踪的方法的一个示例200的流程图。
在210,通过调用声明式API的方式响应于对象变更请求,可以触发该声明式API所关联的各个控制器来分别执行对应的对象变更操作。
在本说明书实施例中,对象变更请求是针对对象进行变更的请求,对象变更请求可以由用户在Kubernetes上发起。例如,用户更新Kubernetes上的Pod配置后,可以发起针对该Pod配置变更的对象变更请求。
变更可以是通过变更Pod的上层编排集合来实施的, 这些编排集合可以包括以下中的任一种:Deployment、Statefulset以及CafeDeployment,通过变更该上层编排集合可以实现变更Pod副本数、版本等的目的。
对象变更请求所针对的对象可以包括Pod等,Pod是Kubernetes中的一个可部署单元,每个Pod可以承载一个或多个容器。下面以Pod为例进行说明。Pod的变更可以包括版本变更和Pod中的容器数量变更等。
在本说明书实施例中,响应于对象变更请求,可以通过调用声明式API的方式来执行本说明书实施例提供的链路追踪方法。响应于对象变更请求,调用声明式API,基于声明式API所提供的终态描述,该终态描述即为该对象实现该对象变更请求所请求的变更,触发该声明式API所关联的多个控制器来执行针对该终态描述的对象变更操作。
在一个示例中,响应针对Pod的对象变更请求时所调用的声明式API关联的控制器可以包括对象控制器和服务控制器等。对象控制器和服务控制器分别执行相应的对象变更操作,并相互配合以完成对象变更操作。
在本说明书实施例中,针对对象变更的操作过程可以包括多个阶段,每个阶段可以由一个控制来执行一种对象变更操作,不同的控制器在不同阶段所执行的对象变更操作可以不同。各个对象变更操作可以按照既定顺序执行以构成对象变更操作的全过程。
在一个示例中,响应于对象变更请求的对象变更操作可以包括以下操作中的至少一种:第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作。在一个示例中,对象变更操作全过程所执行的既定顺序的操作依次为:第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作。
在220,可以将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪。
在本说明书实施例中,响应于对象变更请求的对象变更操作所包括的每个操作对应一个阶段。在每个阶段,对应的调和操作执行时,可以生成对应的Span信息。不同的调和操作对应生成的Span信息不同,不同的阶段对应生成的Span信息不同。每个操作所对应的阶段对应属于一个Span,在一个示例中,各个阶段可以是一个完整的Span,还可以是一个Span中的一部分。
在本说明书实施例中,各个Span信息可以包括链路追踪标识(比如,Trace ID)、对应Span的Span标识(比如,Span ID)、对应Span的开始标识和/或结束标识等。每个阶段可以对应生成Span信息,每个阶段属于一个Span,从而各个Span信息中的对应Span是生成该Span信息的阶段所属的Span。当一个阶段是一个完整的Span时,对应生成的Span信息中包括该阶段所属Span的开始标识和结束标识。当一个阶段是一个完整Span中的一部分时,对应生成的Span信息中包括该阶段所属Span的开始标识或结束标识。当两个阶段属于同一个Span时,该两个阶段对应生成的Span信息中包括的Span标识相同。
Span可以表示具有开始时间和执行时长的逻辑单元,各个Span之间可以通过嵌套或者顺序排列建立逻辑因果关系。每个Span对应有Span标识,Span标识与Span一一对应。
当Span具有父Span时,该Span对应的Span信息还可以包括该父Span对应的父Span标识。通过记录父Span标识,能够建立两个Span之间的父子关系。
在一个示例中,在响应于对象变更请求的对象变更操作包括第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作时,每个对象变更操作可以对应生成的Span信息。例如,第一状态更新操作对应生成第一状态更新Span信息,对象摘流操作可以对应生成摘流Span信息,对象更新操作可以对应生成更新Span信息,对象挂流操作可以对应生成挂流Span信息,第二状态更新操作可以对应生成第二状态更新Span信息。
在该示例中,追踪信息记录载体可以依次记录各个对象变更操作可以对应生成的Span信息。
在一种记录方式中,在追踪信息记录载体中,可以按照顺序依次记录各个信息,例如,第一状态更新Span信息、摘流Span信息、更新Span信息、挂流Span信息以及第二状态更新Span信息在追踪信息记录载体中被依次记录,各个信息在追踪信息记录载体中的顺序可以表示该各个信息的记录顺序以及生成顺序。
在另一种记录方式中,在追踪信息记录载体中,所记录的各个信息可以对应有记录时间,通过该记录时间可以追踪信息记录载体中记录的各个信息的记录顺序以及生成顺序。
在一个示例中,每个对象可以设置一个追踪信息记录载体,追踪信息记录载体与对象一一对应,各个追踪信息记录载体可以用于收集对应对象的链路追踪信息。针对一个对象的变更过程,该对象对应的追踪信息记录载体可以记录该变更过程中的链路追踪上下文。在一一对应关系的一种设置方式中,针对各个对象,可以有webhook设置该对象的对象ID,该对象ID与追踪信息记录载体的载体ID有一一映射关系,通过该映射关系可以将对象与追踪信息记录载体一一对应。
在一个示例中,响应于对象变更请求,可以根据自定义资源描述(CRD)为所请求变更的对象创建对应的追踪信息记录载体。该CRD所描述的是该对象所对应的追踪信息记录载体。在另一个示例中,在响应对象变更请求之前,对象对应的追踪信息记录载体已创建完成。
在一个示例中,在对象控制器被触发执行第一状态更新操作的过程中,可以将第一状态更新操作对应的第一状态更新Span信息记录在追踪信息记录载体中。
第一状态更新Span信息可以包括:链路追踪标识、对象变更Span标识以及对象变更Span的第一开始标识。在一个示例中,第一状态更新Span信息还可以包括:对象变更Span的Span名称、对象变更Span的开始时间、第一状态更新操作的开始时间和结束时间、系统标签信息等。
在一个示例中,可以在对象控制器处以埋点的方式采集对象控制器执行第一状态更新操作时所生成的Span信息,比如,第一状态更新操作的开始时间和结束时间、系统标签信息等。
在一个示例中,可以在对象控制器被触发后且在实际执行第一状态更新操作之前,得到第一状态更新Span信息,然后记录该第一状态更新Span信息。
在一个示例中,链路追踪标识和对象变更Span标识可以在对象控制器被触发执行第一状态更新操作时生成。此外,第一开始标识也可以在对象控制器被触发执行第一状态更新操作时生成。在一个示例中,链路追踪标识、对象变更Span标识以及第一开始标识可以在对象控制器被触发后且在实际执行第一状态更新操作之前生成。例如,链路追踪标识、对象变更Span标识以及第一开始标识可以在从对象控制器获取针对第一状态更新操作的Span信息时生成,比如,所获取的针对第一状态更新操作的Span信息包括Span名称等。
在一个示例中,链路追踪标识和对象变更Span标识在生成后,可以直接被记录在追踪信息记录载体中。此外,第一状态更新操作用于将对象的状态变更为不可用状态,第一开始标识可以在对象的状态变更为不可用状态之前被记录。
在一个示例中,追踪信息记录载体对应有一个SDK(Software Development Kit,软件开发工具包),该SDK可以从对象控制器获取针对第一状态更新操作对应的Span信息。此外,该SDK还可以生成链路追踪标识、对象变更Span标识以及第一开始标识。SDK在生成链路追踪标识和对象变更Span标识后可以将其记录在追踪信息记录载体中。SDK还可以将第一开始标识在对象的状态变更为不可用状态之前记录在追踪信息记录载体中。
在一个示例中,在服务控制器被触发执行对象摘流操作的过程中,可以将对象摘流操作对应的摘流Span信息记录在追踪信息记录载体中。
摘流Span信息可以包括:链路追踪标识、摘流Span标识、摘流Span的第二开始标识、摘流Span的第二结束标识以及作为父Span标识的对象变更Span标识。在一个示例中,摘流Span信息还可以包括:摘流Span的Span名称、摘流Span的开始时间、对象摘流操作的开始时间和结束时间等。在摘流Span信息中记录对象变更Span标识,以用于确定对象变更Span与摘流Span之间的父子关系,对象变更Span是摘流Span的父Span。
在一个示例中,可以在服务控制器处以埋点的方式采集服务控制器执行对象摘流操作时所生成的Span信息,比如,对象摘流操作的开始时间和结束时间等。
在一个示例中,在服务控制器被触发执行对象摘流操作时,可以得到摘流Span信息并记录该摘流Span信息。摘流Span信息中的链路追踪标识和作为父Span标识的对象变更Span标识可以从第一状态更新Span信息中获取。
在一个示例中,摘流Span信息中的摘流Span标识可以在服务控制器被触发执行对象摘流操作时生成。此外,第二开始标识也可以在服务控制器被触发执行对象摘流操作时生成,第二结束标识可以在对象的状态更新为已摘流状态时或者之后生成。在一个示例中,摘流Span标识以及第二开始标识可以在服务控制器被触发后且在实际发起摘流动作之前生成。例如,摘流Span标识以及第二开始标识可以在从服务控制器获取针对对象摘流操作的Span信息时生成。
在一个示例中,摘流Span标识在生成后,可以直接被记录在追踪信息记录载体中。此外,第二开始标识可以在服务控制器被触发发起对象摘流操作时被记录,第二结束标识可以在对象的状态更新为已摘流状态时被记录。
在一个示例中,追踪信息记录载体对应的SDK可以从服务控制器获取针对对象摘流操作对应的Span信息。此外,该SDK还可以生成摘流Span标识、第二开始标识和第二结束标识。SDK在生成摘流Span标识后可以将其直接记录在追踪信息记录载体中。SDK还可以将第二开始标识在服务控制器被触发发起对象摘流操作时记录在追踪信息记录载体中,将第二结束标识在对象的状态更新为已摘流状态时记录在追踪信息记录载体中。
在一个示例中,在对象控制器被触发执行对象更新操作的过程中,可以将对象更新操作对应的更新Span信息记录在追踪信息记录载体中。
更新Span信息可以包括:链路追踪标识、更新Span标识、更新Span的第三开始标识、更新Span的第三结束标识以及作为父Span标识的对象变更Span标识。在一个示例中,更新Span信息还可以包括:更新Span的Span名称、更新Span的开始时间、对象更新操作的开始时间和结束时间等中的至少一种信息。在更新Span信息中记录对象变更Span标识,以用于确定对象变更Span与更新Span之间的父子关系,对象变更Span是更新Span的父Span。
在一个示例中,可以在对象控制器处以埋点的方式采集对象控制器执行对象更新操作时所生成的Span信息,比如,对象更新操作的开始时间和结束时间等。
在一个示例中,在对象控制器被触发执行对象更新操作时,可以得到更新Span信息并记录该更新Span信息。更新Span信息中的链路追踪标识和作为父Span标识的对象变更Span标识可以从第一状态更新Span信息中获取。
在一个示例中,更新Span信息中的更新Span标识可以在对象控制器被触发执行对象更新操作时生成。此外,第三开始标识也可以在对象控制器被触发执行对象更新操作时生成,第三结束标识可以在对象的状态更新为已更新状态时或者之后生成。在一个示例中,更新Span标识以及第三开始标识可以在对象控制器被触发后且在实际发起更新动作之前生成。例如,更新Span标识以及第三开始标识可以在从对象控制器获取针对对象更新操作的Span信息时生成。
在一个示例中,更新Span标识在生成后,可以直接被记录在追踪信息记录载体中。此外,第三开始标识可以在对象控制器被触发发起对象更新操作时被记录,第三结束标识可以在对象的状态更新为已更新状态时被记录。
在一个示例中,追踪信息记录载体对应的SDK可以从对象控制器获取针对对象更新操作对应的Span信息。此外,该SDK还可以生成更新Span标识、第三开始标识和第三结束标识。SDK在生成更新Span标识后可以将其直接记录在追踪信息记录载体中。SDK还可以将第三开始标识在对象控制器被触发发起对象更新操作时记录在追踪信息记录载体中,将第三结束标识在对象的状态更新为已更新状态时记录在追踪信息记录载体中。
在一个示例中,在服务控制器被触发执行对象挂流操作的过程中,可以将对象挂流操作对应的挂流Span信息记录在追踪信息记录载体中。
挂流Span信息可以包括:链路追踪标识、挂流Span标识、挂流Span的第四开始标识、挂流Span的第四结束标识以及作为父Span标识的对象变更Span标识。在一个示例中,挂流Span信息还可以包括:挂流Span的Span名称、挂流Span的开始时间、对象挂流操作的开始时间和结束时间等。在挂流Span信息中记录对象变更Span标识,以用于确定对象变更Span与挂流Span之间的父子关系,对象变更Span是挂流Span的父Span。
在一个示例中,可以在服务控制器处以埋点的方式采集服务控制器执行对象挂流操作时所生成的Span信息,比如,对象挂流操作的开始时间和结束时间等。
在一个示例中,在服务控制器被触发执行对象挂流操作时,可以得到挂流Span信息并记录该挂流Span信息。挂流Span信息中的链路追踪标识和作为父Span标识的对象变更Span标识可以从第一状态更新Span信息中获取。
在一个示例中,挂流Span信息中的挂流Span标识可以在服务控制器被触发执行对象挂流操作时生成。此外,第四开始标识也可以在服务控制器被触发执行对象挂流操作时生成,第四结束标识可以在对象的状态更新为已挂流状态时或者之后生成。在一个示例中,挂流Span标识以及第四开始标识可以在服务控制器被触发后且在实际发起挂流动作之前生成。例如,挂流Span标识以及第四开始标识可以在从服务控制器获取针对对象挂流操作的Span信息时生成。
在一个示例中,挂流Span标识在生成后,可以直接被记录在追踪信息记录载体中。此外,第四开始标识可以在服务控制器被触发发起对象挂流操作时被记录,第四结束标识可以在对象的状态更新为已挂流状态时被记录。
在一个示例中,追踪信息记录载体对应的SDK可以从服务控制器获取针对对象挂流操作对应的Span信息。此外,该SDK还可以生成挂流Span标识、第四开始标识和第四结束标识。SDK在生成挂流Span标识后可以将其直接记录在追踪信息记录载体中。SDK还可以将第四开始标识在服务控制器被触发发起对象挂流操作时记录在追踪信息记录载体中,将第四结束标识在对象的状态更新为已挂流状态时记录在追踪信息记录载体中。
在一个示例中,在对象控制器被触发执行第二状态更新操作的过程中,可以将第二状态更新操作对应的第二状态更新Span信息记录在追踪信息记录载体中。
第二状态更新Span信息可以包括:链路追踪标识、对象变更Span标识以及对象变更Span的第一结束标识。在一个示例中,第二状态更新Span信息还可以包括:第二状态更新Span的Span名称、第二状态更新Span的开始时间、第二状态更新操作的开始时间和结束时间等。对象变更Span的第一开始标识和第一结束标识用于确定对象变更Span的跨度范围。
在一个示例中,可以在对象控制器处以埋点的方式采集对象控制器执行第二状态更新操作时所生成的Span信息,比如,第二状态更新操作的开始时间和结束时间等。
在一个示例中,可以在对象控制器被触发后且在实际执行第二状态更新操作之前,得到第二状态更新Span信息,然后记录该第二状态更新Span信息。第二状态更新Span信息中的链路追踪标识和对象变更Span标识可以从第一状态更新Span信息中获取。
在一个示例中,第一结束标识可以在对象的状态变更为可用状态时生成并被记录。在一个示例中,第一结束标识可以在对象的状态变更为可用状态之前、之后或者同时被记录。
在一个示例中,追踪信息记录载体对应有一个SDK,该SDK可以从对象控制器获取针对第二状态更新操作对应的Span信息。此外,该SDK还可以生成第一结束标识。SDK可以将第一结束标识在对象的状态变更为可用状态时记录在追踪信息记录载体中。
在本说明书实施例的一个示例中,在Span信息记录在追踪信息记录载体中之后,可以根据追踪信息记录载体中记录的各个Span信息进行链路追踪。
在本说明书实施例中,各个Span信息中包括的对应Span的开始标识和/或结束标识可以确定各个Span的跨度范围,即各个Span的开始时间和结束时间。在各个Span信息中,Span标识以及父Span标识可以用来确定各个Span之间的父子关系。各个Span信息包括的链路追踪标识相同,以用来确定各个Span信息均来自于针对同一个对象变更请求的操作过程,可以用于针对该同一个对象变更请求的链路追踪。
在一个示例中,追踪信息记录载体中记录的Span信息可以包括第一状态更新Span信息、摘流Span信息、更新Span信息、挂流Span信息以及第二状态更新Span信息,从而可以根据所记录的第一状态更新Span信息、摘流Span信息、更新Span信息、挂流Span信息以及第二状态更新Span信息进行重演,以生成追踪路径。
在一种信息收集方式中,可以将追踪信息记录载体中记录的各个Span信息通过OpenTelemetry的收集器上报给Tracing处理中枢,从而完成追踪信息的收集。OpenTelemetry能够提供适配TraceContext的存储介质的接口。
在一种重演方式中,可以根据各个Span信息模拟经典API的同步方式,将这些Span重新开始和结束,将整个执行过程模拟重演一遍,并交付给OpenTelemetry的收集器。
在该示例中,所生成的追踪路径可以以相互嵌套的Span结构来呈现。图3示出了根据本说明书实施例的经过重演生成的相互嵌套的Span结构的一个示例的示意图。如图3所示,对象变更请求所针对的对象是Pod,对象控制器开始执行对象变更操作以开启一个对象变更Span,该对象变更Span表示对象变更操作的全过程的全生命周期,该对象变更Span的结束也是由该对象控制器完成。在该对象变更Span的过程中,服务控制器执行一次对象摘流操作,对应一个摘流Span,该摘流Span与对象控制器所开启的对象变更Span之间是父子关系。此外,在摘流Span的过程中,流控中枢被调用来执行摘流的动作,对应一个摘流动作Span,该摘流动作Span与服务控制器开启的摘流Span之间是父子关系。
在本说明书实施例的一个示例中,在对象变更操作包括:第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作的情况下,第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作按序执行以完成对象变更。基于各个对象变更操作按序执行,本说明书实施例的链路追踪方法可以按照图4所示的示例来执行。
图4示出了根据本说明书实施例提供的用于链路追踪的方法的另一个示例400的流程图。
如图4所示,在410,通过调用声明式API的方式响应于对象变更请求,可以触发对象控制器执行针对对象的第一状态更新操作。
在本说明书实施例中,对象控制器可以对请求变更的对象执行第一状态更新操作,第一状态更新操作用于将对象的状态更新为不可用状态,处于不可用状态的对象不可用。
在一个示例中,通过调用声明式API的方式响应于对象变更请求,可以生成第一对象事件。第一对象事件可以包括用于触发对象控制器的第一标签,从而可以利用第一标签可以触发对象控制器。在标签的一种形式中,第一标签可以包括需要对象控制器来执行第一状态更新操作的描述。在另一种形式中,各个控制器被设置为关注部分资源,从而各个控制器可以仅对关注的资源进行操作。在该形式中,第一标签中可以包括对象控制器执行第一状态更新操作的资源描述,从而该资源描述可以触发对象控制器。
在生成第一对象事件后,可以将该第一对象事件分发至各个控制器。在一个示例中,可以将第一对象事件分发至所调用的声明式API所关联的各个控制器。例如,所调用的声明式API用于响应对象变更请求,该声明式API所关联的控制器包括对象控制器和服务控制器,从而可以将第一对象事件分发给对象控制器和服务控制器。
可以根据第一标签触发对象控制器执行第一状态更新操作,以将对象的状态变更为不可用状态。在一个示例中,第一标签只能触发对象控制器,接收到第一对象事件的其他控制器不会被触发,比如,服务控制器不会被第一对象事件触发。
在420,可以将第一状态更新操作对应的第一状态更新Span信息记录在追踪信息记录载体中。
图5示出了根据本说明书实施例的链路追踪方法的另一个示例的信令图。
如图5所示,链路追踪方法可以应用于Kubernetes,对象变更请求可以由用户发起,由Kubernetes接收并响应该对象变更请求。为了响应该对象变更请求,可以调用声明式API,该声明式API所关联的控制器可以包括对象控制器和服务控制器。
响应于该对象变更请求所生成的第一对象事件可以被分发给对象控制器和服务控制器,其中,对象控制器可以被第一对象事件中的第一标签触发而执行第一状态更新操作,而服务控制器则不会被第一标签触发,从而不执行第一状态更新操作。
在对象控制器被触发时,可以将第一状态更新Span信息记录在追踪信息记录载体中。对象控制器还可以执行第一状态更新操作,以将对象的状态变更为不可用状态。
在一个示例中,上述410和420的操作可以作为一个阶段的操作,该阶段的操作由对象控制器来执行。
回到图4,在430,可以触发服务控制器执行对象摘流操作。
在本说明书实施例中,430的触发方式可以响应于第一状态更新操作完成。在第一状态更新操作完成后,可以触发服务控制器执行对象摘流操作。
在一种触发方式中,响应于第一状态更新操作完成,可以生成第二对象事件。该第二对象事件可以包括用于触发服务控制器的第二标签。在标签的一种形式中,第二标签可以包括需要服务控制器来执行对象摘流操作的描述。在另一种形式中,各个控制器被设置为关注部分资源,从而各个控制器可以仅对关注的资源进行操作。在该形式中,第二标签中可以包括服务控制器执行对象摘流操作的资源描述,从而该资源描述可以触发服务控制器。
在生成第二对象事件后,可以将该第二对象事件分发至各个控制器。在一个示例中,可以将第二对象事件分发至所调用的声明式API所关联的各个控制器。比如,对象控制器和服务控制器。
可以根据第二标签触发服务控制器执行对象摘流操作,以将所请求的对象进行摘流。摘流操作是将对象的流量摘除,以使得该对象不再具有流量。例如,Pod摘流是将Pod的流量摘除。
在一个示例中,根据第二标签触发服务控制器发起对象摘流操作,服务控制器可以调用流控中枢对对象进行摘流。流控中枢可以用于对各个对象的流量进行控制,比如,摘流和挂流。在本公开中,流控中枢可以是流量控制中枢的简称。
在该示例中,流控中枢在被调用执行摘流动作时,可以先创建摘流工单,摘流工单可以记录摘流的相关信息,例如,摘流时间、摘流动作对应的摘流动作Span以及该摘流动作Span对应的摘流动作Span信息,比如,摘流动作Span的Span标识、Span名称、Span开始时间和结束时间等中的至少一种。
此外,摘流动作Span信息还可以包括作为父标识的摘流Span标识,该摘流Span标识所表征的摘流Span是摘流动作Span的父Span。由此可以根据摘流动作Span信息中包括的摘流Span标识来确定摘流Span与摘流动作Span之间的父子关系。
流控中枢可以基于摘流工单针对所请求的对象进行摘流处理。流控中枢可以提供命令式API,从而可以调用命令式API里执行摘流处理。在一个示例中,流控中枢所生成的摘流动作Span信息可以直接上报给收集器,还可以由追踪信息记录载体来记录,然后由追踪信息记录载体将所记录的信息统一上报给收集器。
流控中枢在对所请求的对象摘流成功后,对应的摘流工单即完成。在流控中枢进行摘流处理的过程中,服务控制器可以轮询流控中枢的摘流操作结果,每次轮询可以得到一个摘流操作结果。如果摘流操作结果为摘流未完成时,可以继续轮询,直至所得到的摘流操作结果为摘流成功。
服务控制器在确定摘流成功后,可以将所请求的对象的状态更新为已摘流状态。
在440,可以将对象摘流操作对应的摘流Span信息记录在追踪信息记录载体中。
以图5为例,响应于不可用状态更新,所生成的第二对象事件可以被分发给对象控制器和服务控制器,其中,服务控制器可以被第二对象事件中的第二标签触发而执行对象摘流操作,而对象控制器则不会被第二标签触发,从而可以不执行对象摘流操作。
在服务控制器被触发时,可以将摘流Span信息中的链路追踪标识、摘流Span标识、摘流Span的第二开始标识等记录在追踪信息记录载体中,此外,还可以记录摘流Span的Span名称、摘流Span的开始时间以及对象摘流操作的开始时间等。
然后,服务控制器可以发起对象摘流动作,服务控制器调用流控中枢对对象进行摘流,在流控中枢进行摘流的过程中,服务控制器可以轮询流控中枢的摘流操作结果,直至摘流成功;再将对象的状态更新为已摘流状态。然后,可以将摘流Span的第二结束标识作为摘流Span信息记录在追踪信息记录载体中,此外,还可以记录对象摘流操作的结束时间等。
在一个示例中,上述430和440的操作可以作为一个阶段的操作,该阶段的操作由服务控制器来执行。
回到图4,在450,可以触发对象控制器执行对象更新操作。
在本说明书实施例中,450的触发方式可以是响应于对象摘流操作完成。在对象摘流完成后,可以触发对象控制器执行对象更新操作。在一个示例中,450的触发方式可以是响应于所请求的对象为已摘流状态。
在一种触发方式中,响应于对象摘流操作完成,可以生成第三对象事件。该第三对象事件可以包括用于触发对象控制器的第三标签。在标签的一种形式中,第三标签可以包括需要对象控制器来执行对象更新操作的描述。在另一种形式中,各个控制器被设置为关注部分资源,从而各个控制器可以仅对关注的资源进行操作。在该形式中,第三标签中可以包括对象控制器执行对象更新操作的资源描述,从而该资源描述可以触发对象控制器。
在生成第三对象事件后,可以将第三对象事件分发至各个控制器。在一个示例中,可以将第三对象事件分发至所调用的声明式API所关联的各个控制器。比如,对象控制器和服务控制器。然后,可以根据第三标签触发对象控制器执行对象更新操作,以将对象按照所请求的内容进行更新。
在一个示例中,根据第三标签触发对象控制器按照对象变更请求对对象进行相应变更。例如,当对象是Pod时,针对Pod的变更可以包括Pod的版本变更以及Pod中的容器数量变更等。对象变更请求是请求对Pod的版本进行更新,则第三标签触发对象控制器执行对象更新操作时对该Pod的版本进行更新。
在对象变更成功后,可以将对象的状态更新为已更新状态,已更新状态可以用于表征对象更新操作已完成。
在460,可以将对象更新操作对应的更新Span信息记录在追踪信息记录载体中。
以图5为例,响应于已摘流状态更新,所生成的第三对象事件可以被分发给对象控制器和服务控制器,其中,对象控制器可以被第三对象事件中的第三标签触发而执行对象更新操作,而服务控制器则不会被第三标签触发,从而可以不执行对象更新操作。
在对象控制器被触发时,可以将更新Span信息中的链路追踪标识、更新Span标识、更新Span的第三开始标识等记录在追踪信息记录载体中,此外,还可以记录更新Span的Span名称、更新Span的开始时间以及对象更新操作的开始时间等。
然后,对象控制器可以按照对象变更请求对该对象进行相应变更操作,再将对象的状态更新为已更新状态。然后,可以将更新Span的第三结束标识作为更新Span信息记录在追踪信息记录载体中,此外,还可以将更新Span信息中的对象更新操作的结束时间进行记录。
在一个示例中,上述450和460的操作可以作为一个阶段的操作,该阶段的操作由对象控制器来执行。
回到图4,在470,可以触发服务控制器执行对象挂流操作。
在本说明书实施例中,470的触发方式可以响应于对象更新操作完成。在对象更新完成后,可以触发服务控制器执行对象挂流操作。在一个示例中,470的触发方式可以是响应于所请求的对象为已更新状态。
在一种触发方式中,响应于对象更新操作完成,可以生成第四对象事件。该第四对象事件可以包括用于触发服务控制器的第四标签。在标签的一种形式中,第四标签可以包括需要服务控制器来执行对象挂流操作的描述。在另一种形式中,各个控制器被设置为关注部分资源,从而各个控制器可以仅对关注的资源进行操作。在该形式中,第四标签中可以包括服务控制器执行对象挂流操作的资源描述,从而该资源描述可以触发服务控制器。
在生成第四对象事件后,可以将该第四对象事件分发至各个控制器。在一个示例中,可以将第四对象事件分发至所调用的声明式API所关联的各个控制器。比如,对象控制器和服务控制器。
可以根据第四标签触发服务控制器执行对象挂流操作,以将所请求的对象进行挂流。挂流操作是为对象开通流量,以使得该对象具有流量。例如,Pod挂流是为Pod开通流量。
在一个示例中,根据第四标签触发服务控制器发起对象挂流操作,服务控制器可以调用流控中枢对对象进行挂流。
流控中枢在被调用执行挂流动作时,可以先创建挂流工单,挂流工单可以记录挂流的相关信息,例如,挂流时间、挂流动作对应的挂流动作Span以及该挂流动作Span对应的Span信息,比如,挂流动作Span的Span标识、Span名称、Span开始时间和结束时间等中的至少一种。
此外,挂流动作Span信息还可以包括作为父标识的挂流Span标识,该挂流Span标识所表征的挂流Span是挂流动作Span的父Span。由此可以根据挂流动作Span信息中包括的挂流Span标识来确定挂流Span与挂流动作Span之间的父子关系。
流控中枢可以基于挂流工单针对所请求的对象进行挂流处理。流控中枢可以提供命令式API,从而可以调用命令式API里执行挂流处理。在一个示例中,流控中枢所生成的挂流动作Span信息可以直接上报给收集器,还可以由追踪信息记录载体来记录,然后由追踪信息记录载体将所记录的信息统一上报给收集器。
流控中枢在对所请求的对象挂流成功后,对应的挂流工单即完成。在流控中枢进行挂流处理的过程中,服务控制器可以轮询流控中枢的挂流操作结果,每次轮询可以得到一个挂流操作结果。如果挂流操作结果为挂流未完成时,可以继续轮询,直至所得到的挂流操作结果为摘流成功。
服务控制器在确定挂流成功后,可以将所请求的对象的状态更新为已挂流状态。
在480,可以将对象挂流操作对应的挂流Span信息记录在追踪信息记录载体中。
以图5为例,响应于对象处于已更新状态,所生成的第四对象事件可以被分发给对象控制器和服务控制器,其中,服务控制器可以被第四对象事件中的第四标签触发而执行对象挂流操作,而对象控制器则不会被第四标签触发,从而可以不执行对象挂流操作。
在服务控制器被触发时,可以将挂流Span信息中的链路追踪标识、挂流Span标识、挂流Span的第四开始标识等记录在追踪信息记录载体中,此外,还可以记录挂流Span的Span名称、挂流Span的开始时间以及对象挂流操作的开始时间等。
然后,服务控制器可以发起对象挂流动作,服务控制器调用流控中枢对对象进行挂流,在流控中枢进行挂流的过程中,服务控制器可以轮询流控中枢的挂流操作结果,直至挂流成功;再将对象的状态更新为已挂流状态。然后,可以将挂流Span的第四结束标识作为挂流Span信息记录在追踪信息记录载体中,此外,还可以将对象挂流操作的结束时间作为挂流Span信息进行记录。
在一个示例中,上述470和480的操作可以作为一个阶段的操作,该阶段的操作由对象控制器来执行。
回到图4,在490,可以触发对象控制器执行第二状态更新操作。
在本说明书实施例中,490的触发方式可以响应于对象挂流操作完成。在对象挂流操作完成后,可以触发对象控制器执行第二状态更新操作。在一个示例中,490的触发方式可以是响应于所请求的对象为已挂流状态。
在一种触发方式中,响应于对象挂流操作完成,可以生成第五对象事件。该第五对象事件可以包括用于触发对象控制器的第五标签。在标签的一种形式中,第五标签可以包括需要对象控制器来执行第二状态更新操作的描述。在另一种形式中,各个控制器被设置为关注部分资源,从而各个控制器可以仅对关注的资源进行操作。在该形式中,第五标签中可以包括对象控制器执行第二状态更新操作的资源描述,从而该资源描述可以触发对象控制器。
在生成第五对象事件后,可以将该第五对象事件分发至各个控制器。在一个示例中,可以将第五对象事件分发至所调用的声明式API所关联的各个控制器。比如,对象控制器和服务控制器。
可以根据第五标签触发对象控制器执行第二状态更新操作,以将对象的状态变更为可用状态。
在500,可以将第二状态更新操作对应的第二状态更新Span信息记录在追踪信息记录载体中。
以图5为例,响应于可用状态更新,所生成的第五对象事件可以被分发给对象控制器和服务控制器,其中,对象控制器可以被第五对象事件中的第五标签触发而执行第二状态更新操作,而服务控制器则不会被第五标签触发,从而可以不执行第二状态更新操作。
在对象控制器被触发时,可以将第二状态更新Span信息中的链路追踪标识、对象变更Span标识以及对象变更Span的第一结束标识等记录在追踪信息记录载体中,此外,还可以将第二状态更新Span的Span名称、第二状态更新Span的开始时间、第二状态更新操作的开始时间和结束时间等作为第二状态更新Span信息进行记录。对象控制器还可以执行第二状态更新操作,以将对象的状态变更为可用状态。
在一个示例中,上述490和500的操作可以作为一个阶段的操作,该阶段的操作由对象控制器来执行。
通过本说明书实施例提供的上述链路追踪方案,能够实现针对声明式API的调用过程进行链路追踪。
图6示出了根据本说明书实施例的链路追踪装置600的一个示例的方框图。
如图6所示,链路追踪装置600包括:控制器触发单元610和信息记录单元620。
控制器触发单元610,可以被配置为通过调用声明式API的方式响应于对象变更请求,触发声明式API所关联的各个控制器来分别执行对应的对象变更操作。不同的控制器在不同阶段执行不同的对象变更操作,各个对象变更操作按照既定顺序执行以完成对象变更。
信息记录单元620,可以被配置为将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪。各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
在一个示例中,链路追踪装置600还可以包括链路追踪单元,该链路追踪单元可以被配置为根据追踪信息记录载体中记录的各个Span信息进行链路追踪。
在一个示例中,信息记录单元620还可以被配置为:在对象控制器被触发执行第一状态更新操作的过程中,将第一状态更新操作对应的第一状态更新Span信息记录在追踪信息记录载体中,其中,第一状态更新Span信息包括链路追踪标识、对象变更Span标识以及对象变更Span的第一开始标识。
在一个示例中,信息记录单元620还可以被配置为:在服务控制器被触发执行对象摘流操作的过程中,将对象摘流操作对应的摘流Span信息记录在追踪信息记录载体中,其中,摘流Span信息包括链路追踪标识、摘流Span标识、摘流Span的第二开始标识、摘流Span的第二结束标识以及作为父Span标识的对象变更Span标识。
在一个示例中,信息记录单元620还可以被配置为:在对象控制器被触发执行对象更新操作的过程中,将对象更新操作对应的更新Span信息记录在追踪信息记录载体中,其中,更新Span信息包括链路追踪标识、更新Span标识、更新Span的第三开始标识、更新Span的第三结束标识以及作为父Span标识的对象变更Span标识。
在一个示例中,信息记录单元620还可以被配置为:在服务控制器被触发执行对象挂流操作的过程中,将对象挂流操作对应的挂流Span信息记录在追踪信息记录载体中,其中,挂流Span信息包括链路追踪标识、挂流Span标识、挂流Span的第四开始标识、挂流Span的第四结束标识以及作为父Span标识的对象变更Span标识。
在一个示例中,信息记录单元620还可以被配置为:在对象控制器被触发执行第二状态更新操作的过程中,将第二状态更新操作对应的第二状态更新Span信息记录在追踪信息记录载体中,其中,第二状态更新Span信息包括链路追踪标识、对象变更Span标识以及对象变更Span的第一结束标识。
本说明书实施例还提供一种链路追踪系统,该链路追踪系统可以参照图1所示的链路追踪系统100。本说明书实施例提供的链路追踪系统包括:控制器、追踪信息记录载体和收集器。
控制器,可以被配置为在通过调用声明式API的方式响应对象变更请求时,被触发执行对应的对象变更操作,其中,不同的控制器在不同阶段所执行的对象变更操作不同,各个对象变更操作按照既定顺序执行以完成对象变更,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识;在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
追踪信息记录载体,可以被配置为记录控制器所执行的对象变更操作对应生成的Span信息。
收集器,可以被配置为采集追踪信息记录载体中记录的各个Span信息,根据所采集的各个Span信息进行链路追踪。
以上参照图1到图6,对根据本说明书实施例的用于链路追踪的方法、装置及系统的实施例进行了描述。
本说明书实施例的用于链路追踪的装置及系统可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于链路追踪的装置及系统例如可以利用电子设备实现。
图7示出了本说明书实施例的用于实现链路追踪方法的电子设备700的方框图。
如图7所示,电子设备700可以包括至少一个处理器710、存储器(例如,非易失性存储器)720、内存730和通信接口740,并且至少一个处理器710、存储器720、内存730和通信接口740经由总线750连接在一起。至少一个处理器710执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器710:通过调用声明式API的方式响应于对象变更请求,触发声明式API所关联的各个控制器来分别执行对应的对象变更操作;以及将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于追踪信息记录载体中记录的各个Span信息进行链路追踪。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器710进行本说明书的各个实施例中以上结合图1-6描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-6描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET以及Python等,常规程序化编程语言如C语言、Visual Basic 2003、Perl、COBOL 2002、PHP以及ABAP,动态编程语言如Python、Ruby和Groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(SaaS)。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (22)
1.一种用于链路追踪的方法,包括:
通过调用声明式API的方式响应于对象变更请求,触发所述声明式API所关联的各个控制器来分别执行对应的对象变更操作,其中,不同的控制器在不同阶段执行不同的对象变更操作,各个对象变更操作按照既定顺序执行以完成对象变更,所述声明式API提供面向终态的描述,并通过关联的多个控制器按照终态描述进行对象变更操作以完成面向终态的资源或能力的交付,所述声明式API所调用的各个控制器之间异步且相互独立;以及
将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于所述追踪信息记录载体中记录的所述各个Span信息进行链路追踪,其中,每个对象对应设置有追踪信息记录载体,每个对象对应的追踪信息记录载体用于记录针对该对象的变更过程中的链路追踪上下文,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
2.如权利要求1所述的方法,其中,所述对象变更操作包括以下操作中的至少一种:第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作。
3.如权利要求2所述的方法,其中,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中包括:
在对象控制器被触发执行所述第一状态更新操作的过程中,将所述第一状态更新操作对应的第一状态更新Span信息记录在所述追踪信息记录载体中,其中,所述第一状态更新Span信息包括所述链路追踪标识、对象变更Span标识以及对象变更Span的第一开始标识。
4.如权利要求3所述的方法,其中,所述链路追踪标识和所述对象变更Span标识在对象控制器被触发执行所述第一状态更新操作时生成,所述第一开始标识在所述对象的状态变更为不可用状态之前被记录。
5.如权利要求2所述的方法,其中,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中包括:
在服务控制器被触发执行所述对象摘流操作的过程中,将所述对象摘流操作对应的摘流Span信息记录在所述追踪信息记录载体中,其中,所述摘流Span信息包括所述链路追踪标识、摘流Span标识、摘流Span的第二开始标识、所述摘流Span的第二结束标识以及作为父Span标识的所述对象变更Span标识。
6.如权利要求5所述的方法,其中,所述摘流Span标识所述在服务控制器被触发执行所述对象摘流操作时生成,所述第二开始标识在所述服务控制器被触发发起所述对象摘流操作时被记录,所述第二结束标识在所述对象的状态更新为已摘流状态时被记录。
7.如权利要求2所述的方法,其中,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中包括:
在对象控制器被触发执行所述对象更新操作的过程中,将所述对象更新操作对应的更新Span信息记录在所述追踪信息记录载体中,其中,所述更新Span信息包括所述链路追踪标识、更新Span标识、更新Span的第三开始标识、所述更新Span的第三结束标识以及作为父Span标识的所述对象变更Span标识。
8.如权利要求7所述的方法,其中,所述更新Span标识在对象控制器被触发执行所述对象更新操作时生成,所述第三开始标识在所述对象控制器被触发执行所述对象更新操作时被记录,所述第三结束标识在所述对象的状态更新为已更新状态时被记录。
9.如权利要求2所述的方法,其中,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中包括:
在服务控制器被触发执行所述对象挂流操作的过程中,将所述对象挂流操作对应的挂流Span信息记录在所述追踪信息记录载体中,其中,所述挂流Span信息包括所述链路追踪标识、挂流Span标识、挂流Span的第四开始标识、所述挂流Span的第四结束标识以及作为父Span标识的所述对象变更Span标识。
10.如权利要求9所述的方法,其中,所述挂流Span标识在服务控制器被触发执行所述对象挂流操作时生成,所述第四开始标识在所述服务控制器被触发发起所述对象挂流操作时被记录,所述第四结束标识在所述对象的状态更新为已挂流状态时被记录。
11.如权利要求2所述的方法,其中,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中包括:
在对象控制器被触发执行所述第二状态更新操作的过程中,将所述第二状态更新操作对应的第二状态更新Span信息记录在所述追踪信息记录载体中,其中,所述第二状态更新Span信息包括所述链路追踪标识、所述对象变更Span标识以及所述对象变更Span的第一结束标识。
12.如权利要求11所述的方法,其中,所述第一结束标识在所述对象的状态变更为可用状态时被记录。
13.如权利要求2所述的方法,还包括:
基于所述追踪信息记录载体中记录的第一状态更新Span信息、摘流Span信息、更新Span信息、挂流Span信息以及第二状态更新Span信息进行重演,以生成追踪路径。
14.一种用于链路追踪的装置,包括:
控制器触发单元,被配置为通过调用声明式API的方式响应于对象变更请求,触发所述声明式API所关联的各个控制器来分别执行对应的对象变更操作,其中,不同的控制器在不同阶段执行不同的对象变更操作,各个对象变更操作按照既定顺序执行以完成对象变更,所述声明式API提供面向终态的描述,并通过关联的多个控制器按照终态描述进行对象变更操作以完成面向终态的资源或能力的交付,所述声明式API所调用的各个控制器之间异步且相互独立;以及
信息记录单元,将各个对象变更操作对应生成的Span信息记录在请求变更的对象对应的追踪信息记录载体中,以基于所述追踪信息记录载体中记录的所述各个Span信息进行链路追踪,其中,每个对象对应设置有追踪信息记录载体,每个对象对应的追踪信息记录载体用于记录针对该对象的变更过程中的链路追踪上下文,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识,在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识。
15.如权利要求14所述的装置,其中,所述对象变更操作包括以下操作中的至少一种:第一状态更新操作、对象摘流操作、对象更新操作、对象挂流操作以及第二状态更新操作。
16.如权利要求15所述的装置,其中,所述信息记录单元还被配置为:
在对象控制器被触发执行所述第一状态更新操作的过程中,将所述第一状态更新操作对应的第一状态更新Span信息记录在所述追踪信息记录载体中,其中,所述第一状态更新Span信息包括所述链路追踪标识、对象变更Span标识以及对象变更Span的第一开始标识。
17.如权利要求15所述的装置,其中,所述信息记录单元还被配置为:
在服务控制器被触发执行所述对象摘流操作的过程中,将所述对象摘流操作对应的摘流Span信息记录在所述追踪信息记录载体中,其中,所述摘流Span信息包括所述链路追踪标识、摘流Span标识、摘流Span的第二开始标识、所述摘流Span的第二结束标识以及作为父Span标识的所述对象变更Span标识。
18.如权利要求15所述的装置,其中,所述信息记录单元还被配置为:
在对象控制器被触发执行所述对象更新操作的过程中,将所述对象更新操作对应的更新Span信息记录在所述追踪信息记录载体中,其中,所述更新Span信息包括所述链路追踪标识、更新Span标识、更新Span的第三开始标识、所述更新Span的第三结束标识以及作为父Span标识的所述对象变更Span标识。
19.如权利要求15所述的装置,其中,所述信息记录单元还被配置为:
在服务控制器被触发执行所述对象挂流操作的过程中,将所述对象挂流操作对应的挂流Span信息记录在所述追踪信息记录载体中,其中,所述挂流Span信息包括所述链路追踪标识、挂流Span标识、挂流Span的第四开始标识、所述挂流Span的第四结束标识以及作为父Span标识的所述对象变更Span标识。
20.如权利要求15所述的装置,其中,所述信息记录单元还被配置为:
在对象控制器被触发执行所述第二状态更新操作的过程中,将所述第二状态更新操作对应的第二状态更新Span信息记录在所述追踪信息记录载体中,其中,所述第二状态更新Span信息包括所述链路追踪标识、所述对象变更Span标识以及所述对象变更Span的第一结束标识。
21.一种链路追踪系统,包括:
控制器,被配置为在通过调用声明式API的方式响应对象变更请求时,被触发执行对应的对象变更操作,其中,不同的控制器在不同阶段所执行的对象变更操作不同,各个对象变更操作按照既定顺序执行以完成对象变更,所述声明式API提供面向终态的描述,并通过关联的多个控制器按照终态描述进行对象变更操作以完成面向终态的资源或能力的交付,所述声明式API所调用的各个控制器之间异步且相互独立;
追踪信息记录载体,被配置为记录所述控制器所执行的对象变更操作对应生成的Span信息,其中,每个对象对应设置有追踪信息记录载体,各个Span信息包括链路追踪标识、对应Span的Span标识、对应Span的开始标识和/或结束标识;在Span具有父Span时,该Span对应的Span信息还包括该父Span对应的父Span标识;以及
收集器,被配置为采集所述追踪信息记录载体中记录的所述各个Span信息,根据所采集的所述各个Span信息进行链路追踪。
22.一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1-13中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310499305.0A CN116225880B (zh) | 2023-05-05 | 2023-05-05 | 用于链路追踪的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310499305.0A CN116225880B (zh) | 2023-05-05 | 2023-05-05 | 用于链路追踪的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116225880A CN116225880A (zh) | 2023-06-06 |
CN116225880B true CN116225880B (zh) | 2023-09-08 |
Family
ID=86571662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310499305.0A Active CN116225880B (zh) | 2023-05-05 | 2023-05-05 | 用于链路追踪的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225880B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219316A (zh) * | 2014-09-12 | 2014-12-17 | 微梦创科网络科技(中国)有限公司 | 一种分布式系统中的调用请求处理方法及装置 |
CN109241014A (zh) * | 2018-07-04 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和服务器 |
WO2020173080A1 (zh) * | 2019-02-27 | 2020-09-03 | 华为技术有限公司 | 调用链信息查询方法以及设备 |
CN112486786A (zh) * | 2020-11-12 | 2021-03-12 | 贝壳技术有限公司 | 一种调用链路追踪方法及装置 |
CN112910945A (zh) * | 2020-12-08 | 2021-06-04 | 江苏苏宁云计算有限公司 | 请求链路跟踪方法和业务请求处理方法 |
CN113094166A (zh) * | 2021-05-10 | 2021-07-09 | 杭州网易云音乐科技有限公司 | 一种链路追踪方法、装置、介质和计算设备 |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN114547208A (zh) * | 2022-04-21 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 用于全链路追踪事务的方法及原生分布式数据库 |
CN114721710A (zh) * | 2022-04-29 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 版本控制方法、装置及存储介质 |
CN115934656A (zh) * | 2022-12-13 | 2023-04-07 | 北京字跳网络技术有限公司 | 信息处理方法、业务处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11416364B2 (en) * | 2020-03-27 | 2022-08-16 | Vmware, Inc. | Methods and systems that identify dimensions related to anomalies in system components of distributed computer systems using clustered traces, metrics, and component-associated attribute values |
-
2023
- 2023-05-05 CN CN202310499305.0A patent/CN116225880B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219316A (zh) * | 2014-09-12 | 2014-12-17 | 微梦创科网络科技(中国)有限公司 | 一种分布式系统中的调用请求处理方法及装置 |
CN109241014A (zh) * | 2018-07-04 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和服务器 |
WO2020173080A1 (zh) * | 2019-02-27 | 2020-09-03 | 华为技术有限公司 | 调用链信息查询方法以及设备 |
WO2021189899A1 (zh) * | 2020-09-24 | 2021-09-30 | 平安科技(深圳)有限公司 | 链路状态的追踪方法、装置、电子设备及计算机存储介质 |
CN112486786A (zh) * | 2020-11-12 | 2021-03-12 | 贝壳技术有限公司 | 一种调用链路追踪方法及装置 |
CN112910945A (zh) * | 2020-12-08 | 2021-06-04 | 江苏苏宁云计算有限公司 | 请求链路跟踪方法和业务请求处理方法 |
CN113094166A (zh) * | 2021-05-10 | 2021-07-09 | 杭州网易云音乐科技有限公司 | 一种链路追踪方法、装置、介质和计算设备 |
CN114547208A (zh) * | 2022-04-21 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 用于全链路追踪事务的方法及原生分布式数据库 |
CN114721710A (zh) * | 2022-04-29 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 版本控制方法、装置及存储介质 |
CN115934656A (zh) * | 2022-12-13 | 2023-04-07 | 北京字跳网络技术有限公司 | 信息处理方法、业务处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
One-shot multi-object tracking using CNN-based networks with spatial-channel attention mechanism;Guofa Li 等;《Optics & Laser Technology》;第1-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116225880A (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108279892A (zh) | 一种拆分大型应用服务为微服务的方法、装置及设备 | |
EP2696532A2 (en) | Method, server and system for starting application | |
CN112418438A (zh) | 基于容器的机器学习流程化训练任务执行方法及系统 | |
CN112527489A (zh) | 一种任务调度方法、装置、设备及计算机可读存储介质 | |
CN106685894B (zh) | 一种风险识别方法、装置及系统 | |
CN113689292B (zh) | 基于图像背景识别的用户聚集识别方法及系统 | |
CN103677870A (zh) | 系统升级方法及采用该方法升级的系统 | |
CN110868309A (zh) | Vnfm中资源处理的方法、装置及计算机存储介质 | |
CN109165175B (zh) | 设备标识生成方法和装置 | |
CN109885612A (zh) | 区块链智能合约的同步生效方法及装置 | |
CN112162840B (zh) | 一种基于中断重入机制的协程处理及管理方法 | |
CN116225880B (zh) | 用于链路追踪的方法、装置及系统 | |
CN113689291B (zh) | 基于异常移动的反欺诈识别方法及系统 | |
CN107862040B (zh) | 一种应用实例的缓存中数据的更新方法、装置及一种集群 | |
CN112003821B (zh) | 一种云平台安全管理方法、系统以及安全管理服务器 | |
CN109388770B (zh) | Web页面生成方法及装置 | |
CN108668244B (zh) | 业务处理方法、装置及存储介质 | |
CN111176924A (zh) | 一种gpu掉卡模拟方法、系统、终端及存储介质 | |
CN112286622A (zh) | 虚机迁移处理及策略生成方法、装置、设备及存储介质 | |
CN112486409B (zh) | 一种自动回收集群云硬盘的方法、系统、终端及存储介质 | |
CN115659315A (zh) | 一种基于数字口令的任务处理方法及装置 | |
CN109933460A (zh) | 数据快照方法及装置 | |
CN110221952B (zh) | 业务数据的处理方法及装置、业务数据处理系统 | |
CN114327835A (zh) | 分布式任务的调度方法及装置、处理器和电子设备 | |
CN106055322A (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 | ||
GR01 | Patent grant |