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 相关文章推荐
Win10系统下配置Java环境变量
Jun 13 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
Java使用httpRequest+Jsoup爬取红蓝球号码
Jul 02 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Android开发实现极为简单的QQ登录页面
Apr 24 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Mybatis 一级缓存和二级缓存原理区别
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
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
jquery 手势密码插件
2017/03/17 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
vue实现循环切换动画
2018/10/17 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
python3 图片referer防盗链的实现方法
2018/03/12 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
广州一家公司的.NET面试题
2016/06/11 面试题
机械工程师的岗位职责
2013/11/17 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
档案工作汇报材料
2014/08/21 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
陕西导游词
2015/02/04 职场文书
支行行长岗位职责
2015/02/15 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
经济纠纷起诉状
2015/05/20 职场文书
团委副书记工作总结
2015/08/14 职场文书