【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 ~

相关推荐
艾希逐月1 小时前
分布式唯一 ID 生成方案
分布式
朱皮皮呀1 小时前
Spring Cloud——服务注册与服务发现原理与实现
运维·spring cloud·eureka·服务发现·php
齐木卡卡西在敲代码5 小时前
kafka的pull的依据
分布式·kafka
lllsure5 小时前
RabbitMQ 基础
分布式·rabbitmq
DN金猿8 小时前
rabbitmq发送的延迟消息时间过长就立即消费了
分布式·rabbitmq
程序员不迷路11 小时前
Kafka学习
分布式·kafka
北i12 小时前
ZooKeeper 一致性模型解析:线性一致性与顺序一致性的平衡
分布式·zookeeper·云原生
朱皮皮呀12 小时前
微服务流量分发核心:Spring Cloud 负载均衡解析
spring cloud·微服务·负载均衡
IT技术小密圈12 小时前
图解分布式锁: 5分钟搞懂分布式锁
分布式·后端·面试
bing_15813 小时前
kafka 生产者是如何发送消息的?
分布式·kafka