zl程序教程

您现在的位置是:首页 >  其它

当前栏目

2021-07-26

2021 26 07
2023-09-14 09:15:16 时间

你好,欢迎你来到专栏第一课。这一讲我将带领你学习 Apache SkyWalking,那为什么我会以 Apache SkyWalking 作为第一讲呢?

首先 Apache SkyWalking 在国际上是非常受欢迎的 APM 系统,在 APM 的核心领域(如全链路追踪、网站性能)都非常具有前瞻性。

它采用字节码增强技术,极大地降低了接入成本;支持 Java、.Net 等多语言探针,并提供 Dubbo、gRPC 等多种开源框架插件;诞生于社区,没有企业束缚和语言障碍。其开放、共享精神让其成为当之无愧的“APM 引领者”。

其次我也是 Apache SkyWalking PMC,对该项目有非常丰富的经验,从 2018 年就开始使用 Apache SkyWalking 的孵化版本,在贝壳找房进行大规模的企业级实践;同时我也亲力亲为,见证了社区的关键里程碑,比如在 SkyWalking 成为 Apache 的顶级项目后,我参与编写《Apache SkyWalking 实战》图书等。

接下来,我将通过 Apache SkyWalking 的发展历程和企业级的实践经验,来讲述 APM 引领者 SkyWaling 是如何进行大规模落地的。

Apache SkyWalking 发展历程


SkyWalking 项目从 2017 年 12 月进入 Apache 孵化器,到现在的 8.X 版本已经迭代了 4 个大版本。

下面我带你回顾下这 4 个大版本,让你了解在过去三年,Apache SkyWalking 在哪些 APM 领域都进行了哪些核心功能上的建设,进而总结下 Apache SkyWalking 现在与未来,建设的重点是什么。

相信你在学习完这一讲后,会对“为什么有人对项目提出的建议或设计,会引起社区的强烈共鸣,而有些建议则无人问津”有了更高维度的认知;进而对 Apache SkyWalking 的 APM 落地进程中,会遇到的问题及其解决方法有更清楚的了解。

比如,什么问题可以得到社区帮助,什么问题需要自己解决。

这里我先对下面内容使用的版本号,进行简要说明。版本后缀为什么是“.X”?其实软件的发布版本号分为三个部分,即“X.Y.Z”:

  • “X”代表主要版本,此版本号的升级代表软件有重大特性发布,且特性很可能不向前兼容
  • “Y”代表次要版本,这个版本通常不提供重要的功能特性,而会对主要版本带来的重大特性,进行迭代升级
  • “Z”代表修复版本,用于 Bug 修复

下面只对 SkyWalking 的主要版本和次要版本进行介绍。

5.X 版本


2017 年 12 月,SkyWalking 通过 Apache 软件基金会投票,其 SkyWalking 和 SkyWalking-UI 两个项目也正式进入 Apache 进行孵化,此时项目的贡献基本来自初始 10 人构成的 Committer 团队,目标是毕业成为 Apache 顶级项目。

SkyWalking 项目是通过 Java Agent 可对 Java 语言的服务进行无侵入的数据收集,以及数据的分析和持久化,核心数据为基于 OpenTracing 实现的分布式链路跟踪数据。

SkyWalking-UI 项目实现了 SkyWalking APM 系统的 UI 展示。

接下来 2018 年初,SkyWalking 社区孵化出 .NET Core Agent 和 NodeJS Server Agent。同时 SkyWalking 社区与 Zipkin 社区合作,实现了收集端可收集 Zipkin 数据,进行分析、持久化,以及在 SkyWalking APM 系统的 UI 进行展示。

6.X 版本


6.X 版本是 SkyWalking 在 2018 年下半年开始发行的版本,此版本持续了一年多,是目前 SkyWalking 次要版本迭代最多,对社区意义最重大的版本。它见证了 SkyWalking 项目运作走向规范、社区愈发成熟的进程,并顺利毕业成为 Apache 顶级项目。

6.X 版本的建设重点是 OAP(Observability Analysis Platform)思想的落地。

在数据协议上,SkyWalking 支持了指标数据(Metric data)、分布式链路跟踪数据(Tracing data)和日志数据(Logging data)。

在 APM 平台易用性上,SkyWalking 屏蔽了语言壁垒。通过实现可观测分析脚本语言,让用户通过自定义脚本的方式替代原始的修改代码,然后编译项目方式,就可以快速落地自己想要的可观察分析平台了。

在探针语言的丰富性上,SkyWalking 支持了 PHP 语言。在社区建设上,项目架构内核更加轻量化,扩展实现更加模块化、插件化。同时主库 Java 探针和后端分析存储项目也支持了 E2E 测试。

7.X 版本


7.X 版本为 SkyWalking 在 2020 年初发行的版本。

在数据协议上,SkyWalking 支持了收集性能剖析类数据,并落地了 Java 语言在线代码行级维度的性能剖析;支持用户通过 SkyWalking 进行自定义数据的传播和分析。

在探针语言丰富性上,SkyWalking 支持了 GO 和 Nginx。

在社区建设上,更多的探针语言支持了 E2E 测试。