OpenTracing

参考地址

组织构件

  • opentracing-api:主要的API,无其他依赖。
  • opentracing-noop:为主要API提供无意义实现(NoopTracer),依赖于opentracing-api。
  • opentracing-util:工具类,例如GlobalTracer和默认的基于ThreadLocal存储的ScopeManager实现,依赖于上面所有的构件。
  • opentracing-mock:用于测试的mock层。包含MockTracer,简单的将Span存储在内存中,依赖于opentracing-api和opentracing-noop。

主要API

主要的OpenTracing API将所有主要组件声明为接口以及辅助类,例如Tracer,Span,SpanContext,Scope,ScopeManager,Format(用映射定义通用的SpanContext注入和提取格式)。详细文档

  • Tracer 链路。
  • Span 由 Tracer 构建,可以添加Tag(是键值对),也是 Tracer 的基本单元,一般代表分布式系统中一个独立的工作单元。多个 Span 可以是父子关系。
  • SpanContext 跨越进程边界,传递到下级span的状态 ,包括 traceID 等;Tracer.inject和extract方法就是用于发送和恢复 SpanContext对象,参数 carrier就是序列号方式,format是格式化
  • Scope 用于在线程间传递 Span,常用的实现有 ThreadLocalScope 。
  • ScopeManager 用于提供一个统一的接口从 Scope 中获取 Span,常见的实现有 ThreadLocalScopeManager。

Quick Start

import java.util.Map;
import io.opentracing.mock.MockTracer;
import io.opentracing.mock.MockSpan;
import io.opentracing.tags.Tags;

// Initialize MockTracer with the default values.
MockTracer tracer = new MockTracer();

// Create a new Span, representing an operation.
MockSpan span = tracer.buildSpan("foo").start();

// Add a tag to the Span.
span.setTag(Tags.COMPONENT, "my-own-application");

// do something for business logic

// Finish the Span.
span.finish();

// Analyze the saved Span.
System.out.println("Operation name = " + span.operationName());
System.out.println("Start = " + span.startMicros());
System.out.println("Finish = " + span.finishMicros());

// Inspect the Span's tags.
Map<String, Object> tags = span.tags();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容