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