SkyWalking——全面认识Apache SkyWalking

全面认识Apache SkyWalking

  Apache SkyWalking 是中国首个、也是唯一一个发展成为 Apache 顶级项目的个人开源项目。Apache SkyWalking 作为业界最为领先的开源 APM 项目之一,提供了以往只有商业 APM 或者监控公司才具有的功能特性。

一、SkyWalking 介绍

  1.1 什么是SkyWalking?

  SkyWalking 是一个针对分布式系统的应用性能监控(Application Performance Monitor,APM)和可观测性分析平台(Observability Analysis Platform)。它提供了多维度应用性能分析手段,从分布式拓扑图到应用性能指标、Trace、日志的关联分析与告警。

  SkyWalking 针对的是微服务和分布式服务,包括现在的容器化。在这样的环境中,应用间依赖关系复杂多变,无论是设计、开发还是运维团队,都不具备对系统实际关系和运行情况的理解能力。主流大企业的内部系统都有十几个、几十个字系统,其中有上百个服务和上千个实例在运行,理解这套系统的依赖关系是 SkyWalking 要解决的第一个问题。

  同时,随着技术的革新和进步,分布式框架层出不穷,以 Spring Cloud、gRPC、Dubbo 为代表的多语言 RPC 框架是当今的主流,以 Istio+Envoy 为代表的 Servie Mesh 是未来发展的方向。统一的监控平台,对于用户理解复杂的分布式架构会起到至关重要的作用。

  最重要的是,SkyWalking 保证了在生产环境中高压力情况下的可用性。常规百亿级别的处理能力、轻量级、可插拔、方便定制,是 SkyWalking 在短短 3 年时间得到广泛应用的主要原因。

  1.2 SkyWalking 的适用场景?

  SkyWalking 是一个为微服务、容器化和分布式而生的高度组件化的 APM 项目。

  早在 2010 年 SOA 开始兴起时,应用系统开发人员就注意到,系统的调试过程越来越复杂,在线运行程序出现故障时,面临的问题定位已经很难使用传统日志进行排查。之后随着微服务兴起,去 IOE 及分布式架构的广泛采用,程序性能的监控和问题定位需求也越来越急迫。

  这正是 SkyWalking 项目诞生的出发点,SkyWalking 受 Google Dapper 论文启发,整合多个初创成员在 APM 和互联网公司的工作经验,设立了基于分布式追踪的应用性能监控解决方案。同时,针对中国业务流量大和系统研发团队的特点,SkyWalking 首先提出在生产大流量环境下支持100%追踪采样。SkyWalking 也是目前唯一一个提出此支持的 APM 系统。

    1.2.1 SkyWalking 不是一个单纯的追踪系统

  SkyWalking 首先是一个应用性能监控工具,它的目标是应用性能。在语言探针的场景下,具有自动化分布式追踪(distrbuted tracing)的能力,但这个能力是为应用性能监控服务。它提供了高性能、自动探针解决方案,支持轻量级分析拓扑图、应用性能指标等功能。而 Zipkin 和 Jaeger 都专注于追踪本身,得到尽可能细致的调用链,并建议在高流量时开启采用。

    1.2.2 SkyWalking 不是一个以大数据为基础的APM系统

  提到 APM,就不得不提早在 2012 年由韩国 Naver 公司开源的 APM 项目 Pinpoint。Pinpoint 和 SkyWalking 采用的技术栈反反映了其本质的差别:Pinpoint 立足于 HBase;SkyWalking 使用包括 Elasticsearch 在内的多种存储,却不支持任何一种大数据技术。

  SkyWalking 在 3 之后的版本中就完全放弃了大数据技术栈,根本原因是,作为 Ops 的核心系统之一,轻量级和灵活性被放在首要位置上。SkyWalking 以监控千亿级流量为基础要求,自己不能反而成为整个大型分布式系统的部署和运维难点,而大数据技术却适得其反,会大幅增加运维和部署难度。

  同时,SkyWalking 在超过 5000 TPS 下超级优良的性能,也是其与 Pinpoint 的较大区别。无论是官方测试还是网上大量性能对比都能够反映出巨大差异。SkyWalking 在设计之初,也是要保证探针能够在单进程 1 万 TPS 级别系统中,提供稳定的 100% 采样,以及合理的性能消耗(小于 10% 增幅)。高起点也要 SkyWalking 必须能够完成控制自己的技术栈和运算模型,使其完全符合 APM 计算的要求。

    1.2.3 SkyWalking 不是方法诊断系统

  首先,从技术角度上说,方法级别追踪是 SkyWalking  技术栈能够做到的技术,但是官方并推荐这样使用,特别是在生产环境中。方法级别追踪是性能诊断工具的工作,而不是 APM 系统要做的。APM 系统要求在有限要求在有限性能消耗下,在生产环境长时间低消耗运行,而方法监控会消耗大量的内存和性能,并不适合打流量系统。

  当然,SkyWalking 考虑到不同的团队的使用场景,在可选插件中提供了对 Srping 托管的类方法级别追踪。

  作为 APM 系统,SkyWalking 不建议做常规性新加 span 的方法诊断,而提供了更为高效合理的方式——性能剖析,用于生成环境的性能诊断。

    1.2.3 SkyWalking 能够追踪方法参数

  参数追踪和方法追踪类似,即使是针对 HTTP 请求的方法参数追踪,也会对应用系统和 APM 造成较大的压力。虽然目前Sky Walking 的部分插件(如 Mysql)支持用户手动开启参数追踪,但依然提醒用户,要注意考虑性能消耗。

  从 SkyWalking 7 新推出了性能诊断功能,方法参数会被自动捕捉。

 

posted @ 2021-03-10 09:57  左扬  阅读(3326)  评论(0编辑  收藏  举报
levels of contents