M Talha 2025-12-04 13:21 采纳率: 56.4%
浏览 4

在微服务架构中,如何通过Spring Cloud Sleuth和Brave实现分布式追踪,并将Trace ID传递给下游服务?

在微服务架构中,如何通过Spring Cloud Sleuth和Brave实现分布式追踪,并将Trace ID传递给下游服务?

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-12-04 13:22
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    分布式追踪实现

    在微服务架构中,分布式追踪是非常重要的功能之一。通过Spring Cloud Sleuth和Brave,我们可以实现分布式追踪,并将Trace ID传递给下游服务。

    依赖配置

    首先,我们需要在pom.xml中添加以下依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
        <groupId>io.zipkin.brave</groupId>
        <artifactId>brave-spring-web-starter</artifactId>
    </dependency>
    

    配置

    我们需要在application.properties中配置Sleuth和Brave:

    spring:
      sleuth:
        sampler:
          probability: 1.0
      zipkin:
        base-url: http://localhost:9411
    

    实现

    我们需要在服务启动类中添加以下配置:

    @SpringBootApplication
    @EnableSleuth
    @EnableZipkinServer
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    我们需要在服务的Controller中添加以下配置:

    @RestController
    @RequestMapping("/api")
    public class MyController {
        @GetMapping("/test")
        public String test() {
            // 获取Trace ID
            String traceId = MDC.get("X-B3-TraceId");
            // 将Trace ID传递给下游服务
            return restTemplate.getForObject("http://下游服务/api/test", String.class);
        }
    }
    

    下游服务

    我们需要在下游服务的Controller中添加以下配置:

    @RestController
    @RequestMapping("/api")
    public class MyController {
        @GetMapping("/test")
        public String test() {
            // 获取Trace ID
            String traceId = MDC.get("X-B3-TraceId");
            // 将Trace ID传递给上游服务
            return restTemplate.getForObject("http://上游服务/api/test", String.class);
        }
    }
    

    总结

    通过上述配置和实现,我们可以实现分布式追踪,并将Trace ID传递给下游服务。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月4日