原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换

本文详细介绍了 SOFATracer,一个用于分布式系统调用跟踪的组件,其通过统一的 TraceId 记录调用链路并可上报至 Zipkin。SOFATracer 遵循 OpenTracing 规范,提供数据上报模型和 Zipkin 模型转换原理的分析。文章涵盖了 Tracer、Span 和 SpanContext 的概念,并讨论了 SOFATracer 如何扩展 OpenTracing 功能,包括数据上报到磁盘和 Zipkin 的机制。
摘要由CSDN通过智能技术生成

简介: SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来或者上报到 Zipkin,以达到透视化网络调用的目的,这些链路数据可用于故障的快速发现,服务治理等。

SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是在金融场景里锤炼出来的最佳实践。

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来或者上报到 Zipkin,以达到透视化网络调用的目的,这些链路数据可用于故障的快速发现,服务治理等。

SOFATracer 的 Github 的地址是:

https://github.com/alipay/sofa-tracer


之前我们发了一篇 实操 | 基于 SOFATracer + Zipkin 实现分布式链路跟踪,本篇将展开进行原理的分析。

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来或者上报到 做 Zipkin,以达到透视化网络调用的目的。这种以日志的方式记录下来或者上报到 Zipkin 通常称为 Report,即数据上报 SOFATracer 的数据上报是在遵循 OpenTracing 规范基础上扩展出来的能力,OpenTracing 规范本身只是约定了数据模型和行为。本文主要目的在于分析 SOFATracer 的数据上报功能部分,主要内容如下:

  • 基于 OpenTracing 规范的分布式链路跟踪解决方案
  • SOFATracer Report 数据上报模型
  • SOFATracer 和 Zipkin 模型转换原理

基于 OpenTracing 规范的分布式链路跟踪解决方案

OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。为了解决不同的分布式追踪系统 API 不兼容的问题,OpenTracing 提供了一套平台无关、厂商无关的 API,同时也提供了统一的概念和数据标准。关于对 OpenTracing 标准的版本化描述可以参考 https://github.com/opentracing/specification/blob/master/specification.md。一些具体的概念下面将结合 SOFATracer 的实现来一一说明。

目前基于 OpenTracing 规范实现的链路跟踪组件有 Jaeger,Appdash,Apache SkyWalking ,Datadog 等。像谷歌的 StackDriver Tracer 实际上并不是遵循 OpenTracing 规范的,但是都源自于 Dapper 这篇论文。

规范其实就是对模型和行为的约束,在 OpenTracing 规范中有三种关键和相互关联的模型:Tracer、Span 和SpanContext,并且在规范中对于每个模型的行为也做了约定。

1. Tracer
Tracer 可以被认为是一个由多个 Span 组成的有向无环图。一个 Tracer 可以用来描述一个请求从发出到收到响应整个链路过程。前提是需要在适当的地方进行埋点。下图就是一条完整的链路的展示:

image.png

在 SOFATracer 中 ,SOFATracer 实现了 Tracer 接口,实现了构建 span&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值