后分布式追踪时代的性能问题定位——方法级性能剖析[文末彩蛋】
在云原生时代,通过容器技术、Kubernetes 编排、微服务以及服务网格(Service Mesh)等技术构建的业务,运维效率提升,新功能发布效率和频率都有显著提升,但也因为采用云原生技术给业务系统带来了更多的复杂性,比如分布式拓扑结构更为复杂,问题定位难度也更高,往往需要借助分布式追踪技术来提升问题定位效率。因此,在云原生时代,分布式追踪的地位愈发重要。
本文首先介绍经典的追踪模型,介绍不同的技术路线并比较它们的优缺点,而后在8月13日(周四)20:00的直播分享中,吴晟将详细的介绍分布式追踪的理论,以及其优势、实现方法和不足,演示如何使用 Apache Skywalking 的性能剖析功能快速发现系统瓶颈。幸运观众可获得吴晟领衔撰写的《Apache SkyWalking实战》新书一本。
现代互联网服务通常被实现为复杂的大规模分布式系统。这些应用程序可能由不同团队开发的软件模块集合构成,可能使用不同的编程语言,并且可以跨越多个物理设备甚至数千台计算机。在这样的环境中,有助于理解系统行为和有关性能问题的监控诊断工具是非常宝贵的。
01
Dapper与追踪模型
Dapper是谷歌的生产分布式系统追踪基础设施,其设计目标是满足超大规模系统的追踪监控需求,具有低开销、应用级透明度和多环境的部署等特点。能够在谷歌内部被使用超过10年,Dapper的成功因素包括采样和严格限制外部组件。但最重要的成果还是来自开发者和运营团队,他们均认为Dapper是非常有帮助的。
Dapper最初是一个独立的追踪工具,后来发展成为监控平台。同时它衍生出许多不同的工具,其中一些工具连它的设计者也没有预见到。谷歌曾经在论文中描述了一些使用Dapper构建的分析工具,分享了内部使用情况的统计数据及意外状况,并总结了迄今为止的经验教训。谷歌构建了Dapper,为开发人员提供分析复杂分布式系统行为的方案,并证明了这种系统对谷歌这种量级的企业是非常有帮助的。
简单介绍Dapper相关背景后,我们看一下Dapper所解决的主要问题。如下图所示是一个典型的分布式系统。
分布式系统拓扑图
在Dapper论文写作的时候,存在以下两类解决复杂分布式系统问题定位的思路。
黑盒法
黑盒法认为目标系统应被看作一个“黑盒”,我们应该只关注系统之间的消息。细线表示真实获取的数据,而粗线表示服务节点内部的调用,是系统推测出来的数据。当细线部分数据搜集完成,使用回归分析等统计学算法将这些片段再重新组合成为一条完整的链路。
黑盒法
标记法
标记法需要给消息打标。这种方法是使用一个全局的追踪ID,并结合一些其他的标记,如父ID、子ID等,让消息在数据层面产生关联关系,从而串联出整条追踪链路。
标记法
黑盒法相比于标记法,优点是对于消息体没有侵入性,比较方便部署,但是它需要更多的数据进行分析,以获得更为精准的结果。而标记法的一个明显缺点是需要侵入到目标系统之中,从而增加相关的附加标记。
Dapper正是采用了后一种,也就是标记法。因为谷歌内部的各种RPC调用使用了通用的库,可在只改动部分代码的情况下,增加附加标记。通常Dapper的追踪目标是一个RPC嵌套树,但是在实践中,它也经常被用在非RPC场景,如STMP邮件发送、外部进入的HTTP请求和数据库的SQL访问等。所以Dapper只关心调用树、Span和消息标记,而不单纯限制这些数据必须来源于RPC。
02
典型的追踪模型
我们来介绍一种典型的追踪模型,它来源于Dapper,并被Zipkin、SkyWalking等广泛使用。当然SkyWalking对该模型进行了一些改进,但由于典型模型比较易于理解,它是学习SkyWalking模型的一个很好的入门手段。
下图所示为一个典型的追踪树模型,它是由一组相互关联的节点组成的,这些节点我们一般称作Span。Span两端的连线表示了它和它的父Span之间的关系。一个Span通常包含时间戳、Span的开始和结束时间、整个追踪树的traceId、当前Span的ID、父Span的ID,最后是一些额外的信息,用来存储当前Span的应用相关信息。
经典追踪树模型
Span中的SpanId和ParentId是用来串联起整个追踪树的关键,没有ParentId的Span被认为是Root Span。在一棵追踪树内的所有Span均包含一个相同的traceId。所有ID均应该是唯一的。每个Span代表了一次调用,每增加一层调用服务,就会导致追踪树层次的增加。
RPC调用中的Span
上图展示了一个典型RPC调用的Span,Span的开始和结束时间是被追踪探针从目标RPC调用库中获取的。“foo”是一个用户自定义的标记,这个标记同其他Span内部标记一起被存储到后台。
这里需要注意的是,一个Span可以包含多个节点的数据。在这个例子中,Span就同时包含客户端和服务端的数据。由于这两份数据一般来源于两台主机,所以保持多台主机时间一致就变得非常重要了。
那么,在云原生时代,分布式追踪技术又有哪些挑战?传统分布式追踪又有哪些不足?如何快速对分布式业务系统做性能剖析?
本次分享,分享嘉宾吴晟将详细的介绍分布式追踪的理论,以及其优势、实现方法和不足,演示如何使用 Apache Skywalking 的性能剖析功能快速发现系统瓶颈。
分享嘉宾
吴晟
Apache 基金会会员,ApacheSkyWalking 创始人、项目 VP 和 PMC 成员,Apache 孵化器 PMC 成员,ApacheShardingSphere PMC成员,Apache APISIX (incubating) PPMC 成员,Apache ECharts (incubating) 和ApacheDolphinScheduler (incubating) 孵化器导师,Zipkin 成员和贡献者,CNCF OpenTracing 核心维护者。
分享大纲
分布式追踪兴起的背景
SkyWalking和其他分布式追踪的异同
定位问题的流程和方法
性能剖析的由来、用途和优势
直播福利
观看直播参与互动,可获得机械工业出版社华章公司赞助、吴晟领衔撰写的《Apache SkyWalking实战》新书一本。
等不及的小伙伴可以点击链接购买奥~
用户收获
听众能够全面的了解分布式追踪的技术背景,和技术原理。以及为什么这些年,分布式追踪和基于分布式追踪的APM系统,Apache SkyWalking,得到了广泛的使用、集成,甚至云厂商的支持。同时,除了针对追踪数据,我们应该关注更多的是,如何利用其产生的监控数据,定位系统的性能问题。以及它有哪些短板,应该如何弥补。
更多精彩回顾
书讯 |华章计算机拍了拍你,并送来了8月书单(下)
书讯 | 华章计算机拍了拍你,并送来了8月书单(上)
上新 | 迁移学习:迈向真正的人工智能
书单 | “ABCD”,未来颇具潜力的四大信息技术方向
干货 | 周志华新作《机器学习理论导引》阅读攻略
收藏 | DB-Engines 8 月数据库排名:Redis悄悄拔高,猛超Elasticsearch
点击阅读全文观看直播