一、背景
以前都是单体应用,都在一个系统内完成。而现在都是微服务,一个请求进来,需要调用多个服务才能完成。出了问题,我们很难定位到底在哪个环节出了问题。
二、作用
1.快速定位问题。通过调用链监控系统,我们能很快定位到哪个服务出了问题。
2.项目拓扑图。当服务越来越复杂时,我们都无法准确知道服务之间都依赖关系。通过调用链监控系统,我们能清晰的生成项目的网络拓扑图。
3.优化系统。通过调用链监控系统,我们可以随时监控哪些请求慢了,在哪个环节慢了,系统的瓶颈等等,从而作出相应的优化。
三、原理
我们需要了解调用链监控几个核心概念:
trace:一次分布式调用的链路踪迹
span:一个局部方法的调用踪迹
annotation:附属在span上的日志信息
sampling:采样率。
我们看一次链路追踪,其中有几个参数需要注意一下:
tid:一次链路请求的id,通过tid我们知道一次请求完整的调用路径。
sid:每个局部方法的id
pid:parent id,当前局部方法的父id。
四、常用调用链监控产品
我们现在市场上常用的链路监控系统有zipkin,点评的CAT,skywalking等。