zoukankan      html  css  js  c++  java
  • 全链路追踪技术选型:pinpoint vs skywalking

    目前分布式链路追踪系统基本都是根据谷歌的《Dapper大规模分布式系统的跟踪系统》这篇论文发展而来,主流的有zipkin,pinpoint,skywalking,cat,jaeger等。

    本次APM系统选型主要对比pinpoint和skywalking。直接否定了zipkin和cat。因为zipkin和cat对代码有一定的侵入性,这是我不能接受的。而pinpoint和skywalking都是基于字节码注入技术,可以做到完全的代码无侵入。对现有系统的改造极小。

    1,社区比较

    skywalking最近刚刚完成apache孵化,已成为 Apache 基金会顶级项目。skywalking完全由国人主导开发,在国内社区相当活跃。我们能够进入官方群(Apache SkyWalking交流群:392443393)和项目发起人吴晟零距离沟通,很多问题能第一时间得到大家的帮助(玩过开源的都知道,这个价值有多大)。

    pinpoint是韩国公司开发,在社区交流上会有一定滞后。

    在社区角度比较,skywalking是完全占优的。

    2,支持语言比较

    Pinpoint只支持Java和PHP,而skywalking支持5种语言:Java, C#, PHP, Node.js, Go。如果公司的服务涉及到多个开发语言,那么skywalking会是你更好的选择。并且,如果你要实现自己的探针(比如python语言),skywalking的二次开发成本也比Pinpoint更低。

    3,存储比较

    在大数据方面,底层存储架构决定上层功能。

    pingpoint只支持hbase,这就意味着,使用pinpoint必须有能力运维住一套Hbase集群。

    skywalking支持es,h2,mysql,TiDb,sharding-sphere。可选类型比较多,可以根据自己团队的技术实力选择。其实生产上来说还是用es的较多。

    hbase和es比较,hbase强在存储能力,es强在查询能力。

    4,UI比较

    原生ui上比较,pinpoint要比skywalking好。

    但是skywalking有一款第三方定制UI,做的又比pinpoint漂亮

    5,JVM监控

    skywalking支持监控:Heap, Non-Heap, GC(YGC和FGC)。 Pinpoint能够监控的指标主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory,但是没有YGC。另外,Pinpoint还支持多个指标同一时间点查看的功能。如下图所示:

    所以,对JVM的监控方面,Pinpoint更胜一筹。

    6,服务监控

    包括操作系统,和部署的服务实例的监控。 Pinpoint支持的维度有:CPU使用率,Open File Descriptor,数据源,活动线程数,RT,TPS。 skywalking支持的维度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)。 所以,这方面两者旗鼓相当,没有明显的差距。

    7,跟踪粒度比较

    Pinpoint在这方面做的非常好,跟踪粒度非常细。如下图所示,是Pinpoint对某个接口的trace信息:

    而同一个接口skywalking的trace信息如下图所示:

    通过对比发现,在跟踪粒度方面,Pinpoint更胜一筹。

    8,过滤追踪

    Pinpoint和skywalking都可以实现,而且配置的表达式都是基于ant风格。 Pinpoint在Web UI上配置 filter wizard 即可自定义过滤追踪。 skywalking通过加载apm-trace-ignore-plugin插件就能自定义过滤跟踪,skywalking这种方式更灵活,比如一台高配服务器上有若干个服务,在共用的agent配置文件apm-trace-ignore-plugin.config中可以配置通用的过滤规则,然后通过-D的方式为每个服务配置个性化过滤。

    所以,在过滤追踪方面,skywalking更胜一筹。

    总结

    经过前面对skywalking和Pinpoint全方位对比后我们发现,对于两款非常优秀的APM软件,有一种既生瑜何生亮的感觉。Pinpoint的优势在于:追踪数据粒度非常细、功能强大的用户界面,以及使用HBase作为存储带来的海量存储能力。而skywalking的优势在于:非常活跃的中文社区,支持多种语言的探针,对国产开源软件非常全面的支持,以及使用es作为底层存储带来的强大的检索能力,并且skywalking的扩展性以及定制化要更优于Pinpoint:

    如果你有海量的日志存储需求,推荐Pinpoint。如果你更看重二次开发的便捷性,推荐skywalking。最后,参考上面的对比,结合你的需求,哪些不能妥协,哪些可以舍弃,从而更好的选择一款最适合你的APM软件。

  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/duanxz/p/11797972.html
Copyright © 2011-2022 走看看