dubbo服务整合zipkin详解


Posted in Java/Android onJuly 26, 2021

去年一直有想法将openTracing整合进自己的dubbo服务的想法。但是zipkin brave 对 dubbo的支持,没有更新到最新版本,所以一直没有行动。

目前zipkin支持的语言,以及框架如下图:具体可以参考官方网址

dubbo服务整合zipkin详解

dubbo服务整合zipkin详解

其中brave library 是一个java项目,提供了对主流web服务会用到的组件的支持,如dubbo,httpclient,mysql等。

另,SpringCloudSleuth,也是在zipkin brave 基础上的发展起来的一个分布式追踪系统,所以又多了一个整合zipkin的理由;

我在我自己的springWebMVC + Dubbo + Mysql + RocketMQ 的服务中,直接引入了spring-cloud-starter-zipkin

dubbo服务整合zipkin详解

可以看到引入spring-cloud-starter-zipkin会自动引入instrumentation的一些jar包,自动会对通过springWebMVC,httpClient进行的http通信进行链路跟踪;但是我需要添加对dubbo协议的支持,那么就需要额外引入brave-instrumentation-dubbo(针对dubbo有两个jar包可以使用,分别对应不同版本的dubbo,instrumentation-dubbo对应dubbo2.7.0以上,instrumentation-dubbo-rpc对应dubbo2.6.0以上2.7.0以下);引入jar包后,需要进行一些配置,如下zipkin的相关配置

#通过http协议上报tracing信息,这里的地址是zipkin服务的地址
#spring.zipkin.base-url=http://localhost:9411
#服务名称
spring.zipkin.service.name=my-consumer
#开启上报到zipkin服务,如果不开启的话,tracing信息还是会在不同服务中传递,只是不会上报的zipkin服务端
spring.zipkin.enabled=false
#使用默认 http 方式收集 span 需要配置此项
spring.zipkin.sender.type=web
#采样率,默认是0.1, 如果是1的话,代表百分之百采样
spring.sleuth.sampler.probability=1

关于dubbo的配置,只需要如下

#add tracing filter
dubbo.consumer.filter = tracing
#add tracing filter
dubbo.provider.filter = tracing

这样就可以在日志中加上traceId的输出,来更好的进行链路分析,%X{traceId}的写法,显然原理是放在MDC中;这样就只需要通过一个traceId就能分析代码全链路里都做了哪些事情,当然前提是你有记日志;

dubbo服务整合zipkin详解

如果你只是需要一个traceId来方便追踪日志,那么这里就已经可以了;如果还需要zipkin的链路分析功能,那么就需要搭建一个zipkin服务;可以直接在zipkin官网上找到docker启动zipkin的quickstart

然后在系统中进行相应配置即可访问http://localhost:9411查看;

dubbo服务整合zipkin详解

dubbo服务整合zipkin详解

dubbo服务整合zipkin详解

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

Java/Android 相关文章推荐
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
Java spring定时任务详解
Oct 05 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
spring IOC容器的Bean管理XML自动装配过程
May 30 Java/Android
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
Java使用HttpClient实现文件下载
Aug 14 Java/Android
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
用Java实现简单计算器功能
You might like
php实现简单洗牌算法
2013/06/18 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
繁简字转换功能
2006/07/19 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
angularjs基础教程
2014/12/25 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python中暂存上传图片的方法
2015/02/18 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
差生评语大全
2014/05/04 职场文书
小组名称和口号
2014/06/09 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
个人工作能力自我评价
2015/03/05 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
python中的装饰器该如何使用
2021/06/18 Python