SpringCloud Day09--分布式请求链路跟踪(SpringCloud Sleuth)

简介: SpringCloud Day09--分布式请求链路跟踪(SpringCloud Sleuth)

12. SpringCloud Sleuth 分布式请求链路跟踪


12.1 概述


12.1.1 为什么会出现这个技术? 需要解决哪些问题?


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

097091594eda5530cee272fad5e3e66e.png

e754ef4d5ffaa6a5c5c81f5824c03f20.png


12.1.2 是什么?


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


Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin


12.1.3 如何解决问题?


307d0dc11dc9025f93eb4ffb74557245.png

12.2 搭建链路监控步骤


12.2.1 zipkin


  • 下载


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


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


目标jar包: zipkin-server-2.12.9-exec.jar


运行jar


7bd1cd2dd548dd707725163a6aad6f90.png


  • 运行控制台

访问: http://localhost:9411/zipkin/

  • 相关术语


完整的调用链路 :


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


88e3f8f75c7c2d77544babd770e00eaf.png



上图what:


a5d9d88e26926f854d2a84e104ef4137.png


163e5fdff4b76b3fd21cac8aecaff7b8.png


名词解释:

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

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


12.2.2 服务提供者


修改cloud-provider-payment8001


  • POM


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

13d199940d16f7acb71097c1b2e6b15a.png

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

12.2.3 服务消费者(调用方)


修改cloud-consumer-order80


  • POM—同上
  • YML—同上
  • 业务类OrderController


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

12.2.4 测试


  • 依次启动eureka7001,7002,7004、8001、80, 80调用8001几次测试下
  • 打开浏览器访问:http://localhost:9411,出现一下界面


2dbf7c547990796b81935a218ac07757.png

点击进行查看:


b5c61b9a53d9f4b6348fff72d4228979.png


查看依赖关系

a585cf572c73e5f8b3a90dcdaa10c916.png

478041b5a29f1b4c3d8a41eb7835cda7.png

相关文章
|
29天前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
7天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
7天前
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata
|
30天前
|
监控 Java 应用服务中间件
分布式链路监控系统问题之Eagleeye的traceId设计的问题如何解决
分布式链路监控系统问题之Eagleeye的traceId设计的问题如何解决
|
30天前
|
监控 API 开发者
分布式链路监控系统问题之ASM的开发体验被认为是噩梦般的问题如何解决
分布式链路监控系统问题之ASM的开发体验被认为是噩梦般的问题如何解决
|
30天前
|
监控 Java API
分布式链路监控系统问题之对Java应用实现字节码增强的方式的问题如何解决
分布式链路监控系统问题之对Java应用实现字节码增强的方式的问题如何解决
|
30天前
|
监控 中间件
分布式链路监控系统问题之当某个Segment数据缺失时还原调用树的问题如何解决
分布式链路监控系统问题之当某个Segment数据缺失时还原调用树的问题如何解决
|
30天前
|
监控 Java
分布式链路监控系统问题之OpenTracing规范的问题如何解决
分布式链路监控系统问题之OpenTracing规范的问题如何解决
|
30天前
|
存储 监控 开发者
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
|
1月前
|
Dubbo Java 调度
揭秘!Spring Cloud Alibaba的超级力量——如何轻松驾驭分布式定时任务调度?
【8月更文挑战第20天】在现代微服务架构中,Spring Cloud Alibaba通过集成分布式定时任务调度功能解决了一致性和可靠性挑战。它利用TimerX实现任务的分布式编排与调度,并通过`@SchedulerLock`确保任务不被重复执行。示例代码展示了如何配置定时任务及其分布式锁,以实现每5秒仅由一个节点执行任务,适合构建高可用的微服务系统。
47 0