springcloud链路追踪

2019-11-27  本文已影响0人  源码互助空间站

一、springcloud sleuth要解决的问题

1、服务追踪,一条链路上的所有处理给统一的TraceID,通过这个唯一的标识就可以找到完整的链路

2、每一个微服务的节点处理再给独立的spanID,这样请求合适到达,合适离开节点都有追踪的依据,可以算出时间差

二、项目整合sleuth

1、在需要使用链路追踪的项目里添加依赖

2、log4j.xml引入链路追踪数据

这里是4个参数,sleuth在源码里已经定义了这4个参数,可以直接使用。

3、异步线程池

在这里我们继承了AsyncConfigurerSupport指定了具体的异步执行器,使用LazyTraceExecutor 确保traceId和spanId正确的传递,同时给类加上@EnableAsync 注解。

这里异步方法必须实现sleuth的线程池,要不前traceId和spanId不能传递。

三、测试追踪

1、按顺序启动eureka->feginclient->feginserver

2、访问接口http://localhost:7070/feignclient/feignTest1

这里会经历 单线程->异步县城->fegin

四、问题

1、无法实现mq队列消息的追踪

补充:后续已经实现消息队列的链路追踪。

上一篇下一篇

猜你喜欢

热点阅读