log trace (2) - springのsleuth 支持dubbo

spring-cloud-starter-sleuth 使用brave 的 Tracing 来实现日志trace输出
df08b0223bba97728bea13b5d202861ca10.jpg

使用方法

pom增加引用

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-sleuth</artifactId>
		<version>2.1.1.RELEASE</version>
	</dependency>

	<dependency>
		<groupId>io.zipkin.brave</groupId>
		<artifactId>brave-instrumentation-dubbo-rpc</artifactId>
		<version>5.6.0</version>
	</dependency>

dubbo增加配置

dubbo.provider.filter: tracing
dubbo.consumer.filter: tracing

此处的tracing 对应的是 brave-instrumentation-dubbo-rpc 包内的 文件com.alibaba.dubbo.rpc.Filter 配置的 brave.dubbo.rpc.TracingFilter 处理类。

源码解析

重要的几个配置类

  1. AsyncDefaultAutoConfiguration  
    ExecutorBeanPostProcessor postProcessAfterInitialization 将定义的AsyncTaskExecutor封装wrapAsyncTaskExecutor -> createAsyncTaskExecutorProxy 构建LazyTraceAsyncTaskExecutor对象  。 最主要的还是最终被TraceRunnable封装!
  2. SleuthAnnotationAutoConfiguration   SleuthAdvisorConfig  SleuthInterceptor  支持 @NewSpan @ContinueSpan

    SleuthInterceptor.invoke ->NonReactorSleuthMethodInvocationProcessor.proceedUnderSynchronousSpan -> Trace.withSpanInScope

  3. TraceAutoConfiguration  sleuthCurrentTraceContext方法  给 brave.propagation.CurrentTraceContext 绑定 Slf4jScopeDecorator
  4. SleuthLogAutoConfiguration  提供Slf4jScopeDecorator

TracingFilter

invoke -> Trace.withSpanInScope -> ThreadLocalCurrentTraceContext.newScope -> CurrentTraceContext.decorateScope -> Slf4jScopeDecorator.decorateScope

  在invoke时,先判定当前服务的是provider还是consumer。

 provider 则从RpcInvocation中的Attachments获取传入的TraceContext,并joinSpan到当前trace。

consumer 则从当前的Tracer中生成nextSpan,将nextSpan扔入TraceContext 中。

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3434392/blog/3096528

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值