美文网首页
OpenTracing

OpenTracing

作者: 美美的苹果核 | 来源:发表于2021-06-23 15:47 被阅读0次

参考地址

组织构件

  • 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();

相关文章

网友评论

      本文标题:OpenTracing

      本文链接:https://www.haomeiwen.com/subject/jvpbyltx.html