SpringCloud分布式链路追踪组件Sleuth配置详解

SpringCloud分布式链路追踪组件Sleuth配置详解

什么是Sleuth

Sleuth是Spring Cloud的一个分布式跟踪解决方案,主要解决微服务架构下的复杂分布式系统中的链路追踪问题。它通过为每个请求分配唯一的traceId和spanId,来实现对分布式系统中各个微服务请求的跟踪。Sleuth通过将traceId和spanId绑定到每个服务请求的Header中,并将请求传递给下游服务,实现了整个分布式系统的链路追踪工作。

Sleuth的配置

添加依赖

首先,在pom.xml文件中添加Sleuth的依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

配置Sleuth参数

在配置文件中添加Sleuth的参数:

spring:
  sleuth:
    sampler:
      probability: 1.0 # 抽样率
    traceId128: true # TraceID是否使用128位

其中sampler.probability用于控制采样率,默认值为0.1,即只有10%的请求会进行链路追踪;traceId128用于控制TraceID是否使用128位,默认为false。

示例1:打印请求链路信息

在Controller中通过调用Tracer.getCurrentSpan()方法来获取当前请求对应的Span,从而获取TraceId和SpanId。示例如下:

@RestController
public class HelloController {
    @Autowired
    private Tracer tracer;

    @GetMapping("/hello")
    public String hello() {
        Span currentSpan = tracer.currentSpan();
        System.out.println("TraceId: " + currentSpan.context().traceId());
        System.out.println("SpanId: " + currentSpan.context().spanId());
        return "hello";
    }
}

示例2:记录请求耗时

在请求的开始和结束处记录时间,计算请求的耗时时间。示例如下:

@RestController
public class HelloController {
    @Autowired
    private Tracer tracer;

    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);

    @GetMapping("/hello")
    public String hello() {
        long startTime = System.currentTimeMillis();
        String result = "hello";
        long endTime = System.currentTimeMillis();
        logger.info("TraceId: {}, Time: {}", tracer.currentSpan().context().traceId(), (endTime - startTime));
        return result;
    }
}

通过在控制台中查看输出日志,就可以在Sleuth中查看请求的链路信息和请求耗时时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringCloud分布式链路追踪组件Sleuth配置详解 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • tensorflow 保存模型和取出中间权重例子

    下面是tensorflow 保存模型和取出中间权重的完整攻略,包含两条示例说明。 标准流程 TensorFlow中训练好的模型需要保存下来,以便在需要时进行加载和使用。保存模型需要进行两步,第一步是定义saver,第二步是运行saver实例的save方法。加载模型需要进行两步,第一步是定义saver,第二步是运行saver实例的restore方法。 保存模型…

    人工智能概论 2023年5月24日
    00
  • C语言中的long型究竟占4个字节还是8个字节(遇到的坑)

    C语言中的long型是一种整型数据类型,占用的字节数取决于编译器和操作系统。 在大多数32位的机器上,long型占4个字节,即32位,范围为2147483647到-2147483648。但是,在现代的64位机器上,long型常常占用8个字节,即64位,范围为9223372036854775807到-9223372036854775808。 由于不同的机器和编…

    人工智能概览 2023年5月25日
    00
  • vue项目打包部署_nginx代理访问方法详解

    下面是“vue项目打包部署_nginx代理访问方法详解”的完整攻略: 前言 本攻略旨在帮助Vue开发者将自己的项目成功打包并部署到Nginx上,实现可访问的效果。在此之前,你需要有一定的Vue开发经验和一台云服务器。 第一步:打包Vue项目 打包Vue项目的方法很简单,只需要在项目根目录下输入以下命令即可: npm run build 以上命令将会自动将当前…

    人工智能概览 2023年5月25日
    00
  • 在Django的视图中使用form对象的方法

    在Django的视图中使用Form对象可以实现对表单数据的有效验证。本文将介绍如何利用Form对象在Django的视图中实现表单验证并处理表单数据的方法。 1.创建Form类 首先,我们需要创建一个Form类来定义表单的各个字段及其验证规则。以一个用户注册表单为例: from django import forms class RegisterForm(fo…

    人工智能概览 2023年5月25日
    00
  • Python async+request与async+aiohttp实现异步网络请求探索

    Python async+requests与async+aiohttp实现异步网络请求探索 异步和同步 在Python编程中,通常有两种方式来进行多任务处理,分别是同步和异步。 在同步模式下,任务是按顺序执行的,当一个任务没有执行完毕时,下一个任务就必须等待。这种方式下,任务执行效率很低,往往也比较难来处理网络请求等事情。 在异步模式下,程序可以同时执行多个…

    人工智能概论 2023年5月25日
    00
  • 基于Docker与Jenkins实现自动化部署的原理解析

    下面是完整的“基于Docker与Jenkins实现自动化部署的原理解析”的攻略: 什么是Docker与Jenkins? Docker是一种容器技术,它允许开发人员在不同的环境中构建、测试和部署应用程序,保证应用程序在不同环境间的一致性。Jenkins是一个流行的开源持续集成和持续交付工具,它可以自动编译、测试和部署应用程序。 自动化部署的流程 自动化部署的流…

    人工智能概览 2023年5月25日
    00
  • Python实现滑块验证码详解

    Python实现滑块验证码详解 简介 滑块验证码是当前主流的验证码之一,其通过让用户拖动滑块来验证身份,比传统的输入验证码更加便捷和直观。因此在很多网站中都广泛应用。 实现流程 1. 获取验证码图片 首先,需要从验证码接口或者其他途径获取验证码图片。一般来说,验证码图片都是由字符或者数字组成的图片,而滑块通常是一张带有缺口的验证码图片。 2. 切分验证码图片…

    人工智能概论 2023年5月25日
    00
  • 在pytorch中查看可训练参数的例子

    如果你想查看在PyTorch中定义的可训练参数(Trainable Parameters),可以使用PyTorch中的nn.Module类提供的parameters()方法,该方法返回一个生成器对象,可以遍历模型中的所有可训练参数。 下面是一个示例代码,展示了如何使用parameters()方法查看可训练参数。 import torch import tor…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部