APM 基础篇
1、什么是 APM?
APM,全称:Application Performance Management ,目前市面的系统基本都是参考 Google 的 Dapper(大规模分布式系统的跟踪系统)来做的,翻译传送门《google 的 Dapper 中文翻译》
思考下:不遵守该理论的是伪 APM,耍流氓吗?
APM 的核心思想是什么? 在应用服务各节点相互调用的时候,从中记录并传递一个应用级别的标记,这个标记可以用来关联各个服务节点之间的关系。比如两个应用服务节点之间使用 HTTP 作为传输协议的话,那么这些标记就会被加入到 HTTP 头中。可见如何传递这些标记是与应用服务节点之间使用的通讯协议有关的,常用的协议就相对容易加入这些内容,一些按需定制的可能就相对困难些,这一点也直接决定了实现分布式追踪系统的难度。
2、为什么要用 APM?
有业务痛点,才要寻求解决方案,个人认为,APM 需要优先解决测试环境下两个场景问题,基于测试先行的原则考虑:
优先关注宏观数据,并不是说测试人员无须关注微观层面的问题,在测试角度来看,先解决性能测试环境的数据采样、收集问题,再去评估生产环境,而线上的链路监控需要研发跟运维去配合,【研发角度场景】相对于测试人员来说是弱关注了。
3、市面上有哪些 APM 工具?
我创建了一个群Java互联网技术交流的地方:742991985
Pinpoint
Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
https://github.com/naver/pinpoint
SkyWalking
A distributed tracing system, and APM ( Application Performance Monitoring ) .
http://skywalking.org
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.