springcloud sleuth

Posted 欧欧专栏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud sleuth相关的知识,希望对你有一定的参考价值。

基本术语

Spring Cloud Sleuth 采用了 Google 开源项目 Dapper 专业术语:
   1) Span 基本工作单元,发送 个远程调度任务就会产生一个 Span, Span 是用 一个64ID 标识的, Trace 是用另 一个64 ID 标识的。span 还包含了其他的信息,例如摘要、时间戳事件 Span 及进程 ID
   2) Trace :由 系列 Span 组成的,呈树状结构。请求一个微服务系统的 API ,这个API 接口需要调用多个微服务单元,调用 一个微服务单元都会产生 一个新的 span, 所有由这个请求产生 Span 组成了这个 Trace
   3) Annotation :用于记录 个事件, 一些核 注解用于定义 一个请求的开始和结束,这些注解如下:
       cs-Client Sent 客户端发送 一个请求,这个注解描述了 Span 的开始。
       sr-Server Received :服务端获得请求并准备开始处理它,如果将其 减去 cs 时间戳,便可得到网络传输的时间。
       ss-Server Sent :服务端发送响应, 该注解表明请求处理的完成(当请求返回客户端),用ss的时间戳减 sr 时间戳,便可以得到服务器响应的时间。
       cr-Client Received 客户端接收响应, 此时 Span 结束,如果cr 的时间戳减去 cs 时间戳,便可以得到整个请求所消耗的时间。
 

实例

项目结构图

zipkin-server模块

引入依赖

        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-server</artifactId>
        </dependency>
        <dependency>
            <groupId>io.zipkin.java</groupId>
            <artifactId>zipkin-autoconfigure-ui</artifactId>
        </dependency>

 

配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 9411
spring:
  application:
    name: zipkin-server

 

启动类添加注解

@EnableZipkinServer

 

 

网关服务模块 gateway-serice

引入依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
            <version>RELEASE</version>
        </dependency>

 

配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

server:
  port: 5000
spring:
  application:
    name: gateway-service
  sleuth:
    sampler:
      percentage: 1.0
  zipkin:
    base-url: http://localhost:9411

zuul:
  routes:
    api-a:
      path: /user-api/**
      serviceId: user-service
    api-b:
      path: /user-api02/**
      serviceId: user02-service

 

启动类添加注解

无需添加其它注解

 

 

服务提供者,服务消费者user-service模块

引入依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
            <version>RELEASE</version>
        </dependency>

配置文件

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8762
spring:
  application:
    name: user-service
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      percentage: 1.0

#这个可以不写
#spring.zipkin.base-url=http://localhost:9411   

 

启动类添加注解

无需添加其它注解

测试

依次启动项目,浏览器输入网关请求,访问zipkin  http://localhost:9411/

 

 

服务链路数据存储

服务链路数据可以存储到 rabbitMQ ,数据库或elasticSearch服务器上。只要简单的集成到zipkin-server模块上即可

以上是关于springcloud sleuth的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud之链路追踪整合Sleuth(十三)

SpringCloud实战-Sleuth

开启springcloud全家桶9:springcloud的分布式链路追踪利器 Sleuth

Springcloud集成Sleuth

SpringCloud Sleuth 使用

SpringCloud组件之sleuth和zipKin的使用