中国首个个人主导的Apache孵化项目SkyWalking成功毕业!

整理:根哥啊

文章首发,微信公众号“Java后端技术”

来自 Apache Skywalking 官方的消息,Apache 基金会宣布 Skywalking 结束孵化,成为基金会顶级项目。

Apache SkyWalking 是一款应用性能监控(APM)工具,对微服务、云原生和容器化应用提供自动化、高性能的监控方案。项目于2015年创建,并于2017年12月进入 Apache 孵化器。经过一年半时间,该项目目前已成为 Apache 基金会顶级项目。

“今天对于 SkyWalking 项目和 SkyWalking 社区是意义非凡的一天。我们要特别感谢 SkyWalking 的 Apache 孵化器导师,项目贡献者和 Apache 孵化器帮助我们成为顶级项目”,Apache SkyWalking 项目 VP 吴晟说,” SkyWalking 最初只是为了帮助新人理解分布式追踪,但随着项目社区的变大和变强,我们成功的加入 Apache 孵化器。通过遵循 Apache 的社区建立模式,现在我们有一个非常活跃并多元化的社区。有超过70家公司公开宣布在使用 SkyWalking,项目有来自于数十家公司的超过100位的源码贡献者。”

一、什么是SkyWalking

SkyWalking 是观察性分析平台和应用性能管理系统。

SkyWalking 是一款国人主导开发的开源应用性能监控系统。SkyWalking是一个开源可观测性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法,可以让你清晰的查看分布式系统、甚至是跨云环境中。它更像是现代化APM(Application Performance Manager),专为云原生、基于容器和分布式系统而设计的。

SkyWalking 包括指标监控,分布式追踪,分布式系统性能诊断。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

二、为什么要使用SkyWalking?

这里与其说为什么要使用SkyWalking ,倒不如说为什么要使用APM工具?相信还是有很多小小伙伴对APM工具不是很清楚的。下边我们简单的介绍一下!

随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。

面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这时候 APM(应用性能管理)工具就该闪亮登场了。

**三、SkyWalking 特性

包含以下特性:

  • 服务、服务实例和endpoint(如:单个HTTP URI)的性能指标分析
  • 根因分析
  • 服务拓扑图
  • 服务和Endpoint依赖分析
  • 慢服务和慢Endpoint探查
  • 性能优化
  • 分布式追踪和追踪上下文传播
  • 告警

**

四、SkyWalking的架构**

SkyWalking在逻辑上分为四个部分:探针,平台后端,存储和UI

1、探针(Probes),基于不同的来源是不同的。它们收集数据并根据SkyWalking需求重新格式化。

2、平台后端(Platform backend),是一个后端服务,支持集群部署。它用于聚合,分析和驱动从探针到UI的流程。它还提供可插拔能力为不同的数据源(如Zipkin)、存储器实现和集群管理。您甚至可以使用观察分析语言自定义聚合和分析。

3、存储(Storage),是开放的。您可以选择现有的实现,例如ElasticSearch、H2或Sharding-Sphere管理的MySQL集群,也可以实现自己的。当然,非常感谢您为新的存储实现做出贡献。

4、UI,酷炫且非常强大,你也可以自己定制UI匹配后端。

小结:

SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。

整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。

五、谁在使用 SkyWalking

各种各样的公司和组织使用SkyWalking进行研究,生产和商业产品。这是SkyWalking 的用户墙。

六、常见的其他APM产品

目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking。

这里我们介绍的 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。SkyWalking提供了在许多不同场景下观察和监控分布式系统的解决方案。

说明:

本次对比基于skywalking-6.0.0-GA和Pinpoint-1.8.2(截止2019-02-19最新版本)。另外,我们这次技术选型直接否定了Zipkin,其最大原因是它对代码有侵入性,CAT也是一样。这是我们所完全无法接受的。

SkyWalking 和Pinpoint应该是目前最优秀的两款开源APM产品了,而且两款产品都通过字节码注入的方式,实现了对代码完全无任何侵入,他们的对比信息如下:

说明:上述对比数据来源与2019-02-24,截止发稿的时候,SkyWalking 的GitHub Star数为7541。

参考文章:

http://skywalking.apache.org/zh/blog/2019-02-24-skywalking-pk-pinpoint.html

http://skywalking.apache.org

https://www.jianshu.com/p/2fd56627a3cf

6