opentracing是什麼?
opentracing 定義了一套api
通過提供平臺無關、廠商無關的API,使得開發人員能夠方便的添加(或更換)追蹤系統的實現。OpenTracing正在爲全球的分佈式追蹤,提供統一的概念和數據標準。
opentracing 在哪裏有java版?
從下面的圖,可以看出api爲定義模塊,mock擋板 noop空實現 impl具體實現
opentracing 定義了哪些api?
span
一條消息,相當於一個打點信息,裏面有兩個重要的方法 finish 和 其他
finish 用來完成span的信息,並且用於提交 而其他方法用來組裝span的數據
及傳輸的上下文,保存一些數據,一般loaclThread的,主要方法
Iterable<Map.Entry<String, String>> baggageItems();
Tracer
定義了兩個方法,一個是往spancontext 插入參數,一個獲取spancontext,相當於span集合
-
<C> void inject(SpanContext spanContext, Format<C> format, C carrier);
-
<C> SpanContext extract(Format<C> format, C carrier);
Format其實就是 定義的幾個map
-
public interface Format<C> {
-
final class Builtin<C> implements Format<C> {
-
public final static Format<TextMap> TEXT_MAP = new Builtin<TextMap>();
-
public final static Format<TextMap> HTTP_HEADERS = new Builtin<TextMap>();
-
public final static Format<ByteBuffer> BINARY = new Builtin<ByteBuffer>();
-
}
SpanBuilder
顧名思義,builder模式,用來構建 span, 關鍵是start方法,構建成功
-
interface SpanBuilder extends SpanContext {
-
-
-
-
-
SpanBuilder asChildOf(SpanContext parent);
-
-
-
-
-
SpanBuilder asChildOf(Span parent);
-
-
-
-
-
-
-
-
-
-
-
-
SpanBuilder addReference(String referenceType, SpanContext referencedContext);
-
-
-
SpanBuilder withTag(String key, String value);
-
-
-
SpanBuilder withTag(String key, boolean value);
-
-
-
SpanBuilder withTag(String key, Number value);
-
-
-
SpanBuilder withStartTimestamp(long microseconds);
-
-
-
Span start();
-
-
}