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 相关文章推荐
一篇带你入门Java垃圾回收器
Jun 16 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
springboot集成redis存对象乱码的问题及解决
Jun 16 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 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
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
解析php中反射的应用
2013/06/18 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
讲解Python中if语句的嵌套用法
2015/05/14 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
详解python3中tkinter知识点
2018/06/21 Python
python中下标和切片的使用方法解析
2019/08/27 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
大学毕业感言50字
2014/02/07 职场文书
小学生秋游活动方案
2014/02/23 职场文书
健康教育评估方案
2014/05/25 职场文书
房产授权委托书范本
2014/09/22 职场文书
结婚堵门保证书
2015/05/08 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
教研活动主持词
2015/07/03 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python