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 22 Java/Android
Spring实现内置监听器
Jul 09 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java网络编程之UDP实现原理解析
Sep 04 Java/Android
Java使用Unsafe类的示例详解
Sep 25 Java/Android
Java 实现限流器处理Rest接口请求详解流程
Nov 02 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
Java由浅入深通关抽象类与接口(上篇)
Apr 26 Java/Android
springboot为异步任务规划自定义线程池的实现
Jun 14 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
app场景下uniapp的扫码记录
Jul 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中call_user_func_array的作用
2013/06/07 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python常用模块介绍
2014/11/21 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
python调用c++传递数组的实例
2019/02/13 Python
Python语言进阶知识点总结
2019/05/28 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
业务员简历自我评价
2014/03/06 职场文书
爱国演讲稿400字
2014/05/07 职场文书
十周年庆典策划方案
2014/06/03 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
趣味运动会开幕词
2015/01/28 职场文书
母亲节寄语大全
2015/02/27 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android