opentracing & jeager

  • Post author:
  • Post category:其他




简介

opentracing是一个分布式追踪系统的client接口标准。jeager是uber的tracing系统。



收集的资料

specification: https://opentracing.io/specification/
[1] https://developer.aliyun.com/article/514488
[2] http://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html?spm=a2c6h.12873639.0.0.61b453f6kQ1TwU
[3] https://github.com/opentracing/specification/blob/master/specification.md
[4] https://github.com/opentracing-contrib/opentracing-specification-zh/blob/master/semantic_conventions.md
[5] https://github.com/opentracing/opentracing-go
[6] https://github.com/yurishkuro/opentracing-tutorial/tree/master/go
[7] https://godoc.org/github.com/opentracing/opentracing-go

建议多看几遍spec,比什么博客翻译好多了。不得不说很多博客和翻译都很aji(include me)。



tracing的概述

https://github.com/opentracing/specification/blob/master/specification.md
https://blog.csdn.net/u013970991/article/details/77822060



What

从概念上而言,tracing是分布式追踪工具,对分布式系统中的某request的流向进行追踪。如上面的文章所言。


入侵式:

也因为tracing是追踪具体的request的执行流,所以须有侵入式的方式植入代码。

因为入侵式需要深入客户代码,显然是不能依赖于其他公司的三方库,所以大家只有规范接口,而不同的公司的接口规范可能是不同的(大家想法不一样嘛),所以需要标准化,接口的具体内容格式化显然是不现实的(大家的需求不同),所以需要一个抽象层次比较高,且开源的标准。如是opentracing。


自定义实现:

在opentracing中只是规范了交互标准,并没有内容实现,所以我们需要去自定义实现Tracer,同时依赖开源的Tracer也是可以的。

OpenTracing的实现中,比较流行的为 Jaeger 和 Zipkin。



jeager

https://zhuanlan.zhihu.com/p/44824994
https://www.jaegertracing.io/docs/1.18/

jeager是对Tracing系统的实现。



Tracer

关于文档,可以搜索go doc,然后索引jeager-client

// TraceID represents unique 128bit identifier of a trace
type TraceID struct {
   
	High, Low uint64
}
// Tracer implements opentracing.Tracer.
type Tracer struct {
   
	serviceName string
	hostIPv4    uint32 // this is for zipkin endpoint conversion

	sampler  SamplerV2
	reporter Reporter
	metrics  Metrics
	logger   log.DebugLogger

	timeNow      func() time.Time
	randomNumb



版权声明:本文为dong1528313271原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。