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将文件打包成zip存放或导出
Jun 11 Java/Android
浅析NIO系列之TCP
Jun 15 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
使用HttpSessionListener监听器实战
Mar 17 Java/Android
Spring Boot项目传参校验的最佳实践指南
Apr 05 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
JAVA springCloud项目搭建流程
May 11 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/07/05 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
一个JS翻页效果
2007/07/23 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
个人求职信范例
2014/01/29 职场文书
男女朋友协议书
2014/04/23 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
公司活动总结范文
2014/07/01 职场文书
班主任寄语2015
2015/02/26 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
Django REST framework 限流功能的使用
2021/06/24 Python
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
Spring中bean集合注入的方法详解
2022/07/07 Java/Android