常见分布式链路追踪(Tacing)产品简介

Python014

常见分布式链路追踪(Tacing)产品简介,第1张

eBay早在2002年的时候,就开发了一套叫做CAL(Centralized Application Logging)的链路追踪系统,在eBay内部堪称架构神器。不过没有开源

Google在与eBay差不多的时间,也开发了一套链路追踪系统,叫Dapper,在Google内部运行了很长时间,一直没有开源。不过在2010年的时候,Google发布了一篇划时代的论文,来介绍Dapper的原理。Dapper论文成了后面众多链路追踪系统的理论基础。

下面是Dapper论文的英文原版和中文翻译版:

Dapper 英文版

Dapper 中文翻译版

在eBay工作了十多年的 吴其敏 加入大众点评成为首席架构师。吴其敏以eBay的CAL为模板,在2011年底,开始研发名为 CAT (Central Application Tracking)的链路追踪系统。CAT在2014年开始开源,已经被众多知名公司使用。

下面是美团官方技术博客对CAT的介绍:

美团官方技术博客 - 深度剖析开源分布式监控CAT

下面是CAT Github地址:

CAT - Github

下面是CAT UI示例:

Twitter在2012年开源了Zipkin。不过Zipkin最早是用scala实现的,比较小众。后来由社区用java重写为OpenZipkin,才开始流行起来。Zipkin可以认为是Dapper论文的工程实践。

下面是Zipkin的官网和Github地址:

Zipkin官网

Zipkin - Github

下面是Zipkin Tracing UI示例:

Pinpoint是一家名叫Naver的韩国公司的产品。Naver是韩国当前最大的互联网服务公司。Pinpoint的创新点在于使用了字节码注入技术,埋点是无侵入的。

下面是Pinpoint在Github的地址:

Pinpoint - Github

下面是Pinpoint Tracing UI示例:

2015年,前OneAPM成员 吴晟 借鉴Pinpoint的思想,开发并开源了Skywalking,并在2017年时进入Apache孵化器。在Apache背书的情况下,Skywalking近几年在国内发展迅速。

同Pinpoint一样,Skywalking也使用了字节码注入技术,埋点也是无侵入的。

下面是Skywalking Github地址:

Github - Skywalking

下面是Skywalking一个体验版服务:

Skywalking - Demo

下面是Skywalking Tracing UI示例:

2016年,Uber受Dapper和OpenZipkin启发,用Go语言开发了链路追踪系统Jaeger。可以认为Jaeger是Zipkin的golang版。

下面是Jaeger官网和Github地址:

Jaeger官网

Github - Jaeger

下面是Jaeger Tracing UI示例:

CAT可以说是与CAL同根同源。而Zipkin、Pinpoint、Skywalking、Jaeger均是参考Dapper论文发展而来,因此,上述产品可大致按下图划分:

另外,链路追踪和APM可以说是密不可分,也越来越多的开源产品不仅局限于提供Tacing的功能。上述开源产品中,有很多产品本质上是个APM,Tracing只是其众多功能中的一部分:

后续会对比上述几个开源产品的异同,做为在技术选型时作为参考。

根据Go趋势报告显示,全球范围内有 110 万专业开发者选择Go作为其主要开发语言。如果把以其他编程语言作为主要开发语言,同时也在使用Go的开发者计算在内,这一数字将高达270万,中国的Go语言开发者排名第一,全球占比超过16%。

Go 语言能够支持并构建与微服务结合的内部工具、架构和后端服务而深受IT企业欢迎,许多IT架构工具由Go构建而成,例如大型的Kubernetes、Docker和Vault等。数据显示,有63%的具有统治力的云原生项目都是用Go构建。

因此,博睿数据在国内首发支持Go语言智能探针,对于提升业务性能,助力企业数字化转型有着非常重要的意义。

SmartAgent探针技术集结主流编程语言

SmartAgent是博睿数据自研的自动化部署的一体化探针,在已支持JAVA,PHP,.net,Nodejs,.NET Core,Python的基础上,新增了对Go语言的支持。

相较而言,传统探针技术需要客户配合修改应用程序代码,风险不可控,需要客户重新编译程序集成探针,耦合度高。

不同于行业内传统探针技术,博睿数据GoAgent探针直接后台安装即可,主动注入和嵌码,降低与客户程序耦合、无需二次修改代码、提高 GoAgent 技术易用性。无论是动态编译还是静态编译的代码,博睿数据Samrt Agent技术都可以在不进行任何修改的情况下进行服务级别和代码级别的分布式链路跟踪,实现业务的可观测性。

GoAgent探针支持六大功能,实现全链路追踪