前言

参考资料

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服务原理与实战》

《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

Spring Cloud Sleuth 是一个 Spring Cloud 项目,它将关联 ID 装备到 HTTP 调用上,并将生成的跟踪数据提供给 OpenZipkin 的钩子。Spring Cloud Sleuth 通过添加过滤器并与其他 Spring 组件进行交互,将生成的关联 ID 传递到所有系统调用;


1. Sleuth 基础知识

1.1 Sleuth 原理

  • 使用 Sleuth 来追踪服务调用链很简单,只需要添加一个 pom.xml 依赖即可;
  • 添加依赖后会对输出日志追加一条信息;
  • 利用信息里的追踪 ID即可获知本次调用使用到了哪些服务;

2. 在服务中使用 Sleuth 追踪

2.1 引入 pom.xml 依赖文件

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
  • 只需要引入该依赖文件即可完成以下工作:

    • 检查每次调用是否存在 Spring Cloud Sleuth 跟踪信息,存在则进行日志记录和处理;
    • 将 Spring Cloud Sleuth 跟踪信息添加到 Spring MDC(Spring Mapped Diagnostic Context,Spring 的映射诊断上下文);
    • 将 Spring Cloud跟踪信息注入服务发出的每个出站 HTTP 调用以及 Spring 消息传递通道的消息中;

2.2 查看日志信息

  • 启动服务,调用接口,则会在控制台里看到类似如下信息:

  • Sleuth 会在每个日志条目追加以下信息:

    • 服务的应用程序名称:默认为 spring.application.name 定义的名称;
    • 跟踪 ID(trace ID):跟踪 ID是关联 ID 的等价术语,表示整个事务的唯一编号;
    • 跨度 ID(span ID):表示整个事务中某一部分的唯一 ID(当与 Zipkin 集成来可视化事务时,跨度 ID 尤为重要 );
    • 是否将跟踪数据发送到 Zipkin:对大量的日志数据起过滤筛选作用;
  • 举个例子:客户端请求上游服务,而上游服务需要请求下游服务时,这两个服务有相同的跟踪 ID,不同的跨度 ID


最后

新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!

微服务架构 | 10.1 使用 Sleuth 追踪服务调用链的更多相关文章

  1. 微服务架构 | 10.3 使用 Zipkin 可视化日志追踪

    目录 前言 1. Zipkin 基础知识 1.1 Zipkin 链路监控的原理 2. 下载 Zipkin 服务器 2.1 下载 zipkin-server-2.12.9-exec.jar 包 2.2 ...

  2. 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)

    上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用.原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix ...

  3. 微服务架构 | 5.2 基于 Sentinel 的服务限流及熔断

    目录 前言 1. Sentinel 基础知识 1.1 Sentinel 的特性 1.2 Sentinel 的组成 1.3 Sentinel 控制台上的 9 个功能 1.4 Sentinel 工作原理 ...

  4. .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)

    本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...

  5. Zipkin存储Sleuth信息实现调用链追踪的几种方法

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/alva_xu/article/detail ...

  6. 分布式服务追踪与调用链 Zikpin

    分布式服务追踪与调用链系统产生的背景 在为服务中,如果服务与服务之间的依赖关系非常复杂,如果某个服务出现了一些问题,很难追查到原因,特别是服务与服务之间调用的时候. 在微服务系统中,随着业务的发展,系 ...

  7. 微服务架构 | 10.2 使用 Papertrail 实现日志聚合

    目录 前言 1. Papertrail 基础知识 1.1 Papertrail 特点 1.2 Papertrail 是什么 2. 使用 Papertrail 进行日志聚合的示例 2.1 创建 Pape ...

  8. Spring Cloud构建微服务架构(六)高可用服务注册中心

    http://blog.didispace.com/springcloud6/ https://www.jianshu.com/p/df9393755a05 http://www.ityouknow. ...

  9. 微服务架构集大成者—Spring Cloud (转载)

    软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...

随机推荐

  1. Mysql 层级无限嵌套

    1.新建测试数据 新建channel表 DROP TABLE IF EXISTS channel; CREATE TABLE channel ( id INT(11) NOT NULL AUTO_IN ...

  2. Bristol大学密码学博士生的五十二个知识点

    Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...

  3. java-热部署

    IDEA热部署方式: spring-boot-devtools JRebel插件 spring-boot-devtools为应用提供一些开发时特性,包括默认值设置,自动重启,livereload等. ...

  4. [Error]ValueError: Object arrays cannot be loaded when allow_pickle=False

    问题描述使用numpy的函数 numpy.load() 加载数据时报错: ValueError: Object arrays cannot be loaded when allow_pickle=Fa ...

  5. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  6. 利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动

    查看本章节 查看作业目录 需求说明: 利用自定义动画 animate() 方法,实现某图书网站中"近 7 日畅销榜"中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠 ...

  7. Java高级程序设计笔记 • 【第5章 XML解析】

    全部章节   >>>> 本章目录 5.1 XML 文档概述 5.1.1 XML文档结构 5.1.1 XML结构说明 5.1.1 XML文档元素 5.1.2 XML文档语法规范 ...

  8. linux rm 删除命令

    2022-01-04 1. 命令简介 Linux rm(英文全拼:remove)命令用于删除一个文件或者目录. 2. 语法及参数 2.1 语法 rm [options] name... 2.2 参数 ...

  9. Linux上天之路(五)之Linux基本命令

    1. Linux命令格式 命令 命令选项 学会看语法: {必选项}[可选项] 举例 ls -a /tmp 等价 ls –all /tmp ls 命令 -a 命令选项 简写使用- 全写-- /tmp 参 ...

  10. 微信小程序动画实现(API,css)

    微信小程序动画API实现 index.js clicktap:function(){ var Animation=wx.createAnimation({ duration: 2000, }) Ani ...