• 微服务-技术专区-监控专区(Skywalking与Pinpoint)


      由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比;

    选取skywalking和pinpoint对比的原因是:两者都使用探针(agent)技术进行信息采集,集成到项目内时不用修改业务代码,避免造成后期难以推进的问题;

    以下是进行的一些维度的对比,主要从功能性需求和非功能性需求方面做参考:

    功能性需求对比

    支持协议语言有

    Skywalking: Java、C#, PHP, Node 
    pinpoint:java,php

    UI的对比比较

    两种ui相类似,sw服务信息加载速度会快一些

    定制化与扩展性比较

    都可自定义plugin,使用探针,都可以进行扩展,据说sk扩展性更好

    存储

    Skywalking:支持各种类型存储,es,mysql,h2
    pinpoint:只支持hbase

     警告

    Skywalking:config/alarm-settings.xml设置警告规则

    pinpoint:需要额外引入mysql发送警告

    jvm监控

    都包含,pinpoint相对更全面一些,从页面查看比较类似   

    跟踪粒度

    需要使用对应的插件,可以到方法级,展示sql,每个方法调用的时间

    服务监控

    skywalking支持的维度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)

    Pinpoint支持的维度有:CPU使用率,Open File Descriptor,数据源,活动线程数,RT,TPS。pinpoint更多

    过滤追踪

    都是用ant风格,sw有对应的插件,更灵活

    性能损耗

    sw少于pinpoint所消耗的时间

    支持中间件

    Skywalking:  

    1.支持开源web容器

    2.RPC框架支持更多

    3.mq,多支持rocketMQ

    4.不支持mssql和mariadb

    5.redis支持Jedis,Redisson,Lettuce

    PinPoint:

    1.支持几乎所有web容器,

    2.少于sw

    4.RDBMS/nosql,好于sw

    5.不支持redisson

    6.不支持log4j2 

    非功能性需求对比


                                    skywalking                                                     pinpoint

    是否需要修改代码          不需要                                                          不需要

    相关文档                   官网文档比较全,支持中文,apache支持             英文文档

    社区                            社区活跃,发起人是中国人                      韩国人开发,活跃程度类似

    发布方式                   使用jar包,start.sh脚本启动                        使用war包,依赖web容器

    github start 数     9.1k                   8.8k


    总结

    skywalking对国产软件的支持好于Pinpoint;

    Pinpoint的优势在于:追踪数据粒度非常细、功能强大的用户界面,以及使用HBase作为存储带来的海量存储能力。

    skywalking的优势在于:非常活跃的中文社区,支持多种语言的探针,对国产开源软件非常全面的支持,以及使用es作为底层存储带来的强大的检索能力,并且skywalking的扩展性以及定制化要更优于Pinpoint

      从整体上来讲,在进行演示和讨论的时候,大家普遍认为,skywalking的界面比较现代化一些,pinpoint的功能更为强大;其他一些方面提出的问题,待近期补充:后边需要继续调研的点:

    1.对公司现有技术栈,两种方案的支持情况;

    2.扩展性及如何进行扩展,扩展之后可以做哪些内容;

    3.采样率如何配置

    4.保存时间

    5.采样的策略

    6.agent开发方法

    7.数据是否有遵循标准

    8.nginx是否支持

      另外,再讨论的过程中,提到了一些问题,有同事提出是否可以用这个工具定位线上的具体都某一次请求的问题? 答案是否定的,因为全链路追踪的定位是展示整体服务调用的拓扑图,能够从宏观描述服务请求链路中哪个环节比较慢,给开发者提供优化程序的一个方向;

      对于性能消耗,大家也有一些不同的看法,有的业务方,对于20%的性能损耗是不敏感的,但是对于当前线上已经负载比较高,且经常有线上问题的系统,还需要性能消耗方面的调研;

    5.zipkin

    java by twitter,collector 收集器、storage 存储、api 查询api-ui 界面,jdk8 required

    接入应用

    1.引入zipkin maven dependency

    2.java coding ,before after增强自动拦截,把config配置好即可。

    public Brave brave(SpanCollector spanCollector){

      Builder builder = new Builder("service2");//指定serviceName

      builder.spanCollector(spanCollector);

      builder.traceSampler(Sampler.create(1));//采集率

      return builder.build();
    }

    6.TODO ONEAPM 优秀产品实现分析(insight全家桶)、腾讯bk-ci、   Prometheus

  • 相关阅读:
    react-native-code-push进阶及实践小结
    Redux 基础
    iOS启动图异常修复方案 -(baidu)
    pod init
    Texture的异步渲染和布局引擎
    iOS 12.1 Tabbar 跳动Bug
    基本绘图的几种方式
    OC 小代码块
    OC基础--类的本质
    OC基础--构造方法 id类型
  • 原文地址:https://www.cnblogs.com/liboware/p/11991864.html
Copyright © 2020-2023  润新知