OpenTracing基本知识点总结
Posted 流子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenTracing基本知识点总结相关的知识,希望对你有一定的参考价值。
一.OpenTracing:开放式分布式追踪规范
两个组成部分
Trace:调用链,追踪链路,一个trace是由若干span组成的有向无环图.
Span:一个span代表应用中的一个逻辑操作,每个span至少包含三个属性:操作名(an operation time)、开始时间(start time)、结束时间(finish time)。
配置初始化参数并创建 Tracer。
Tracer 对象可以用来创建 Span 对象(记录分布式操作时间)、跨机器透传数据(Extract/Inject 方法),或设置当前 Span(activeSpan)。Tracer
对象还配置了上报数据的网关地址、本机 IP、采样率、服务名等数据。您可以通过调整采样率来减少因上报数据产生的开销。
span属性
Operation name:操作名词
Start timestamp:开始时间
Finish timestamp:完成时间
Span Tag:标签集合,一组键值对,键必须为字符串,值为字符串/数字或布尔
Span Log: 日志集合,没条日志包含一个键值对和一个时间错。
SpanContext:上下文
OpenTracing实现,需要将调用链的状态(如:trace和span的id),依赖一个特殊的span去跨进程传输。
Baggage items:trace的随行数据,是一组键值对,也需要跨进程传输。
References:span间的连接关系,通过SpanContext建立关系
一个span可以与多个spancontext存在关系
关系类型有ChildOf父子关系和FollowsFrom跟随关系。
ChildOf父span依赖子span结果的关系
FollowsFrom 父span不依赖子span结果的关系。
二.OpenTracing API
包含三个相互关联的类型 Tracer/span/spanContext
Tracer API
用于创建span,以及处理跨进程传递中的序列化。
tracer.buildSpan
参数:
Operation name:必填,操作名,span的具体工作,如getUserInfo
SpanContext:关联关系,包括关系类型
Start timestamp:默认为当前时间
Tag:0或多个
返回值:返回一个已启动且未结束的span。
将SpanContext注入inject到Carrier中
参数:
SpanContext实例
Format:格式化描述,一般就是字符串
Carrier:将format的后的数据序列化到carrier中
将SpanContext从Carrier中提取extract
参数:
Format:格式化描述
Carrier:从carrier中根据format反序列化出SpanContext。
返回值:SpanContext
Format结构:
Text Map:字符串Map
HTTP Headers:header信息,基于字符串Map
Binary:二进制大对象,SpanContext信息。
Span API
当Span结束span.finish后,除了获取span的SpanContext,其他操作都不被允许。
获取SpanContext
修改operation name
参数:new operation name,新的操作名词。
结束span finsh
参数:finish timestamp,完成时间
设置tag
参数:
tag key
tag value
设置结构化Log数据
参数
一个或多个log键值对,必填
时间戳,选填
设置Baggage随行数据
键值对集合,存入spancontext进行传递,会对io和cpu带来额外开销,谨慎使用。
参数:
Baggage key:字符串
Baggage value:字符串
获取Baggage元素
参数:baggage key
返回值:Baggage value
SpanContext API
可以根据需要自定一套SpanContext api,用于资金的opentracing实现。
遍历SpanContext中的Baggage
NoopTracer API
用于对OpenTracing API进行操作,用于外部操作或测试等,可以进行无害的注入等。
如OpenTracing-Java视线中,NoopTracer就在其模块中。
可选的API元素
在一些OpenTracing实现中,可以实现一些工具类,通过Context.Context机制设置和获取活跃的Span。
参考:
https://github.com/opentracing-contrib/opentracing-specification-zh
以上是关于OpenTracing基本知识点总结的主要内容,如果未能解决你的问题,请参考以下文章
Docker学习总结(59)——DockerFIile相关知识点再总结