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异常处理流程及原理
Jun 21 Java/Android
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
mybatis中sql语句CDATA标签的用法说明
Jun 30 Java/Android
Java spring定时任务详解
Oct 05 Java/Android
正则表达式拆分url实例代码
Feb 24 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
Mar 21 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
tree shaking对打包体积优化及作用
Jul 07 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Sep 23 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP实现文件下载详解
2014/11/27 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
详解Golang 与python中的字符串反转
2017/07/21 Python
python实现多进程代码示例
2018/10/31 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
总经理秘书的岗位职责
2013/12/27 职场文书
幼儿园家长寄语
2014/04/02 职场文书
考察现实表现材料
2014/05/19 职场文书
文明班集体申报材料
2014/05/23 职场文书
2014年工程工作总结
2014/11/25 职场文书
个人党性锻炼总结
2015/03/05 职场文书
导游词之太湖
2019/10/08 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL