SpringCloud Sleuth 使用

1. 介绍

  Spring-Cloud-Sleuth是Spring Cloud的组成部分之一,为SpringCloud应用实现了一种分布式追踪解决方案,其兼容了Zipkin, HTrace和log-based追踪

相关说明: zipkin

Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)

span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

Trace:一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace。

Annotation:用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束

  • cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
  • sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
  • ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
  • cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间

将Span和Trace在一个系统中使用Zipkin注解的过程图形化:

2. 使用

使用http://start.spring.io/  生成项目

pom.xml  文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.example</groupId>
  6. <artifactId>zipkinclient</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>zipkinclient</name>
  10. <description>Demo project for Spring Boot</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.4.3.RELEASE</version>
  15. <relativePath/> <!-- lookup parent from repository -->
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <dependency>
  24. <groupId>org.springframework.cloud</groupId>
  25. <artifactId>spring-cloud-starter-sleuth</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.cloud</groupId>
  29. <artifactId>spring-cloud-starter-zipkin</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-web</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-test</artifactId>
  38. <scope>test</scope>
  39. </dependency>
  40. </dependencies>
  41. <dependencyManagement>
  42. <dependencies>
  43. <dependency>
  44. <groupId>org.springframework.cloud</groupId>
  45. <artifactId>spring-cloud-dependencies</artifactId>
  46. <version>Camden.BUILD-SNAPSHOT</version>
  47. <type>pom</type>
  48. <scope>import</scope>
  49. </dependency>
  50. </dependencies>
  51. </dependencyManagement>
  52. <build>
  53. <plugins>
  54. <plugin>
  55. <groupId>org.springframework.boot</groupId>
  56. <artifactId>spring-boot-maven-plugin</artifactId>
  57. </plugin>
  58. </plugins>
  59. </build>
  60. <repositories>
  61. <repository>
  62. <id>spring-snapshots</id>
  63. <name>Spring Snapshots</name>
  64. <url>https://repo.spring.io/snapshot</url>
  65. <snapshots>
  66. <enabled>true</enabled>
  67. </snapshots>
  68. </repository>
  69. <repository>
  70. <id>spring-milestones</id>
  71. <name>Spring Milestones</name>
  72. <url>https://repo.spring.io/milestone</url>
  73. <snapshots>
  74. <enabled>false</enabled>
  75. </snapshots>
  76. </repository>
  77. </repositories>
  78. </project>

3. 编写调用service

都是spring rest  service

  1. @RequestMapping("/demo")
  2. public String getinfo(){
  3. LOG.log(Level.INFO, "RestDemo demo backend is being called");
  4. return "dalongdemo";
  5. }
  6. @Bean // 此处可以使用配置说明
  7. public Sampler defaultSampler() {
  8. return new AlwaysSampler();
  9. }
  10. }

4. 调用方式:

  1. public class FirstController {
  2. @Autowired
  3. public RestTemplate restTemplate;
  4. @RequestMapping("/first")
  5. public String first(){
  6. String result=restTemplate.getForObject("http://localhost:8987/second", String.class);
  7. return "from [second]"+result;
  8. }
  9. @Bean
  10. public Sampler defaultSampler() {
  11. return new AlwaysSampler();
  12. }
  13. }

5. 配置zipkin 访问地址:

application.properties

  1. server.port=8988
  2. spring.zipkin.base-url=http://XXXXXXX:9411
  3. spring.application.name=first

6. 启动服务

mvn   spring-boot:run

7. 查看请求信息,以及服务依赖

还是比较方便的,建议看看官方的例子以及说明文档:http://cloud.spring.io/spring-cloud-sleuth/1.0.x/



 

 

时间: 2024-07-28 18:49:05

SpringCloud Sleuth 使用的相关文章

新版本SpringCloud sleuth整合zipkin

SpringCloud Sleuth 简介 Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案. Spring Cloud Sleuth借鉴了Dapper的术语. Span:基本的工作单元.Span包括一个64位的唯一ID,一个64位trace码,描述信息,时间戳事件,key-value 注解(tags),span处理者的ID(通常为IP). Trace:一组Span形成的树形结构. Annotation:用于及时记录存在的事件.常用的Annotation如

SpringCloud Sleuth 分布式请求链路跟踪

一.概述 ? 在微服务框架中,一个客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败.SpringCloud Sleuth 提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin .官方文档地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-sleut

springcloud -- sleuth+zipkin整合rabbitMQ详解

为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路.但是这种方式存在一个隐患,如果微服务之间与zipkin服务端网络不通,或调用链路上的网络闪断,http通信收集方式就无法工作.而且zipkin默认是将数据存储在内存中的,如果服务端重启或宕机,就会导致数据丢失. 所以我们不仅将数据存储在zipkin-serve中,同时还能通过某个消息存储的容器将本

springcloud sleuth

基本术语 Spring Cloud Sleuth 采用了 Google 开源项目 Dapper 专业术语: 1) Span 基本工作单元,发送 个远程调度任务就会产生一个 Span, Span 是用 一个64ID 标识的, Trace 是用另 一个64 ID 标识的.span 还包含了其他的信息,例如摘要.时间戳事件 Span 及进程 ID 2) Trace :由 系列 Span 组成的,呈树状结构.请求一个微服务系统的 API ,这个API 接口需要调用多个微服务单元,调用 一个微服务单元都会

dubbo springCloud比较

1.dubbo只是专注于服务之间的治理,配置中心.分布式跟踪等这些内容都需要自己集成 2.dubbo核心功能: a.远程通讯 b.集群容错 c.自动发现 Dubbo SpringCloud 服务注册中心 Zookeeper SpringCloud Netflix Eureka 服务调用方式 RPC REST API 服务监控 Dubbo-monitor SpringBoot Admin 断路器 不完善 SpringCloud Netflix Hystrix 服务网关 无 SpringCloud

微服务之SpringCloud干货(一):SpringCloud简介

什么是微服务架构 微服务架构就是系统架构设计的一种风格,它主旨将一个独立的系统,拆分成各个微服务,各个微服务独立运行,他们之间通过Http的Restful API进行通信,拆分出来的微服务是根据原系统高耦合部分进行构建(之后会单独讲解如何拆分微服务),每个微服务 都有自己的数据存储(涉及到分布式事务的处理,之后会有讲解).独立部署,由于轻量级的通讯协议,微服务可以使用不同的语言来开发. SpringCloud SpringCloud是一个基于SpringBoot实现的微服务架构开发工具,它为微服

SpringCloud概述

⒈官网说明 SpringCloud是基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现.配置中心.全链路监控.服务网关.负载均衡.熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件. SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等,它

尚硅谷SpringCloud 2020新版视频发布

尚硅谷SpringCloud第一版视频,一经推出广受好评.2020新版视频含两件套: SpringCloud Hoxton SpringCloud alibaba 双剑合并,威力大增!内容涵盖目前火热的分布式微服务架构的全部技术栈,是尚硅谷高阶班微服务课程的最新升级版. 新版教程对老版的五大技术做了升级加强和替换更新,对原有技术进行了更加深入的讲解.此外,教程加入了新内容:后起新秀SpringCloud alibaba,满足你对新技术的探索欲望! 教程由尚硅谷被技术耽误了的段子手阳哥操刀,炮制虽

SpringCloud(H版)二阶段学习---分布式请求链路追踪

前言:不断学习就是程序员的宿命. 一.概述 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的结果,每一个前段请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出现高延迟或错误都会引起整个请求最后的失败. SpringCloud Sleuth提供了一套完整的服务跟踪的解决方案.在分布式系统中提供了追踪解决方案并且兼容支持了zipkin 官网地址:https://spring.io/projects/spring-cloud-sleuth 完整请