自SpringCloud问世以来,微服务以席卷之势风靡全球,企业架构都在从传统SOA向微服务转型。然而微服务这把双刃剑在带来各种优势的同时,也给运维、性能监控、错误的排查带来的极大的困难。
在大型项目中,服务架构会包含数十乃至上百个服务节点。往往一次请求会设计到多个微服务,想要排查一次请求链路中经过了哪些节点,每个节点的执行情况如何,就称为了亟待解决的问题。于是分布式系统的APM管理系统应运而生。
什么是APM系统?
APM系统可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是APM系统,全称是(Application Performance Monitor)。
谷歌公开的论文提到的 Google Dapper可以说是最早的APM系统了,给google的开发者和运维团队帮了大忙,所以谷歌公开论文分享了Dapper。
而后,很多的技术公司基于这篇论文的原理,设计开发了很多出色的APM框架,例如Pinpoint、SkyWalking等。
而SpringCloud官网也集成了一套这样的系统:Spring Cloud Sleuth,结合Zipkin。
APM的基本原理
目前大部分的APM系统都是基于Google的Dapper原理实现,我们简单来看看Dapper中的概念和实现原理。
先来看一次请求调用示例:
1、服务集群中包括:前端(A),两个中间层(B和C),以及两个后端(D和E)
2、当用户发起一个请求时,首先到达前端A服务,然后A分别对B服