APM监控--(一) 分布式系统服务跟踪技术选型参考

选型目的

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

主要选型技术
        Zipkin
       Pinpoint

一,Zipkin


简介

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

实现

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

 

二,Pinpoint


简介

       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的展示界面要丰富的多,并且提供各种统计方式;
 

 相关部署手册:

pinpoint部署手册

zipkin部署手册



猜你喜欢

转载自blog.csdn.net/xvshu/article/details/79714134