链路追踪Sleuth入门

2023-11-13

前言:

在一个大型的分布式项目中存在各种各样的模块调用。每个模块负责不同的功能,组合成系统。

在这种架构下的系统,一次请求往往会调用到许许多多的微服务。这样的跨度对于维护也是存在一定的问题。

     1.如何快速发现问题?
     2.如何判断故障影响范围?
     3.如何梳理服务依赖以及依赖的合理性?
     4.如何分析链路性能问题以及实时容量规划?
对于这些问题我们可以采用分布式链路追踪进行解决。
分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将 一次分布式请求的调用情况集中展示。
比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

  目前业界比较流行的链路追踪系统如:Twitter的Zipkin,阿里的鹰眼,美团的Mtrace,大众点评的cat等,大部分都是基于google发表的Dapper。Dapper阐述了分布式系统,
  特别是微服务架构中链路追踪的概念、数据表示、埋点、传递、收集、存储与展示等技术细节。
 

对于链路追踪Spring也提供了其对应的方法:Spring Cloud Sleuth

Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,只需要在pom文件中引入相应的依赖即可。

流程图:

 

链路追踪Sleuth入门 

(1)在需要的微服务下添加配置依赖
    <!--Sleuth链路追踪依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
(2)修改配置文件
修改application.yml添加日志级别 
logging:
  level:
    root: INFO
    org.springframework.web.servlet.DispatcherServlet: DEBUG
    org.springframework.cloud.sleuth: DEBUG  #链路追踪日志

(3)查看效果

http://localhost:8001/admin/category/demo.do/1

访问category微服务的demo.do服务。该服务会去远程调用demo微服务的demo.do服务。

 访问成功后我们可以观察微服务的控制台日志:

Category微服务控制台:

 Demo微服务控制台:

 调用之后,我们可以在控制台观察到sleuth的日志输出。

其中 蓝色框中的是TraceId,后面跟着的绿色框中的是SpanId,依次调用有一个全局的TraceId,将调用链
路串起来。仔细分析每个微服务的日志,不难看出请求的具体过程。
查看日志文件并不是一个很好的方法,当微服务越来越多日志文件也会越来越多,通过Zipkin可以将日
志聚合,并进行可视化展示和全文检索。

 关于基于 Zipkin的链路追踪可以查看下一章:

基于 Zipkin的链路追踪

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链路追踪Sleuth入门 的相关文章

  • 使用 TreeMap 和 Comparator 按值对 HashMap 进行排序

    我使用以下代码创建哈希图 然后使用树形图和比较器对哈希图中的值进行排序 然而 输出结果却出乎意料 所以任何关于我做错了什么的想法都会有帮助 Code public static void main String args System ou
  • Java如何删除设置了IMMUTABLE位的文件

    正在开发一个 Java 8 项目 我从外部源复制文件 在这些源之一中 文件设置了不可变位标志 In OSX这是这样设置的 sudo chflags schg path to file In Linux chattr i path to fi
  • 为什么 hibernate 在一张表中保存两个 @OneToMany 列表?

    想象一下使用 Hibernate 和 JPA 的简化代码如下 Entity class C Id GeneratedValue public long id MappedSuperclass abstract class A Id Gene
  • 有没有办法检索有关 @Controller 定义的 spring 映射的信息?

    我希望能够创建一个页面 列出由带有注释的控制器发现的映射 Controller 我这样做是为了 REST 服务 它使我们能够轻松找到页面上实例可用的端点 到目前为止 我一直在手动执行此操作 但如果可以创建一个控制器 以一种令人愉快的格式很好
  • IntelliJ Ultimate 在 Play 2.3 (Java) 项目测试中找不到路由

    虽然我的测试运行得很好 但 IntelliJ 抱怨它找不到路由对象 并且代码自动完成无法工作 我已经查看了所有文档 这应该可以工作 这是 IntelliJ 的报告内容 关于我的项目配置可能有什么问题有什么想法吗 这很可能与以下事实有关 ro
  • 通过 JDBC 连接到 DB2 时的用户和密码

    我正在尝试连接到本地 DB2 10 5 Express C 服务器 这是一个测试环境 所以我不关心安全性 我能够连接到命令行处理器 在 Windows 上运行 并且我更改了配置设置AUTHENTICATION CLIENT and TRUS
  • 如何避免 Java 中的忙旋转

    我有一个多线程应用程序 其中一个线程向另一个线程发送消息 等待线程轮询消息并做出反应 处理锁 像这样 等待线程代码 while true if helloArrived System out println Got hello if bye
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • 处理 ANTLR 4 中的错误

    遵循后接受的答案 https stackoverflow com a 18137301 2279200的指示处理 ANTLR4 中的错误 https stackoverflow com q 18132078 2279200问题 我遇到了以下
  • Android 反向地理编码不适用于华为设备

    我正在尝试通过这段代码反转地理编码纬度 经度 Geocoder geocoder new Geocoder context Locale ENGLISH try List
  • Java 泛型:将 Object o 的类与 进行比较

    假设我有以下课程 public class Test
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • Spring Boot中服务接口类的用途

    我的问题是关于接口类的使用 我对 Spring 还很陌生 所以如果这过于简单 请耐心等待 首先 当您可以在 BoxService 中声明 find all 时 这里拥有 IBoxService 接口有什么意义 其次 在控制器中如何使用IBo
  • HQL 类似运算符,用于不区分大小写的搜索

    我正在使用 Jquery 实现自动完成功能 当我输入名称时 它会从数据库中获取记录 数据库中存储的记录是大写字母和小写字母的混合 我编写了一个 HQL 查询 它可以区分大小写地获取记录 但我需要不考虑大小写的记录 这是查询 List
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种

随机推荐

  • 学习Java——自动拆装箱

    目录 引言 基本数据类型 数据类型有什么好处 整数的取值范围 超出范围怎么办 包装类型 为什么需要包装类 拆箱与装箱 自动拆箱与装箱 实现原理 哪些场景会用到 场景一 将基本数据类型放入集合类 场景二 包装类型和基本类型的大小比较 场景三
  • AD软件点击启动没有反应

    文章目录 一 AD无法启动 二 解决方法 一 AD无法启动 之前用了很久的AD16 突然某一天打开电脑 点开AD 结果一点反应没有 我还楞了一下 怎么今天你小子不想上班了 然后又点了一次 还是没反应 于是头铁继续试了几次 离了个大谱 一点东
  • vue-element-admin 页面内点详情跳转

    之前都是点击按钮以弹窗的形式展示信息 现在有个需求是点了页面内的详情按钮后进行路由跳转 跳到一个新的页面上去 1 先添加路由 route index js path test component Layout redirect test n
  • Windows Server2016 安装docker 所踩的坑

    献给小白用户 首先参考官网文档 https docs microsoft com zh cn virtualization windowscontainers deploy containers deploy containers on s
  • 2023年最新前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,微信小程序,Webpack 汇总篇)-- 持续更新

    HTML篇 CSS篇 JS篇 Vue篇 TpeScript篇 React篇 微信小程序篇 前端面试题汇总大全 含答案超详细 HTML JS CSS汇总篇 持续更新 前端面试题汇总二 逐步更新 五 Vue 篇 1 谈谈你对MVVM开发模式的理
  • 万物革新人们刷脸支付需求越来越多元化

    随着时代的进步 技术的革新 消费者的消费逐渐感性化 它们已经不满足于大众化的同类消费 独出心裁 别具匠心的个性化消费逐渐成为潮流 刷脸支付的出现 让消费者拥有更具科技感 新鲜感 以及高效的消费体验 更是尽可能的满足了年轻一代消费者的支付需求
  • “新卷王”X-volution

    编辑 Happy 首发 AIWalker 在本文中 华为上交 华为海思提出了一种集成卷积与自注意力的Xvolution 它将卷积与自注意力进行了集成 同时利用卷积的局部特征提取能力与自注意力的全局建模能力 更重要的是 它通过结构重参数化机制
  • 链表大小排序方法c语言,C语言数据结构 链表与归并排序实例详解

    C语言数据结构 链表与归并排序实例详解 归并排序适合于对链表进行原址排序 即只改变指针的连接方式 不交换链表结点的内容 归并排序的基本思想是分治法 先把一个链表分割成只有一个节点的链表 然后按照一定顺序 自底向上合并相邻的两个链表 只要保证
  • sklearn中的线性回归模型中的transform()模型讲解

    利用sklearn进行线性拟合时 通常要进行数据转换 目的在于将数据集中的数据转换为可供Python进行解算的矩阵 举一个栗子来说明 假设我们使用多项式回归来做模拟 阶次为2 有4个特征 易知 我们的多项式展开为 由上式易知 4个特征加一个
  • 下载后端传来的excel文件

    html内容
  • MATLAB应用3——深度视觉 奥比中光Astra S显示RGB和深度信息

    首先从官网下载OpenNI驱动并安装 以及添加环境变量 MATLAB代码 参考 https blog csdn net limingmin2020 article details 109445787 首次使用需编译mxNI cpp文件 生成
  • SCI期刊画图常用颜色归纳总结

    我导师曾审稿300 他经常教导我们 论文中图片的质量是非常重要的 我审稿时主要看稿件的图表 PS 当然他说实验方法和结果很很很重要 还有其他的就不讨论了 因为本篇文章主要讲关于论文画图的事 我通常用PS画学术图 当然其他软件都可以 比如我师
  • 打印A4纸图片需要多少像素和分辨率?

    我们如果要设计杂志用的图片 A4大小的需要多少像素大小和分辨率呢 一般来说 给铜版纸使用的300dpi就够用了 太小打印出来不一定清晰 太大的话耗费内存和CPU处理起来十分慢 所以300dpi是一个很好的分界线 A4物理大小是21厘米 29
  • 【视频解读】动手学深度学习V2_02深度学习介绍

    1 AI地图 人工智能的地图 x轴是不同模式 由符号学到概率模型 到机器学习 Y轴是我想做的东西 最底下的是感知 我得了解这是什么东西 然后做推理 形成自己的知识 最后做规划 最底层的就是感知 就是我能够看到这个物体 比如这个屏幕等 做推理
  • 创建索引分区

    Oracle学习四 创建 索引分区 作者 mckobe23 http mckobe23 itpub net 发表于 2007 03 13 18 30 分类 Oracle 出处 http mckobe23 itpub net post 291
  • vue 中导出的方法,导出xls/zip/mp4等

    在我的项目中会用到导出功能 导出xls zip mp4文件的需求 所以直接整合一下导出功能的方法 首先引入方法 import downloadXls downloadZip from utils download 然后再运用 我这个地方是需
  • python 编码

    1 ASCII Unicode和UTF 8 计算机只能处理数字 如果要处理文本 就必须把文字转换为数字 因为计算机是美国人发明的 因此最早只有127个字母被编码到计算机里 包含大小写英文字母 数字和一些符号 这个编码表被称为ASCII编码
  • python连续小波分析CWT

    目录 0 引言 1 实例 1 1 结果图 1 2 代码 1 3 结果分析 2 cwt 使用介绍 3 参考链接 转自 python连续小波分析 0 引言 我们学过内积 内积的物理含义 两个图形的相似性 若两个图形完全正交 则内积为0 若两个图
  • gradle快速入门

    1 Gradle 入门 1 1 Gradle 简介 Gradle 是一款Google 推出的基于JVM 通用灵活的项目构建工具 支持Maven JCenter 多种第三方仓库 支持传递性依赖管理 废弃了繁杂的xml 文件 转而使用简洁的 支
  • 链路追踪Sleuth入门

    前言 在一个大型的分布式项目中存在各种各样的模块调用 每个模块负责不同的功能 组合成系统 在这种架构下的系统 一次请求往往会调用到许许多多的微服务 这样的跨度对于维护也是存在一定的问题 1 如何快速发现问题 2 如何判断故障影响范围 3 如