一、APM简介
APM,全称:Application Performance Management,目前市面的系统基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)来做的。
二、APM的核心思想
在应用服务各节点相互调用的时候,从中记录并传递一个应用级别的标记,这个标记可以用来关联各个服务节点之间的关系。比如两个应用服务节点之间使用 HTTP 作为传输协议的话,那么这些标记就会被加入到 HTTP 头中。可见如何传递这些标记是与应用服务节点之间使用的通讯协议有关的,常用的协议就相对容易加入这些内容,一些按需定制的可能就相对困难些,这一点也直接决定了实现分布式追踪系统的难度。
三、为什么要用APM?
应用性能管理是一个比较新的网络管理方向,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO)。一个企业的关键业务应用的性能强大,可以提高竞争力,并取得商业成功,因此,加强应用性能管理(APM)可以产生巨大商业利益。
四、市面上APM工具
#1.Pinpoint
Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
地址:https://github.com/naver/pinpoint
#2.SkyWalking
A distributed tracing system, and APM ( Application Performance Monitoring ) .
地址:https://skywalking.apache.org/
#3.Zipkin
Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. Zipkin’s design is based on the Google Dapper paper.
地址:<http://zipkin.io/>
#4.CAT (大众点评)
CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。
地址:<https://github.com/dianping/cat>
五、APM工具对比
本质上 Spring Cloud Slueth 与 Pinpoint 没有可比性,真正对比的是Zipkin,Spring Cloud Slueth 聚焦在链路追踪和分析,将信息发送到Zipkin,利用 Zipkin的存储来存储信息,当然,Zipkin也可以使用ELK来记录日志和展示,再通过收集服务器性能的脚本把数据存储到ELK,则可以展示服务器状况信息了。Zipkin的总体展示,也是基于链路分析为主。
六、结论
目前比较贴合 Google Dapper 原理设计的,Pinpoint 优于 Zipkin。
Pinpoint对代码的零侵入,运用JavaAgent字节码增强技术,添加启动参数即可。
并且符合【测试角度场景】性能测试调优监控的宏观;