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 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
Java用自带的Image IO给图片添加水印
Jun 15 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
mybatis中sql语句CDATA标签的用法说明
Jun 30 Java/Android
Android开发实现极为简单的QQ登录页面
Apr 24 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
May 20 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 Java/Android
JDK8中String的intern()方法实例详细解读
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常用image图像函数集
2013/06/24 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHPMailer发送邮件
2016/12/28 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Python中static相关知识小结
2018/01/02 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
违反学校规定检讨书
2014/01/18 职场文书
留守儿童工作方案
2014/06/02 职场文书
小学课外阅读总结
2014/07/09 职场文书
工作说明书格式
2014/07/29 职场文书
市级三好学生评语
2014/12/29 职场文书
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL