首页 > 其他分享 >使用Spring Boot集成Sleuth

使用Spring Boot集成Sleuth

时间:2024-07-13 15:22:43浏览次数:11  
标签:Sleuth String Spring Boot springframework import org class

使用Spring Boot集成Sleuth

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

在分布式系统中,跟踪请求的流转路径是非常重要的。Spring Cloud Sleuth是一个分布式追踪解决方案,它可以帮助我们实现这种请求链路追踪。本文将详细介绍如何在Spring Boot项目中集成Sleuth,并通过代码示例展示其具体用法。

一、引入依赖

首先,在你的Spring Boot项目中引入Sleuth的依赖。在pom.xml文件中添加以下依赖:

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

这些依赖将Sleuth和Zipkin集成到你的项目中,Zipkin是一个分布式追踪系统,用于收集和查看跟踪数据。

二、配置Sleuth

application.propertiesapplication.yml中配置Sleuth。以下是一个基本的配置示例:

spring.application.name=juwatech-sleuth-demo
spring.sleuth.sampler.probability=1.0
spring.zipkin.base-url=http://localhost:9411

这些配置指定了应用名称、采样率和Zipkin服务器地址。

三、创建示例应用

下面,我们将创建一个简单的Spring Boot应用,包含两个服务,通过REST API进行调用,并使用Sleuth进行追踪。

服务A:

package cn.juwatech.sleuth.serviceA;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class ServiceAApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceAApplication.class, args);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@RestController
class ServiceAController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/serviceA")
    public String callServiceB() {
        String response = restTemplate.getForObject("http://localhost:8081/serviceB", String.class);
        return "Response from Service B: " + response;
    }
}

服务B:

package cn.juwatech.sleuth.serviceB;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class ServiceBApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceBApplication.class, args);
    }
}

@RestController
class ServiceBController {

    @GetMapping("/serviceB")
    public String serviceB() {
        return "Hello from Service B!";
    }
}

四、运行应用

  1. 分别运行服务A和服务B。
  2. 访问http://localhost:8080/serviceA,你将看到服务A调用了服务B,并返回了服务B的响应。

五、查看跟踪数据

Sleuth会自动将跟踪数据发送到Zipkin。确保Zipkin服务器正在运行,并访问http://localhost:9411查看跟踪数据。

六、自定义跟踪信息

Sleuth允许我们自定义跟踪信息,例如添加自定义标签。以下是如何在服务A中添加自定义标签的示例:

package cn.juwatech.sleuth.serviceA;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
class ServiceAController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private Tracer tracer;

    @GetMapping("/serviceA")
    public String callServiceB() {
        Span newSpan = tracer.nextSpan().name("custom-span");
        try (Tracer.SpanInScope ws = tracer.withSpan(newSpan.start())) {
            newSpan.tag("custom-tag", "custom-value");
            String response = restTemplate.getForObject("http://localhost:8081/serviceB", String.class);
            return "Response from Service B: " + response;
        } finally {
            newSpan.end();
        }
    }
}

在这个示例中,我们创建了一个新的Span,并添加了一个自定义标签。然后,我们将这个Span附加到当前的跟踪上下文中。

七、总结

通过Spring Boot集成Sleuth,我们可以轻松实现分布式追踪,跟踪请求在多个服务中的流转路径,并使用Zipkin来收集和查看这些跟踪数据。Sleuth的强大功能和简单易用的API使得它成为分布式系统中不可或缺的工具。

著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:Sleuth,String,Spring,Boot,springframework,import,org,class
From: https://www.cnblogs.com/szk123456/p/18300136

相关文章

  • 使用Spring Boot实现消息队列
    使用SpringBoot实现消息队列大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代分布式系统中,消息队列是一个非常重要的组件。它可以解耦系统的各个部分,提高系统的可伸缩性和可靠性。本文将详细介绍如何使用SpringBoot实现消息队列,包括消息的发送和接......
  • 使用Spring Boot集成Consul
    使用SpringBoot集成Consul大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在微服务架构中,服务发现和配置管理是两个非常重要的组件。HashiCorpConsul是一个支持多数据中心的服务发现和配置工具,它提供了服务注册和发现、健康检查、Key/Value存储等功能......
  • 基于springboot+vue.js+uniapp的江西郊医院血库管理系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • day01-springcloud-nacos
    SpringCloud0101概述导入:单体项目-》分布式项目(微服务)02.我们今天学习目标:单体项目-》分布式项目(微服务)众多微服务如何管理、相互调用的注册中心-Eureka和NacosEureka和Nacos对比1.认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架......
  • 毕业设计-基于Springboot+Vue的学生就业管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89455021基于SpringBoot+Vue的学生就业管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1N3CA49jwUDd2SmjWvM6w9w?pw......
  • 毕业设计-基于Springboot+Vue的招聘信息管理系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456194基于SpringBoot+Vue的招聘信息管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1quUpQqUcXVzXV9H4wDmqLw?pw......
  • Spring Boot 框架知识汇总
    1、什么是SpringBoot?通过SpringBoot,可以轻松地创建独立的,基于生产级别的Spring的应用程序,您可以“运行"它们。大多数SpringBoot应用程序需要最少的Spring配置,集成了大量常用的第三方库配置,使得这些库在SpringBoot应用中几乎可以零配置地开箱即用。2、SpringBoot的特征?......
  • 黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录 Day4
    你好,我是Qiuner.为帮助别人少走弯路和记录自己编程学习过程而写博客这是我的githubhttps://github.com/Qiuner⭐️giteehttps://gitee.com/Qiuner......
  • 基于java+springboot+vue实现的作业管理系统(文末源码+Lw)110
    基于SpringBoot+Vue的实现的作业管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)功能描述:作业管理系统有管理员,教师,学生三个角色。教师和学生都可以进行注册然后再登录。学生可以修改自己的密码,查看和下载作业信息,并且可以提交自己写好的作业,并且可以......
  • 基于java+springboot+vue实现的新闻稿件管理系统(文末源码+Lw)109
     基于SpringBoot+Vue的实现的新闻稿件管理系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:新闻稿件管理系统管理员功能有个人中心,用户管理,记者管理,审批员管理,新闻分类管理,新闻信息管理,系统管理等。记者发布新闻信息,审批员进行审核,用户进行查看。因......