吴晟
读完需要
5
分钟速读仅需 2 分钟
吴晟
Apache基金会会员,Apache SkyWalking创始人、项目VP和PMC成员,Apache孵化器PMC成员,Apache ShardingSphere PMC成员,Apache APISIX (incubating) PPMC成员,Apache ECharts (incubating)和Apache DolphinScheduler (incubating)孵化器导师,Zipkin成员和贡献者,CNCF OpenTracing核心维护者。
导读:本文摘自于SkyWalking创始人吴晟撰写的《Apache SkyWalking实战》一书,详细讲述了SkyWalking的架构设计与优势。
徐郡明老师整理国内比较常见的 APM 如下:
APM 系统(Application Performance Management,即应用性能管理)
1.CAT: 由国内美团点评开源的,基于 Java 语言开发,目前提供 Java、C/C++、Node.js、Python、Go 等语言的客户端,监控数据会全量统计。
2.Zipkin: 由 Twitter 公司开发并开源,Java 语言实现。可以轻松与 Spring Cloud 进行集成,也是 Spring Cloud 推荐的 APM 系统。
3.Pinpoint: 韩国团队开源的 APM 产品,运用了字节码增强技术,只需要在启动时添加启动参数即可实现 APM 功能,对代码无侵入。目前支持 Java 和 PHP 语言,底层采用 HBase 来存储数据,探针收集的数据粒度非常细,但性能损耗较大,因其出现的时间较长,完成度也很高,文档也较为丰富,应用的公司较多。
4.SkyWalking: 国人开源的产品,2019 年 4 月 17 日 SkyWalking 从 Apache 基金会的孵化器毕业成为顶级项目。目前 SkyWalking 支持 Java、.Net、Node.js 等探针,数据存储支持MySQL、ElasticSearch等。SkyWalking 与 Pinpoint 相同,Java 探针采用字节码增强技术实现,对业务代码无侵入。探针采集数据粒度相较于 Pinpoint 来说略粗,但性能表现优秀。目前,SkyWalking 增长势头强劲,社区活跃,中文文档齐全,没有语言障碍,支持多语言探针,这些都是 SkyWalking 的优势所在,还有就是 SkyWalking 支持很多框架,包括很多国产框架,例如,Dubbo、gRPC、SOFARPC 等等,也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入 SkyWalking。
还有很多不开源的 APM 系统,例如,淘宝鹰眼、Google Dapper 等等,不再展开介绍了。
1
SkyWalking 的架构设计
如图所示,SkyWalking 官方架构图对 SkyWalking 的整体架构进行了非常直观的描述。SkyWalking 由以下 4 个核心部分构成。
SkyWalking官方架构图
探针。探针(对应图中Tracing和Mestrics部分)可以是语言探针,也可以是其他项目的协议。
OAP平台(Observability Analysis Platform),或称OAP Server。它是一个高度组件化的轻量级分析程序,由兼容各种探针的Receiver、流式分析内核和查询内核三部分构成。
存储实现(Storage Implementors)。SkyWalking的OAP Server支持多种存储实现,并且提供了标准接口,可以实现其他存储。
UI模块(SkyWalking)。通过标准的GraphQL协议进行统计数据查询和展现。
从设计角度而言,SkyWalking总体遵循以下三大设计原则:
面向协议设计
模块化设计
轻量化设计
1.1
面向协议设计
面向协议设计是 SkyWalking 从 5.x 开始严格遵守的首要设计原