美文网首页k8s
分布式系统的应用程序性能监视工具Skywalking

分布式系统的应用程序性能监视工具Skywalking

作者: 羋学僧 | 来源:发表于2022-07-21 19:07 被阅读0次

    微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。

    今天主要介绍Skywalking,数据链路追踪,主要的资料来源于网上的教程。

    链路追踪介绍

    对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一系列问题。

    • 如何串联整个调用链路,快速定位问题?
    • 如何澄清各个微服务之间的依赖关系?
    • 如何进行各个微服务接口的性能分析?
    • 如何追踪各个业务流程的调用处理顺序?

    Skywalking介绍

    Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
    Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

    链路追踪框架对比

    目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的

    功能和技术方案对比

    • Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。

    • 一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多

    • Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。

    • CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。

    性能对比

    模拟了三种并发用户,500,750,1000,使用JMeter测试,每个线程发送30个请求,设置间隔时间为10ms,使用采用频率为1,即100%。下面是性能测试报告:

    从上表可以看出,在三种链路监控组件中,skywalking探针对吞吐量影响最小,zipkin对吞吐量影响适中,pinpoint的探针对吞吐量影响最大。对于内存和cpu的使用,都差不多,相差在10%之内。

    Skywalking介绍

    Skywalking架构

    SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面。

    • 探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
    • 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标用于扩展度量的计量系统 自定义聚合分析。
    • 存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
    • UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

    Skywalking功能介绍

    • 多种监控手段,可以通过语言探针和service mesh获得监控的数据
    • 支持多重语言的自动探针,包括JAVA, .NET Core和NodeJS
    • 轻量高效,无需大数据平台和大量的服务器资源
    • 模块化,UI ,存储,集群管理都有多种机制可选
    • 支持告警
    • 优秀的可视化解决方案

    相关文章

      网友评论

        本文标题:分布式系统的应用程序性能监视工具Skywalking

        本文链接:https://www.haomeiwen.com/subject/mnqpirtx.html