• 分布式-技术专区-APM监控系统服务跟踪技术选型参考


    选型目的

      随着公司业务的与日俱增,各个系统也越来越复杂,服务间的调用,服务的依赖,以及分析服务的性能问题也越棘手,因此引入服务追踪系统尤为重要。现有的服务追踪体系,基本都是参考Google的Dapper的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪(每个请求的完整调用链路,收集调用链路上每个服务的性能数据),方便工程师能够快速定位问题。

    主要选型技术

    • Zipkin
    • Pinpoint

    一.Zipkin

    简介

      twitter开源出来的,参考Dapper的体系实现,为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪的目的。

    实现

      Zipkin的一个叫Brave的组件来实现对应用内部的性能分析数据采集,通过实现一系列的java拦截器,来做到对http/servlet请求、数据库访问的调用过程跟踪。然后通过在spring之类的配置文件里加入这些拦截器,完成对java应用的性能数据采集。

    简介

      twitter开源出来的,参考Dapper的体系实现,为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪的目的。

    实现

      Zipkin的一个叫Brave的组件来实现对应用内部的性能分析数据采集,通过实现一系列的java拦截器,来做到对http/servlet请求、数据库访问的调用过程跟踪。然后通过在spring之类的配置文件里加入这些拦截器,完成对java应用的性能数据采集。

    简介

      pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的。

    实现

      通过JavaAgent的机制来做字节码代码植入,实现加入traceid和抓取性能数据的目的。 

    三.对比

    侵入性

      pinPoint采用的是Java Agent向节点应用指定的函数前注入before和after逻辑,向服务器发送消息,因此基本不用修改代码,只需简单修改一下配置;--零侵入

      zipKin采用的是布点等方式,需要修改程序源码进行预埋点,相对麻烦一点;

      dubbo实现Filter、http新增拦截器等方式进行布点。 ---侵入、更灵活

    性能

      Pinpoint 采用二进制格式、异步、UDP的方式进行采样,zipkin异步传输。

    扩展性

      pinPoint原理是Java Agent,因此支持的模块不多,如下:

    • Tomcat 6/7/8, Jetty 8/9
    • Spring, Spring Boot
    • Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
    • Thrift Client, Thrift Service
    • MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL
    • Arcus, Memcached, Redis
    • iBATIS, MyBatis
    • gson, Jackson, Json Lib
    • log4j, Logback

      zipKin基本可以支持所有的应用、所有的语言,并接提供了各种客户端,例如java的brave客户端,js的zipkin-js客户端

    数据展示

      zipKin提供最简单的展示界面,只是简单的展示链路所用时间;

    pinPoint的展示界面要丰富的多,并且提供各种统计方式;

  • 相关阅读:
    异常
    vue子组件修改父组件vmodal传递回来的值 义美
    EXT2fs (ram0): error: ext2_get_inode: unable to read inode block inode=24582, block=98339
    软中断
    Xenomai source code analysis Chapter 1 xenomai_init
    Linux 内核源码分析之进程调度的逻辑
    Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
    mkintramfs mkinitrd initrd.img
    /lib/libgcc_s.so.1: version `GCC_3.5'
    alpine
  • 原文地址:https://www.cnblogs.com/liboware/p/12490582.html
Copyright © 2020-2023  润新知