• 七、Sleuth分布式链路请求跟踪


    SpringCloud Sleuth分布式链路请求跟踪

    概述

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

    问题

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

    是什么

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

    分布式系统中提供追踪解决方案并且兼容支持了zipkin(负责展现)

    https://docs.spring.io/spring-cloud-sleuth/docs/2.2.6.RELEASE/reference/html/

    https://zipkin.io/

    Dependency graph screenshot

    搭建链路监控步骤

    Spring Cloud Sleuth和OpenZipkin(也称为Zipkin)集成。Zipkin是一个分布式跟踪平台,可用于跟踪跨多个服务调用的事务。Zipkin允许开发人员以图形方式查看事务占用的时间量,并分解在调用中涉及的每个微服务所用的时间。在微服务架构中,Zipkin是识别性能问题的宝贵工具。

    建立Spring Cloud Sleuth和Zipkin涉及4项操作:

    • 将Spring Cloud Sleuth和Zipkin JAR文件添加到捕获跟踪数据的服务中;
      • 在每个服务中配置Spring属性以指向收集跟踪数据的Zipkin服务器;
      • 安装和配置Zipkin服务器以收集数据;
      • 定义每个客户端所使用的采样策略,便于向Zipkin发送跟踪信息。

    zipkin

    下载:https://github.com/openzipkin/zipkin

    curl -sSL https://zipkin.io/quickstart.sh | bash -s java -jar zipkin.jar

    服务提供者

    修改:cloud-provider-payment8001
    POM
    
    <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    YML
    server:
      port: 8001
    
    spring:
      application:
        name: cloud-payment-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          #采样率值介于0~1之间,1表示全部采样
          probability: 1
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/cloud2021?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root
        password: root
    
    mybatis:
      mapperLocations: classpath:/mapper/*.xml
      type-aliases-package: com.aqrlmy.springcloud.entities
    
    eureka:
      client:
        register-with-eureka: true
        fetchRegistry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    业务类PaymentController
    @GetMapping("/payment/zipkin")
    public String paymentZipkin(){
            return "hi ,i'am paymentzipkin server,welcome to aqrlmy,O(∩_∩)O哈哈~";
    }
    
    • 1
    • 2
    • 3
    • 4

    服务消费者(调用方)

    修改:cloud-consumer-order80
    POM
     
    <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    YML
    server:
      port: 80
    
    spring:
        application:
            name: cloud-order-service
        zipkin:
          base-url: http://localhost:9411
        sleuth:
          sampler:
            probability: 1
    
    eureka:
      client:
        register-with-eureka: true
        fetchRegistry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    业务类OrderController
     //==> zipkin+sleuth
    @GetMapping("/consumer/payment/zipkin")
    public String paymentZipkin(){
            String result = restTemplate.getForObject("http://CLOUD-PAYMENT-SERVICE"+"/payment/zipkin/", String.class);
            return result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    依次启动eureka7001/8001/80

    80调用8001几次测试下

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

    会出现以下界面

    查看

    点击【SHOW】按钮,查看依赖关系。

  • 相关阅读:
    conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题
    数据结构与算法初体验
    java毕业设计飞机订票管理系统Mybatis+系统+数据库+调试部署
    Qt插件系统
    Mybatis-Spring
    神经网络 设计层数和神经元数量的考虑
    Kubernetes存储机制认识
    计算机网络 第2章物理层 作业2
    mybatis-generator-maven-plugin使用
    小程序 VS 公众号、APP的区别在哪?
  • 原文地址:https://blog.csdn.net/LMY0210/article/details/128134493