一.什么是开放跟踪? 分布式链接跟踪是谷歌最初在Dapper论文中提出的一系列链接跟踪的API规范,与平台无关,与供应商无关,支持多种编程语言,因此开发者可以简单地实现链接跟踪系统尽管OpenTracing不是标准,但目前大多数链接跟踪系统都尽可能与OpenTracing兼容。 目前,符合该API标准的有SkyWalking、Jaeger、Zipkin、Open Telemetry、Pinpoint、CAT等
Opentracing 核心接口
Tracer:调用链跟踪链接。 一个trace是由几个span组成的有向无环图,Tracer对象是span对象的创建(分散操作时间的记录)、机器之间的数据的透明(Extract/Inject方法)、或者当前的span(Tracer对象) 通过调整采样率,可以减少数据上报所需的开销
SpanTracer的基本单元。 span表示APP应用程序的逻辑操作。
span属性
Operation name :操作名称Start timestamp :开始时间Finish timestamp :结束时间Span Tag :标记集,一组键值对。 密钥必须是字符串,并且值为字符串/数字或布尔Span Log:日志集,对于日志中不包含密钥值对和时间错误的span context:context baggage items:trace相关数据,为密钥值对SpanContext: Span上下文。 用于在进程之间传递Span和共享数据
ScopeManager:用于检索当前上下文中的Span或将Span设置为当前上下文
3358 www.Sina.com/:与scope manager一起使用,
Span之间的关系分为亲子关系ChildOf和随访关系FollowsFrom。
Scope
包括三种相关类型的跟踪/跨度/跨度上下文
OpenTracing API 介绍
创建span并将其用于在进程间的事务中处理序列化。
Tracer API
参数:
操作名称:必填项、操作名称、获取用户信息等span的具体任务
跨度上下文:关系,包括关系类型
Start timestamp :默认为当前时间
Tag:0或多个
返回值:返回已启动但未结束的span。
tracer.buildSpan
参数:
跨度上下文实例
Format :格式化说明。 通常是字符串
进位:将format之后的数据序列化为进位
将SpanContext注入inject到Carrier中
参数:
格式:格式化说明
从运营公司:运营公司根据格式对SpanContext进行了反序列化。
返回值:跨度上下文
将SpanContext从Carrier中提取extract
文本映射:字符串映射
http头:头信息,基于字符串映射
Binary :二进制大对象,跨度上下文信息。
Format结构:
Span退出Span.finish后,将不再允许执行除获取Span的Span上下文以外的操作。
获取跨度上下文
更改操作名称
参数: new operation name,新操作名词。
Span API
参数:完成时间,完成时间
结束span finsh
参数:
tag key
tag value
设置tag
参数
一个或多个log键值对,必需
时间戳,可选
设置Baggage调色板数据
请谨慎使用,因为在spancontext中存储并传递键值对会给io和cpu带来额外的开销。
参数:
Baggage key :字符串
Baggage value :字符串
设置结构化Log数据
参数: baggage key
返回值: Baggage value
参考:
3359 github.com/open tracing-contrib/open tracing-specification-zh