dubbo服务整合zipkin详解

去年一直有想法将openTracing整合进自己的dubbo服务的想法。但是zipkin brave 对 dubbo的支持,没有更新到最新版本,所以一直没有行动。

目前zipkin支持的语言,以及框架如下图:具体可以参考官方网址

其中brave library是一个java项目,提供了对主流web服务会用到的组件的支持,如dubbo,httpclient,mysql等。

另,SpringCloudSleuth,也是在zipkin brave 基础上的发展起来的一个分布式追踪系统,所以又多了一个整合zipkin的理由;

我在我自己的springWebMVC + Dubbo + Mysql + RocketMQ 的服务中,直接引入了spring-cloud-starter-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就能分析代码全链路里都做了哪些事情,当然前提是你有记日志;

如果你只是需要一个traceId来方便追踪日志,那么这里就已经可以了;如果还需要zipkin的链路分析功能,那么就需要搭建一个zipkin服务;可以直接在zipkin官网上找到docker启动zipkin的quickstart

然后在系统中进行相应配置即可访问http://localhost:9411查看;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot通过整合Dubbo解决@Reference注解问题

    首先检查一下你的spring boot版本是多少? 如果是2.X 不用看了,spring boot 2.x 必定会出现这个问题, 改为 1.5.9 或其他1.x版本,目前生产环境建议使用1.x版本. <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9

  • 详解SpringBoot开发案例之整合Dubbo分布式服务

    前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 xml 配置方式. 改造前 之前在 SpringBoot 中使用 Dubbox是这样的.先简单记录下版本,Dubbox-2.8.4.zkclient-0.6.zookeeper-3.4.6. 项目中引入 spring-context-dubbo.xml 配置文件如下: <?xml versio

  • SpringBoot与Dubbo整合的方式详解

    1. 使用默认application.properties和注解的方式 导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用@Reference来引用服务.具体可参考 Dubbo整合SpringBoot,这里截取部分代码方便理解. 属性在application.properties中配置 服务提供方使用@Service注解暴露服务 部分配置如"timeout"等可以在注解上添加 服务消费方使用@Referenc

  • SpringBoot2.0 整合 Dubbo框架实现RPC服务远程调用方法

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互. 2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点. 3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用. 4)图中只包含 RPC

  • dubbo服务整合zipkin详解

    去年一直有想法将openTracing整合进自己的dubbo服务的想法.但是zipkin brave 对 dubbo的支持,没有更新到最新版本,所以一直没有行动. 目前zipkin支持的语言,以及框架如下图:具体可以参考官方网址 其中brave library是一个java项目,提供了对主流web服务会用到的组件的支持,如dubbo,httpclient,mysql等. 另,SpringCloudSleuth,也是在zipkin brave 基础上的发展起来的一个分布式追踪系统,所以又多了一个整

  • java开发分布式服务框架Dubbo服务引用过程详解

    目录 大致流程 服务引用策略 服务引用的三种方式 服务引入流程解析 总结 大致流程 Provider将服务暴露出来并且注册到注册中心,而Consumer通过注册中心获取Provider的信息,之后将自己封装成一个调用类去与Provider进行交互. 首先需要将所有调用转化为Dubbo中我们熟悉的Invoker,再通过代理类去远程获取服务. 大致流程如下: 服务引用策略 服务的引用和服务的暴露原理相似,都是Spring自定义标签机制解析生成对应的Bean,在之前服务暴露使用到的Provider S

  • Dubbo+zookeeper搭配分布式服务的过程详解

    目录 分布式架构: Dubbo 是什么 Dubbo: 思想: 依赖: 分布式架构: 1.当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,前端应用能更快速的响应多变的市场需求. 2.此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键. Dubbo 是什么 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 Dubbo: 作为分布式架构比较后的框架,同时也是比较容易入手的框架,适合作为分布式的入手框架,下

  • Springboot整合minio实现文件服务的教程详解

    首先pom文件引入相关依赖 <!--minio--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency> springboot配置文件application.yml 里配置minio信息 #minio配置 minio: endpo

  • 如何优雅的进行Spring整合MongoDB详解

    前言 本文重点是要将mongodb与spring整合到项目中去,在实践中发现问题,追踪问题,然后解决问题.下面话不多说了,来一起看看详细的介绍吧. 一.准备 Maven.Spring(spring-data-mongodb) spring Data for MongoDB是Spring Data的一个子模块. 目标是为mongodb提供一个相近的一致的基于Spring的编程模型. Spring Data for MongoDB核心功能是映射POJO到Mongo的DBCollection中的文档,

  • Linux下sshd服务及服务管理命令详解

    sshd SSH为Secure Shell的缩写,是应用层的安全协议.SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议.利用SSH协议可以有效防止远程管理过程中的信息泄露问题. openssh-server 功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell 客户端连接方式 ssh 远程主机用户@远程主机ip 先rm -rf /root/.ssh/清掉之前的配置 ssh 远程主机用户@远程主机ip -X 调用远程主机图形工具 ssh 远程主机用户@远程主机ip

  • SpringBoot如何整合nacos详解

    一.什么是nacos nacos支持基于dns和基于rpc的服务发现,可以作为springCloud的注册中心.动态配置服务.动态dns服务. nacos注册中心分为server和client,server采用java编写,为client提供注册发现与配置服务. 二.快速使用 下载中间件:https://nacos.io/zh-cn/docs/quick-start.html 因为推荐使用的是2.0.1版本,我这里下载2.0.1版本. 注意:下载文件放在英文目录下 三.启动nacos 解压nac

  • Spring boot admin 服务监控利器详解

    目录 一.简介 二.搭建 1.服务端 2.客户端 3.启动项目 4.客户端配置 3.微服务 3.1.服务端 3.2.客户端 4.我的微服务预警发送其他服务状态信息思路 一.简介 用于对 Spring Boot 应用的管理和监控.可以用来监控服务是否健康.是否在线.以及一些jvm数据等等.Spring Boot Admin 分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用 http 通讯方式实现数据交

  • springboot与mybatis整合实例详解(完美融合)

    简介 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目.它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用.Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合.大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来. Spring Boot 包含的特性如下: 创建可以独立运行的 Spring 应用. 直接嵌入 Tomc

  • Mysql 5.7.18安装方法及启动MySQL服务的过程详解

    MySQL 是一个非常强大的关系型数据库.但有些初学者在安装配置的时候,遇到种种的困难,在此就不说安装过程了,说一下配置过程.在官网下载的MySQL时候,有msi格式和zip格式.Msi直接运行安装即可,zip则解压在自己喜欢的目录地址即可.在安装这两种的时候,都需要配置才能用.以下介绍主要是msi格式默认的地址:C:\Program Files\ mysql-5.7.18-win32. 一.在安装或者解压后,需要配置环境变量,过程如下:我的电脑->属性->高级系统设置->高级->

随机推荐