dubbo全局一致性traceId

全局一致性traceId可用于dubbo调用链路追踪,刚好公司业务系统需要做操作日志追踪来做一次生产实践。

实现全局一致性traceId最简单的就是在方法中使用显示参数传入traceId,但是对代码侵入性太大,并且难以维护,不可取。

    dubbo SPI拓展与RpcContext里的attachments信息会填入到RpcInvocation对象中的特点为这一实现提供了一种可能。

1、创建traceId工具类TraceIdUtils

dubbo全局一致性traceId_第1张图片

使用ThreadLocal是因为可以随着线程的生命周期销毁。

2、实现com.alibaba.dubbo.rpc.Filter接口

dubbo全局一致性traceId_第2张图片

3、在resource目录下, 添加META-INF/dubbo目录, 继而添加com.alibaba.dubbo.rpc.Filter文件文件内容为:traceIdFilter=com.dubbo.addition.filter.TraceIdFilter

dubbo全局一致性traceId_第3张图片

4、dubbo springxml配置文件里添加对traceIdFilter的配置

依据dubbo官方说明可以按需配置:

dubbo全局一致性traceId_第4张图片

5、消费方调用provider方法前向RpcContext设置traceId

至此dubbo全局一致性traceId已经实现。核心点为dubbo SPI扩展自定义FIlter。本文234步骤即为自定义filter步骤。

dubbo官网:dubbo官网文档:过滤器扩展

你可能感兴趣的:(dubbo全局一致性traceId)