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 13 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
详解Android中的TimePickerView(时间选择器)的用法
Apr 30 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
May 20 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
Spring Boot实现文件上传下载
Aug 14 Java/Android
java获取一个文本文件的编码(格式)信息
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
对盗链说再见...
2006/10/09 PHP
PHP制作图型计数器的例子
2006/10/09 PHP
PHP 第一节 php简介
2012/04/28 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
Python实现动态图解析、合成与倒放
2018/01/18 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python中的取模运算方法
2018/11/10 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
方法名是否可以与构造器的名字相同
2012/06/04 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
国旗下演讲稿
2014/05/08 职场文书
伦敦奥运会口号
2014/06/13 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript