今天我们聊聊 Trace 之 OpenTelemetry And TSW |概览

导读:OpenTracing 是针对应用程序和 OSS 软件包的最新开放式分布式跟踪标准。具有大规模构建微服务经验的开发人员了解分布式跟踪的作用和重要性:每个进程的日志记录和度量标准监视都有其位置,但是它们都无法重构事务在整个分布式系统中传播时所经历的复杂旅程。

作者介绍

徐为

腾讯云 CSIG 微服务产品中心产品架构师

多年一线研发、架构设计经验

目前专注于腾讯云微服务中间件的研究推广在多个跨国企业从事IT相关工作超过15年

Trace 的由来

Trace 并不是一个新的概念,随着软件商业化伊始,如何迅速定位生产环境是工程师们不断探索的方向。早期的软件架构大多为 CS 结构(Client and Server)。每个语言为了提供方便快捷的方式让工程师解决问题,在 Log,Debug 和 Trace 上一直没少下功夫。

大家最熟悉的 Java 代码里 printStackTrace() 就是标准的追踪逻辑,把调用关系和顺序整理的明明白白。随着 SOA(Service Oriented Architecture)的普及,标准化的服务间交互机制逐步建立起来,但大多数的应用还是跑在单体结构上,所以对于追踪和排障并没有带来巨大的变化。

紧接着发生的互联网的兴起和流量的几何级数暴增,服务之间的解耦,模块独立扩展性和业务团队的组织结构的变化,让软件体系结构发生了本质变化。打散了原有的单体应用,微服务几乎成为刚需。微服务的构架形态打乱了原本向对简单的在单体开发下的链路追踪和排障逻辑。

在这个背景下,分布式链路追踪应运而生成为了大部分公司业务监控和故障定位的强需求。这里就引出了我们下面要讨论的话题,也是目前业界最火的链路追踪项目之一的 OpenTelemetry。

OpenTelemetry 的前世今生

谈 OpenTelemetry 和它的故事之前,还必须先说一下谷歌2010年发布的文章《A Large-Scale Distributed Systems Tracing Infrastructure》。

这篇文章在当时的研发圈子引发的轰动不亚于之后的 Kubernetes 的基石 Borg ,OpenTelemetry 在设计上是有很大一部分借鉴了这篇文章。但是 Dapper 和 Borg 都是比较前沿的理念,普罗大众往往还需要几年才会去尝试标准化这类问题的解决方案。而 OpenTelemetry 和 Kubernetes 还有一点也不一样,它并不是打败了一些对手之后脱颖而出的。

要说 OpenTelemetry 的故事,我们还要回顾一下过去5年的一些重要事件。

2016年的12月25日圣诞节,OpenTracing 发布了1.0的版本,提供了面向 Tracing 的规范用于兼容微服务调用之间不同平台的中立 API,之后的2年里,各种外部组件,各种语言,各种框架,不断的贡献到了 OpenTracing 的生态里来,OpenTracing 也成为了 CNCF incubating 的项目。

看起来如此符合主流需求的项目却在2018年受到了来自谷歌的挑战。2018年的1月17日,谷歌发布 OpenCencus(微软在2018年6月加入) ,作为一款独立于厂商的,面向微服务架构的性能采集和链路追踪平台。

从定位上来说,OpenCencus 不仅仅提供 Tracing 标准和 API 规范,还自集成了性能采集的组建,目标是打造一个集性能监控和链路追踪为一体的方案。而在生态上,OpenCensus 直接提供了大部分语言所对应的 SDK 和普遍使用的 Framework 的支持。从此开始,业界对于到底使用 OpenTracing 还是 OpenCensus 开始了一轮又一轮的讨论。

终于在2019年的5月21日,一条来自谷歌的官方声明传来,OpenCensus 和 OpenTracing 被并入到新的 CNCF 项目,新项目的名字叫OpenTelemetry。而 OpenTelemetry 不仅仅做 Tracing,Metrics,还要针对 Logging 实现类似的中立解决方案,这个方案基本上吃下了排障流程的上中下游,致力于打造全方位的排障定位的规范。

目前 OpenTelemetry 是 CNCF 旗下的 SandBox 项目,同在 SandBox 下的比较有特色的几个项目包括 Chaos Mesh,Cert Manager 和 K3s。OpenTelemetry 对于 OpenTracing 和 OpenCensus 是全面兼容的,会制定出更加全面的规范,并且很多规范会贡献到类似于 W3C 当中去。

当前,业界最火热的几个链路追踪社区,如 Apache SkyWalking,Zipkin,Jaeger 都是基于 OpenTracing 发展起来的,也有逐步向 OpenTelemetry 拓展的趋势。这些开源组建一般都是从客户端接入开始,同时提供数据收集的方案(Data Collector)和数据处理的方案(Data Aggregator),最后把数据倒入到其他开源组建中,比如 Elasticsearch 和 Cassandra 等。对于大部分需要使用的客户来说,自建其实是比较麻烦的事情。比如 Jaeger 提供的实例构架图如下:

也可以等待本系列的第二篇:实战微服务下的全链路追踪和排障

敬请期待

参考资料

[1] Google Dapper: 

https://research.google.com/pubs/pub36356.html?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B50rhshEFQSaHNB9U%2FlChHw%3D%3D

[2] Google Borg: 

https://research.google/pubs/pub43438/#:~:text=Google's%20Borg%20system%20is%20a,tens%20of%20thousands%20of%20machines.

[3] OpenTracing: 

https://opentracing.io/specification/changelog/

[4] Micorsoft Joins OpenCensus:

https://cloudblogs.microsoft.com/opensource/2018/06/13/microsoft-joins-the-opencensus-project/

[5] OpenCensus merged to OpenTelemetry: 

https://opensource.googleblog.com/2019/05/opentelemetry-merger-of-opencensus-and.html

[6] 《OpenTelemetry:The Merger of

OpenCensus and OpenTracing》

Google Open Source Blog. Retrieved 2020-01-20:

https://opensource.googleblog.com/2019/05/opentelemetry-merger-of-opencensus-and.html

[7] Cert Manager:

https://certmanager.devstats.cncf.io/

[8] K3s:

https://k3s.io/

[9] 《A Large-Scale Distributed Systems 

Tracing Infrastructure》:

https://research.google/pubs/pub36356/

[10] 图一取自Jaeger官网给予1.21版本:

https://www.jaegertracing.io/docs/1.21/architecture/

往期推荐

《【超详细】前端程序员只需六步,实现微服务架构转型初实践》

《看他就够了!一文带你全方面了解Apache Pulsar 延迟消息投递》

《【精彩分享】腾讯云微服务平台的标准输出与落地实践》

扫描下方二维码关注本公众号,了解更多微服务、消息队列的相关信息!解锁超多鹅厂周边!

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
今天我们聊聊 Trace 之 OpenTelemetry And TSW |概览
Trace 并不是一个新的概念,随着软件商业化伊始,如何迅速定位生产环境是工程师们不断探索的方向。早期的软件架构大多为 CS 结构(Client and Ser...
<<上一篇
下一篇>>