服务追踪
SpringCloudSleuth链路追踪
使用场景,当我们调用服务时,经常会遇到接口响应时间长,需要优化等问题,
比如:
A服务调用B服务,A服务发现调用B服务时响应时间过长,A以为B的服务需要优化,然而B服务又调用了C服务,C服务才是需要优化的!A-》B-》C这就是一整条链路。当链路越来越多,追踪服务显得极其困难。
微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。
随着服务的越来越多,对调用链的分析会越来越复杂。它们之间的调用关系也许如下:
当面对这种庞大及密集的业务时,我们排查问题时,如何才能快速的定位某一条链路的某一个服务呢?这就是SpringCloudSleuth所要解决的问题!
简介
Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging requests.
—— 摘自官网(可以点击哦)
Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。
集成步骤
调用端及被调用端引入依赖
org.springframework.cloud
spring-cloud-starter-sleuth
访问测试接口:
观察后台日志:
[consumer,xxxxxxxx,xxxxxxxxxxxxxxxxx,false]
Trace Id:它是SpringCloudSleuth生成的一个ID,称为Trace ID,它用来标识一条请求链路,一条请求链路中包含一个Trace
服务/调用/xxx/Spring/接口/链路/Cloud/越来越/追踪/引入/
服务/调用/xxx/Spring/接口/链路/Cloud/越来越/追踪/引入/
-->