商丘做网站公司/宣传推广方案范文
一.对Spring Cloud Sleuth的简单理解
要知道在引入了微服务后,我们发起一个Http的请求,可能要经过多个服务节点,才能组合成我们想要的结果返回。在这条http请求的服务链路上要是随便哪个服务节点出现延迟或者错误,都会影响到最终的结果,所以这时全链路跟踪就显得很重要了。对于每个请求,我们都进行跟踪,可以及时发现错误根源,同时还能监控分析每条调用链上的性能瓶颈等。而Spring Cloud Sleuth就为我们实现了这个功能
二.Spring Cloud Sleuth的简单实现
项目结构简介:
可以看到,有3个服务,分别是RIBBON-CLIENT,EUREKA-CLIENT,EUREKA-CLIENT2
为每个服务引入Spring Cloud Sleuth依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency>
这里我用来测试服务追踪的服务调用顺序是:
RIBBON-CLIENT======》 EUREKA-CLIENT ======》EUREKA-CLIENT2
我在每个服务的接口里都打上了日志,以下简单截图,方便测试后对照:
RIBBON-CLIENT:
EUREKA-CLIENT:
EUREKA-CLIENT2:
三.浏览器访问 http://localhost:8764/ribbon/AA,测试下结果:
RIBBON-CLIENT:
EUREKA-CLIENT:
EUREKA-CLIENT2:
这里把关键信息复制出来做个解释:
INFO [ribbon-client,e883a57d82d58a67,e883a57d82d58a67,false]
INFO [eureka-client,e883a57d82d58a67,20a3c71416ef6824,false]
INFO [eureka-client2,e883a57d82d58a67,37b11aef33ce04de,false]
一列一列来解释:
- ribbon-client,eureka-client,eureka-client2很明显可以看出就是服务名,在配置文件里通过 spring.application.name参数配置的属性。
- e883a57d82d58a67,这里发现3个服务节点都有一样的值----- e883a57d82d58a67,它是Spring Cloud Sleuth生成的一个ID,被称作Trace ID,这个值被用来标识一条请求链路,如果值一样,说明是同一个请求,一个请求只会有一个Trace ID。
- e883a57d82d58a67,20a3c71416ef6824,37b11aef33ce04de这三个不同的值,它是Spring Cloud Sleuth生成的另一个ID,叫做Span ID,表示一个基本的工作单元,例如发起一个HTTP请求就是一个基本的工作单元,一个请求链路会有一个Trace ID,多个Span ID。
4.false,该值决定是否要将请求链路信息输出到Zipkin等服务中。