更新时间:2024-07-11 09:42:45

链路模型是AnyRobot用于描述调用轨迹(Trace)的数据模型,包括跨度(Span)的基本属性配置以及关联日志配置等要素。基于链路模型,AnyRobot能够实现链路数据的标准化处理,以及链路数据及其关联日志数据的统一查询,并基于此进行异常问题的根因定位与问题追溯,满足开发测试、IT运维、业务运营、安全合规等全业务运营流程场景下的链路数据体系构建及分析需求。

基本概念

微服务系统架构背景下,服务之间调用关系愈渐复杂,一个请求可能跨越多个服务、多个系统组件。链路(Trace)提供了一个API请求或操作视角下的跨服务、跨组件的完整调用路径,能够帮助开发测试、运维等人员清楚理解这一请求/操作在不同服务和系统组件之间的完整传播路径调用关系以及性能信息,以解决复杂系统架构背景下的性能瓶颈及故障定位、溯源等难题。

链路(Trace):具体而言,Trace是由相互关联、具有父子关系的跨度(Span)组成的一个有向无环图(Directed Acyclic Graph,简称DAG),每个Span代表了一个微服务或组件的调用或操作,共同描述了请求在整个系统中的流转过程。一条完整的链路(Trace)可以使用包含时间轴的时序图来呈现,如下所示:

跨度(Span):Span 是链路(Trace)中的最小操作单元,每个Span会追踪请求发出的特定操作,并记录该操作执行期间发生的事情,包括开始时间、结束时间、耗时、状态、操作类型、所属服务名称等。在同一个链路(Trace)中,跨度(Span)之间可以存在父子关系,表示链路的嵌套关系,父级跨度(Span)调用了一个或多个子跨度(Span),跨度的运行状态也将直接影响链路(Trace)呈现出的状态。

Span基本属性信息:

• Trace ID :用于唯一标识一次分布式请求调用的全链路追踪。它贯穿了整个请求调用的所有服务、系统和网络,确保所有相关的日志、监控数据都能被关联起来,以便进行全链路追踪和分析。

• Span ID :用于唯一标识一次请求调用过程中的某个具体操作(如HTTP请求、数据库访问等)。

• 父 Span ID :当前 Span 的父级 Span 的ID。在分布式链路追踪中,Span 之间往往存在父子关系,表示调用的层次结构,用于帮助理解服务间的调用顺序和依赖关系。

• Span 名称:是对 Span 所代表操作的简短描述。例如,一个Span可能代表一个HTTP请求、数据库查询或内部方法调用等。

• Span 时间:包括 Span 开始时间、Span 结束时间和 Span 持续时间。

• Span 类型:用于对Span 进行分类,帮助在监控和分析时快速识别筛选不同类型的操作,包括UNSPECIFIED(未定义Span)、INTERNAL(内部 Span)、SERVER(服务端侧 Span)、CLIENT(客户端侧 Span)、PRODUCER(生产者 Span)、CONSUMER(消费者 Span)六种类型。

• Span 状态:用于表示 Span 的执行结果,包括OK(成功)、ERROR(错误)、UNSET(未知)三种状态。

• Span所在服务名称:指记录该 Span 的服务或组件的名称,用于识别哪个服务或组件参与了特定的请求调用。