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 相关文章推荐
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
JUnit5常用注解的使用
Jul 02 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
SpringCloud Function SpEL注入漏洞分析及环境搭建
Apr 08 Java/Android
JavaWeb Servlet开发注册页面实例
Apr 11 Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
Jun 16 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教程 基本语法
2009/10/23 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
PHP7新特性
2021/03/09 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python实现的文件同步服务器实例
2015/06/02 Python
python学习 流程控制语句详解
2016/06/01 Python
python删除某个字符
2018/03/19 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
数控技术专业推荐信
2013/11/01 职场文书
新学期校长寄语
2014/01/18 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
企业党员公开承诺书
2014/03/26 职场文书
公务员培的训心得体会
2014/09/01 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
工程安全生产协议书
2014/11/21 职场文书
保护环境的宣传语
2015/07/13 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
python Tkinter模块使用方法详解
2022/04/07 Python