【SpringCloud笔记】(12)分布式请求链路跟踪之Sleuth

Sleuth

背景

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

通俗的说:随着系统变得庞大,微服务模块增多,微服务之间的调用也变得极其复杂,我们有需要知道微服务一次请求走过哪些微服务,走过了哪些节点,当某个微服务出现故障时,我们能够及时追踪到

概述

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

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

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

搭建链路监控步骤

zipkin

Sleuth整合了zipKin

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

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

打开本地终端 使用 [java -jar zipkin-server-2.12.9-exec.jar]启动

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

出现该界面,访问成功

完整调用链路

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

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

精简图

Trace ld是一整条链路的唯一标识,Span id是每个环节的唯一标识,parent id与上一级的Span id一致,就是通过这种关系将各span关联起来

完成一次简单的调用

使用消费者80及提供者8001模块

pom(80同8001)

xml 复制代码
	<!-- 引入sleuth + zipkin -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

yml(80同8001)

yaml 复制代码
spring:
  zipkin:
      base-url: http://localhost:9411
  sleuth:
    sampler:
    #采样率值介于 0 到 1 之间,1 则表示全部采集
    probability: 1

8001 controller

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

80 controller

java 复制代码
@GetMapping(value = "/consumer/payment/zipkin")
    public String paymentzipkin()
    {
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/zipkin",String.class);
        return result;
    }

依次启动eureka7001/8001/80,80调用8001几次测试下

打开浏览器访问: http://localhost:9411

可以看到追踪到的服务名

也可以看到服务间的调用

so easy ~

相关推荐
zycoder.6 分钟前
rabbitmq学习demo,包含普通消息,TTL+死信队列,topic交换机三种情况,以项目形式讲解
分布式·学习·rabbitmq
贺国亚1 小时前
分布式并发
分布式·wpf
未若君雅裁2 小时前
RabbitMQ 消息堆积怎么处理:消费者扩容、线程池与惰性队列
分布式·微服务·rabbitmq
这个DBA有点耶2 小时前
分布式数据库的“分片键”设计:选错可能让性能倒退10倍
数据库·分布式
国科安芯2 小时前
AS32S601芯片抗辐照性能试验验证与空间环境适应性分析
前端·分布式·单片机·嵌入式硬件·架构·risc-v·安全性测试
phltxy3 小时前
RabbitMQ TTL与死信队列详解
分布式·rabbitmq·ruby
深蓝电商API3 小时前
反向海淘系统微服务拆分:从单体到分布式演进实战经验
分布式·微服务·架构·反向海淘
woniu_buhui_fei4 小时前
常用分布式中间件一览
分布式·中间件
爱吃苹果的梨叔4 小时前
KVM over IP选型与建设指南:分布式坐席系统、KVM切换器如何支撑指挥中心远程管控?
分布式·网络协议·tcp/ip
Devin~Y4 小时前
大厂 Java 面试实录:Spring Boot微服务/Kafka/Redis/K8s可观测性 + RAG Agent(小Y社死版)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer