dubbo集成zipkin获取Traceid的实现


Posted in Java/Android onJuly 26, 2021

dubbo集成zipkin获取Traceid

dubbo集成zipkin有java的客户端brave,实现原理的通过定义Filter来实现的,然后通过RpcContext.getContext().getAttachments()来获取,通过RpcContext.getContext()来传递。

按照dubbo官网的博客配置了这个MDCScopeDecorator应该就可以做在日志里面使用[%X{traceId}/%X{spanId}来打印了,但是我的一致打印不出来,不知道为啥,然后就想了一个折中的方法。

<bean id="tracing" class="brave.spring.beans.TracingFactoryBean">
        <property name="localServiceName" value="hello-service"/>
        <property name="spanReporter">
            <bean class="zipkin2.reporter.beans.AsyncReporterFactoryBean">
                <property name="sender" ref="sender"/>
                <!-- wait up to half a second for any in-flight spans on close -->
                <property name="closeTimeout" value="500"/>
            </bean>
        </property>
        <property name="currentTraceContext">
            <bean class="brave.spring.beans.CurrentTraceContextFactoryBean">
                <property name="scopeDecorators">
                    <bean class="brave.context.slf4j.MDCScopeDecorator" factory-method="create"/>
                </property>
            </bean>
        </property>
    </bean>

一、dubbo中使用zipkin获取traceid折中方法

zipkin集成dubbo就是扩展了dubbo的filter过滤器,在执行了TracingFilter之后呢,rpc的上下文RpcContext.getContext().getAttachments()里面就有这些traceId和spanId了,可以使用类似ThreadLocal这样的保存在当前线程的上下文里面,然后在使用的地方获取一下。

具体实现:

再自定义一个dubbo的过滤器,挂在zipkin的过滤器的后面,类似这样,挂两个过滤器,自定义的过滤器放在zipkin的过滤器的后面,在自定义的过滤器使用RpcContext.getContext().getAttachments()获取前面那个zipkin过滤器里面的自定义参数。

dubbo集成zipkin获取Traceid的实现dubbo集成zipkin获取Traceid的实现

方法二

如果使用的springboot项目直接使用spring-cloud-starter-zipkin来打印更方便,并且可以直接在代码里获取traceId和spanId

dubbo集成zipkin获取Traceid的实现

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
SpringBoot中HttpSessionListener的简单使用方式
Mar 17 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 Java/Android
Netty分布式客户端接入流程初始化源码分析
Mar 25 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
Java 数组的使用
May 11 Java/Android
Spring 使用注解开发
May 20 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 Java/Android
volatile保证可见性及重排序方法
Aug 05 Java/Android
dubbo服务整合zipkin详解
spring boot中nativeQuery的用法
Jul 26 #Java/Android
java泛型通配符详解
Jul 25 #Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 #Java/Android
SpringRetry重试框架的具体使用
Java反应式框架Reactor中的Mono和Flux
关于springboot 配置date字段返回时间戳的问题
Jul 25 #Java/Android
You might like
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
jQuery知识点整理
2015/01/30 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
Python 字符串定义
2009/09/25 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python修改列表值问题解决方案
2020/03/06 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
大学生物业管理求职信
2013/10/24 职场文书
师范院校学生自荐信范文
2013/12/27 职场文书
工程招投标邀请书
2014/01/30 职场文书
初一学生评语大全
2014/04/24 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server