调用链跟踪包括
1.前端到后端的调用链
2.单个服务内部方法之间的调用链
3.微服务之间的调用链
4.应用服务和数据库之间的调用链
5.应用服务和第三方服务中间的调用链,例如Redis,MQ
调用链跟踪的作用有:
1.定位多个微服务调用故障时哪个是故障点。
2.性能分析
3.SQL分析
4.方法或服务调用合理性分析
5.调用逻辑和数据流分析,这点对于新人特别有用,看了调用链和执行SQL就知道具体做了啥
那么调用链跟踪涉及到需求有哪些,看图:
1.前端到后端以及多个微服务之间需要将调用信息传递过去,否则调用链会断掉
2.每个微服务要能获取到调用栈,注意调用栈和调用顺序不同,仅仅获取调用顺序是不够的,试比较:
左图只体现了调用顺序,没有体现调用栈信息,而右图既体现了调用顺序又体现了调用栈信息。
3.微服务内部的调用信息要能传递,并且做到无侵入
4.和数据库交互的微服务要能获取到调用的SQL
1) 前端只要在发送请求时设置就好。不过通常一般不跟踪前端的调用耗时,因为那样会多一次网络交互。
2) 对于微服务需要拦截request请求将调用链信息设置到消息头中,在spring中可以通过写RestTemplate拦截器和Fegin拦截器来实现。
end.
加入《Java栈实战营》知识星球,参与讨论,更多实战代码分享,不就是几近苹果,几个荣耀道具的事吗!