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 相关文章推荐
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
分析Java中Map的遍历性能问题
Jun 26 Java/Android
Java中常用解析工具jackson及fastjson的使用
Jun 28 Java/Android
elasticSearch-api的具体操作步骤讲解
Jun 28 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
浅谈Java父子类加载顺序
Aug 04 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
Android存储中最基本的文件存储方式
Apr 30 Java/Android
Spring 使用注解开发
May 20 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的类 功能齐全的发送邮件类
2006/10/09 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
学习php开源项目的源码指南
2014/12/21 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
PHP守护进程实例
2015/03/06 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
Python set集合类型操作总结
2014/11/07 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
大学生求职计划书
2014/04/30 职场文书
文明之星事迹材料
2014/05/09 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
户籍证明书标准模板
2014/09/10 职场文书
工作保证书怎么写
2015/02/28 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏