分布式追踪的起源

自从微服务的兴起开始,整个系统架构开始变得极为庞大和复杂,但是服务之间的调用关系,调用消耗时间等等信息却依然是半黑盒的状态。为了能够将调用的链路进行串联,将系统的各种指标数据展示出来以使得系统的链路更加透明便于排查故障,分布式追踪便应运而生。

分布式追踪的起源有一个比较普遍的说法是源自Google2010年发表的论文Dapper, a Large-Scale Distributed Systems Tracing Infrastructure,然而实际上更早之前就有一些大公司内部已经有了类似的组件在使用了,只是不为人所知。当然即便如此,作为最早的系统性的论述分布式追踪的论文,它有着非同寻常的影响了,可以说是很多分布式追踪的实现参考。

百花齐放的分布式追踪

Zipkin

Zipkin最初是由Twitter开发并与2012年开源的一款开源追踪系统。Zipkin的使用非常广泛,影响了很多的后来人。他的传输头为X-B3

Skywalking

Skywalking是由国人开发,并且在后续捐赠给了Apache基金会的一个开源项目。现在是Apache基金会的顶级项目。

Pinpoint

Pinpoint由Naver在2012年开发,并于2015年开源。Pinpoint适用于java,php和python。

Jaeger

Jaeger最早是由Uber开发并于2017年开源,后续捐赠给了CNCF基金会。

OpenCensus

OpenCensus由Google发起,最初是Google内部追踪平台,后开源。

OpenTracing

OpenTracing由CNCF托管,具备较为完善的instrumentation库。

简单的盘点一下就能发现在这段时期出现了许多耳熟能详的分布式追踪开源项目,而且这些项目往往都有不少的使用者。

OpenCensus与OpenTracing

在上述的项目中有两个项目较为特殊:其一是OpenTracing,他制定了一套无关平台的统一的Trace的标准,后续的很多项目例如Jaeger等都是基于此协议,因此他在当时的Trace标准领域具有不小影响力;其二是OpenCensus,他背靠Google,并且它不仅仅实现了Trace,还包括了Metrics,并且他包含了一系列诸如Agent和Collector的方案,可以说是相当完备。

在当时这两大流派可以说是互相有一大票的追随者,一边是以Google和微软领衔的OpenCensus,一边是众多开源项目和厂商使用的OpenTracing,两者可以说是各有优劣,各领风骚。直到有一天...

Opentelemetry的诞生

再经过了一段时间的发展后OpenCensus与OpenTracing为了将两者的优点进行整合,宣布将进行合并,两者的合并就是后来赫赫有名的Opentelemetry


Opentelemetry可以说是含着金汤匙出生:OpenTracing支持,OpenCensus支持,刚开始就自带经验丰富的的社区人员,同时背后也有互联网巨头的支持。

Opentelemetry的目标

Opentelemetry旨在构建包含Trace,metrics和Logging的分布式追踪方案,它提供了统一的标准,提供了Java Agent解决方案,提供了Collector的实现等等,后续的系列文章中我会将这些一一进行介绍。

总结

这是我的Opentelemetry系列文章的第一篇,主要是介绍一些分布式追踪的往事和Opentelemetry诞生的历史。后续我会从Opentelemetry的相关使用,原理,体系来发布一系列文章,敬请期待。

参考文章

[1] https://www.cncf.io/blog/2019...

[2] https://www.cncf.io/blog/2021...

[3] Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

[4] https://bigbully.github.io/Da...

[5] https://developers.redhat.com...


骑牛上青山
1.2k 声望22 粉丝