zoukankan      html  css  js  c++  java
  • SpringCloud(八)Sleuth 分布式请求链路跟踪

    SpringCloud Sleuth 分布式请求链路跟踪

    概述

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

    Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin
    官方地址:https://spring.io/projects/spring-cloud-sleuth

    搭建链路监控

    zipkin

    SpringCloud F版后,不需要再创建Zipkin Server了,只需要调用 jar 包就行了
    下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

    运行 jar 包

    $ java -jar zipkin-server-2.12.9-exec.jar
    

    运行控制台
    地址:http://localhost:9411/zipkin/

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

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

    提供者

    1. 添加 pom 依赖
    <!-- spring-cloud-starter-zipkin -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    
    1. 修改 yml 配置
    spring:
      application:
        name: provider-payment-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          # 采样率值介于到1之间,1则表示全部采集
          probability: 1
    
    1. 业务类测试
    @RestController
    public class PaymentController {
    
        @GetMapping("/payment/zipkin")
        public String paymentZipkin(){
            return "链路测试";
        }
    }
    

    消费者

    1. 添加 pom 依赖
    <!-- spring-cloud-starter-zipkin -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    
    1. 修改 yml 配置
    spring:
      application:
        name: consumer-payment-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          # 采样率值介于到1之间,1则表示全部采集
          probability: 1
    
    1. 业务类测试
    @RestController
    @Slf4j
    public class OrderController {
    
        public final static String PAYMENT_URL = "http://PROVIDER-PAYMENT-SERVICE";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/consumer/payment/zipkin")
        public String paymentZipkin(){
            String result = restTemplate.getForObject(PAYMENT_URL + "/payment/zipkin",String.class);
            return result;
        }
    }
    

    打开 zipkin 监控台,就可以选择服务,进行查找

  • 相关阅读:
    1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
    数论笔记
    Codevs 1200 同余方程 2012年NOIP全国联赛提高组
    Codevs 1213 解的个数(exgcd)
    Qbxt 模拟赛&&day-8
    NOIP 模拟赛 那些年,我们学过的文化课 --致已退役的fqk神犇.
    OI路上 day -9
    P3178 [HAOI2015]树上操作
    P3979 遥远的国度
    P4092 [HEOI2016/TJOI2016]树
  • 原文地址:https://www.cnblogs.com/hewenhao-blogs/p/14839978.html
Copyright © 2011-2022 走看看