首页 > 其他分享 >SpringCloud系列之(十二)SpringCloud Sleuth分布式请求链路追踪

SpringCloud系列之(十二)SpringCloud Sleuth分布式请求链路追踪

时间:2024-02-28 10:46:39浏览次数:22  
标签:Sleuth 请求 zipkin SpringCloud 链路 cloud

SpringCloud Sleuth分布式请求链路追踪

一、概述

1. 应用场景

​ 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。

​ Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin【对于Sleuth跟踪到的链路信息进行展示】。

​ Spring Cloud Sleuth和zipkin是搭配使用的。

官网:https://github.com/spring-cloud/spring-cloud-sleuth

二、搭建链路监控步骤

1.zipkin

​ SpringCloud从F版起已不需要自己构建Zipkin server了,只需要执行jar包即可

1.1 下载

下载地址:https://repo1.maven.org/maven2/io/zipkin/zipkin-server/

1.2 运行

java -jar zipkin-server-2.12.9-exec.jar

1.3 控制台

http://localhost:9411/zipkin/

注:如果使用的是虚拟机记得关闭防火墙

1.4 完整的调用链路

​ 表示一请求链路,一条链路通过Trace_ld唯一标识,Span标识发起的请求信息,各span通过parent id关联起来

​ 整个链路的依赖关系如下:

名词解释:

  • Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
  • span:表示调用链路来源,通俗的理解span就是一次请求信息

2. 服务提供者

将我们之前构建的cloud-provider-payment8001作为服务提供者,需要进行以下改造

2.1 改POM

<!--包含了sleuth+zipkin-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

被Sleuth监控的服务要引用该依赖

2.2 改YML

# 配置Zipkin和Sleuth
spring:
  zipkin:
      base-url: http://192.168.59.128:9411
  sleuth:
    sampler:
      # 采样率值介于0 到 1之间,1 表示全部采集
      probability: 1

2.3 改业务类

PaymentController中加入该接口

@GetMapping("/payment/zipkin")
public String paymentZipkin()
{
  return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
}

3. 服务消费者(调用方)

将我们之前构建的cloud-consumer-order80作为服务消费者,需要进行以下改造

3.1 改POM

参考 2.1 进行修改

3.2 改YML

参考 2.2 进行修改

3.3 改业务类

OrderController中加入该接口

// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{
    String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);
    return result;
}

4.测试

启动cloud-eureka-server7001

启动cloud-provider-payment8001

启动cloud-consumer-order80

访问http://localhost/consumer/payment/zipkin几次

Zipkin中能够看到调用情况

服务依赖情况

标签:Sleuth,请求,zipkin,SpringCloud,链路,cloud
From: https://www.cnblogs.com/wzzzj/p/18039259

相关文章

  • SpringCloud系列之(十一)SpringCloud Stream消息驱动
    SpringCloudStream消息驱动企业中常用的消息中间件ActiveMQRabbitMQRocketMQKafka一、消息驱动概述1.为什么引入SpringCloudStream​ 消息中间件的产品众多(ActiveMQ、RabbitMQ、RocketMQ、Kafka...),学习成本高​ 一个系统中可能使用了多种消息中间件,切换/维护/开发成本......
  • SpringCloud系列之(九)服务配置
    服务配置目前在用的服务配置+服务总线的三套方案Config+BusNaccos(Alibaba)Apollo(携程)上海地区一、SpringCloudConfig分布式配置中心1.概述1.1分布式系统面临的配置问题​ 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现......
  • SpringCloud系列之(八)服务网关
    服务网关类比医院的分诊台一、Zuul由Netflix团队研发,不再使用官网:https://github.com/Netflix/zuul/wiki1.Zuul1.x模型​ Springcloud中所集成的Zuul版本,采用的是Tomcat容器,使用的是传统的ServletI0处理模型。​ 学过尚硅谷web中期课程都知道一个题目,Servlet的生命周期......
  • SpringCloud系列之(七)服务降级
    服务降级一、Hystrix断路器1.概述1.1分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。![](https://gitee.com/honourer/picturebed/raw/master/SpringCloud/图像(16).png)服务雪崩​ 多个微服务之间调用......
  • SpringCloud系列之(六)服务调用
    服务调用完成微服务之间的分布式调用一、Ribbon1.概述1.1是什么​ SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡【消费者侧80】的工具。​ 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组......
  • SpringCloud系列之(五)服务注册中心
    服务注册中心【服务注册与发现】一、EurekaSpring社区出的,Nacos是阿里出的1.Eureka基础知识1.1什么是服务治理?​ SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。​ 在传统的rpc远程调用框架中,服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要......
  • SpringCloud系列之(四)微服务架构编码构建
    微服务架构编码构建一、IDEA新建project工作空间1.微服务cloud整体聚合父工程Project【父工程Project空间新建】NewProject聚合总工程名字Maven选版本字符编码注解生效激活java编译版本选8FileType过滤【选做】删除src目录2.父工程POM文......
  • SpringCloud系列之(二)从2 2 x和H版开始说起
    从2.2.x和H版开始说起SpringCloudDalston.SR1+SpringBoot1.5.9版本的搭配已过时一、SpringBoot版本选择SpringBoot是以数字作为版本的,如:SpringBoot1.5.9二、SpringCloud版本选择SpringCloud的版本命名规则及版本关系​ SpringCloud采用了英国伦敦地铁站的名称来命名,......
  • SpringCloud系列之(一)微服务架构零基础理论入门
    微服务架构零基础理论入门一、微服务架构概述1.什么是微服务由MartinFlower提出微小的、独立的进程、轻量级、可独立部署​ 微服务架构是种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,......
  • SpringCloud和SpringBoot的版本依赖该怎么选择
    前言SpringCloud是一个基于SpringBoot的微服务框架,用于构建和管理分布式系统的各个组件。它提供了一套完整的解决方案,包括服务注册与发现、配置管理、负载均衡、熔断器、消息总线、数据流等功能。SpringCloud2023为当前SpringCloud的最新版本迭代,基于Spring6和Springboot3以......