spring-cloud Sleuth的使用方法

2019-09-13 11:32:15王旭

Slf4jCurrentTraceContext的delegate使用的就是一个InheritableThreadLocal,InheritableThreadLocal在创建子线程的时候,会将父线程的inheritableThreadLocals继承下来。这样就实现了TraceContext在父子线程中的传递。

看一下CurrentTraceContext的maybeScope:

 //返回一个新的scope,如果当前scope就是传入的scope,返回一个空scope
 public Scope maybeScope(@Nullable TraceContext currentSpan) {
  //获取当前TraceContext
  TraceContext currentScope = get();
  //如果传入的TraceContext为空,且当前TraceContext为空返回空scope
  if (currentSpan == null) {
   if (currentScope == null) return Scope.NOOP;
   return newScope(null);
  }
  return currentSpan.equals(currentScope) ? Scope.NOOP : newScope(currentSpan);
 }

TracingFilter中HttpServerHandler解析Request:请输入代码

2.srvA请求到servB时作为Client。

TraceLoadBalancerFeignClient-->LoadBalancerFeignClient-->FeignLoadBalancer-->LazyTracingFeignClient-->Client

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。