SpringCloud学习(二十二):Sleuth分布式请求链路跟踪

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

一、概述


     

1、为什么需要Sleuth

   

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


2、Sleuth是什么


Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案 。


在分布式系统中提供追踪解决方案并且兼容支持了zipkin。


二、搭建链路监控



1、下载zipkin


SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可 。


下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/


如果forbidden就换这个:Central Repository: io/zipkin/zipkin-server  


7a491797169d46aaa6f088344ebb190b.png


下载后缀为jar的。

 

2、运行jar包


命令为

java -jar

5023e4239ac64792abc4ef2d528b82b1.png


3、访问可视化界面


http://localhost:9411/zipkin/


b6858b89f9454ac0b278e6ee42b6b0c3.png

在这个界面中我们可以看到完整的微服务调用链路


类似下图

29b70a7431164387bf933a1a1e8ceaf1.png


4、两个术语


一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来。

d6b4a30d53784759a173ba961f5965ae.png

f225bc141a9f4239b5f7d1e7dfbc6b08.png


(1)Trace


Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识


(2)Span


span:表示调用链路来源,通俗的理解span就是一次请求信息


三、服务提供者和消费者搭建



为了方便,我们就不再新建模块了,直接在之前写好的服务提供者8001(cloud-provider-payment8001)和服务调用者80(cloud-consumer-order80)的基础上进行修改。


80和8001要修改的内容相同。


1、pom文件修改


增加zipkin的依赖

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


2、yml文件修改


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


注意缩进关系

3b16c1be0b0f4793b926d6e0e67b6633.png


3、controller类修改

 

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


四、运行测试



依次启动eureka7001、8001、80。  


访问         http://localhost:90//consumer/payment/zipkin 如果启动时报500错误,则将80中配置的负载均衡注解去掉(我也不知道为什么,如果有大佬知道的话麻烦评论区教教我)

13e92fdc3a5f47be83c0b4150082eacb.png

多刷新几次,模拟80调用了几次8001。


然后访问        http://localhost:9411  


选好后,点击查找 6683a850bd5844b9b1bbac02052c0812.png


点击依赖也可以清楚地看到链路的调用关系


2f2ba2e153c54f43a686f3f50a9297fa.png


相关文章
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
138 1
|
3月前
|
机器学习/深度学习 算法 自动驾驶
深度学习之分布式智能体学习
基于深度学习的分布式智能体学习是一种针对多智能体系统的机器学习方法,旨在通过多个智能体协作、分布式决策和学习来解决复杂任务。这种方法特别适用于具有大规模数据、分散计算资源、或需要智能体彼此交互的应用场景。
184 4
|
4月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
|
4月前
|
Dubbo Java 调度
揭秘!Spring Cloud Alibaba的超级力量——如何轻松驾驭分布式定时任务调度?
【8月更文挑战第20天】在现代微服务架构中,Spring Cloud Alibaba通过集成分布式定时任务调度功能解决了一致性和可靠性挑战。它利用TimerX实现任务的分布式编排与调度,并通过`@SchedulerLock`确保任务不被重复执行。示例代码展示了如何配置定时任务及其分布式锁,以实现每5秒仅由一个节点执行任务,适合构建高可用的微服务系统。
72 0
|
3月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
9天前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
111 13
Spring Cloud Alibaba:一站式微服务解决方案
|
2月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
171 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
3月前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
112 0
|
4月前
|
人工智能 前端开发 Java
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)
本文介绍了如何使用 **Spring Cloud Alibaba AI** 构建基于 Spring Boot 和 uni-app 的聊天机器人应用。主要内容包括:Spring Cloud Alibaba AI 的概念与功能,使用前的准备工作(如 JDK 17+、Spring Boot 3.0+ 及通义 API-KEY),详细实操步骤(涵盖前后端开发工具、组件选择、功能分析及关键代码示例)。最终展示了如何成功实现具备基本聊天功能的 AI 应用,帮助读者快速搭建智能聊天系统并探索更多高级功能。
1495 2
【实操】Spring Cloud Alibaba AI,阿里AI这不得玩一下(含前后端源码)